Slide 1

Slide 1 text

(1) SSL/TLSͱ҉߸ٕज़ @ʰϓϩϑΣογϣφϧSSL/TLSʱಡ ॻձ Ryo Kajiwara (@s01), 5/12/2017

Slide 2

Slide 2 text

1.1 Transport Layer Security (p.1-2) TLSͷ4ͭͷ໨ඪ(্͔Βߴ༏ઌ): • ҉߸ֶతͳηΩϡϦςΟ(Cryptographic security) • ૬ޓӡ༻ੑ(Interoperability) • ֦ுੑ(Extensibility) • ޮ཰ੑ(Efficiency)

Slide 3

Slide 3 text

1.2 ωοτϫʔΫͷ֊૚ ͍ΘΏΔOSIࢀরϞσϧͷ࿩ɻTLS͸໊લͷ௨Γτϥϯεϙʔτ૚ (ୈ4૚ = TCP, UDP)ʹରͯ͠securityΛఏڙ͢ΔɻϓϨθϯςʔγϣ ϯ૚=ୈ6૚ʹҐஔ͢Δɻ TLS͕ͳͯ͘΋HTTP(=ୈ7૚)͸ʮػೳ͢Δʯɻ

Slide 4

Slide 4 text

1.3 ϓϩτίϧͷྺ࢙ • SSL2: 1994/11 • SSL 3.0: 1995ޙ൒ • TLS 1.0(RFC 2246): 1999/1 • ΄ͱΜͲSSL 3.0ͱࠩ͸ͳ͍͕ޓ׵ੑͳ͠ • TLS 1.1: 2006/4 (security fix, TLS֦ு(2003/6)) • TLS 1.2: 2008/4 (AEADରԠ) • TLS 1.3: ongoing

Slide 5

Slide 5 text

1.4 ҉߸ٕज़ Ͳͷ͘Β͍҉߸ٕज़ʹ਌͠Έ͕͋Δ͔ʹΑͬͯಡΈඈ͹͠·͢ɻ • ҉߸ֶͷ࿦จ͕ಡΊΔ/ॻ͚Δ: ৸ͯͯେৎ෉ • ʢͨͿΜ͜ͷؒͩͱࢥ͍·͢ʣ • ύεϫʔυͬͯ҉߸Խͯ͠อଘ͞ΕΔΜͩΑͶʁ: Ώͬ͘ΓಡΉ

Slide 6

Slide 6 text

1.4.1 ཁૉٕज़ (p.5) Kerckhoffsͷݪଇ ҉߸γεςϜ͸ɺ伴Ҏ֎ͷ͢΂͕ͯ߈ܸऀʹঠѲ͞Εͨͱͯ͠΋ ҆શͰͳ͚Ε͹ͳΒͳ͍ɻ • ҉߸ΞϧΰϦζϜ͕ఢରऀʹ࿙Εͯ΋҆શͰ͋Δඞཁ͕͋Δ • ༏Εͨ҉߸ΞϧΰϦζϜΛઃܭ͢Δͷ͸೉͍͠ɻͨ͘͞Μͷਓ ͷ໨ʹ৮Εͯਫ਼ࠪ͞Εͨ΋ͷ΄Ͳ҆શɻ ݱ୅ͷ҉߸͸ʮܭࢉྔత҆શੑʯʹͦͷࠜڌΛஔ͍͍ͯΔ

Slide 7

Slide 7 text

1.4.1 ཁૉٕज़ (p.7) ετϦʔϜ҉߸ 伴͔ΒϥϯμϜʹݟ͑ΔจࣈྻͰ͋Δ伴ετϦʔϜΛੜ੒͠ɺ ͱͯ͠҉߸จΛಘΔɻ ετϦʔϜ҉߸Ͱ͸ʮಉ͡伴Λ࢖͍·Θ͞ͳ͍͜ͱʯ͕ඇৗʹॏ ཁɻˠ௕ظؒʹΘͨͬͯར༻͢Δൿີ伴͔Βɺ௨৴ͷͨͼʹ1ճݶ Γͷ伴ʢηογϣϯ伴ʣΛಋग़ͯ͠࢖͏ɻ RC4͕༗໊͕ͩऑ఺͕஌ΒΕ͍ͯΔɻECRYPT Stream Cipher Project ʹ࠷৽ͷ΋ͷ͕͋ΔɻSalsa20/12΍SOSEMANUKͳͲɻ

Slide 8

Slide 8 text

1.4.1 ཁૉٕज़ (p.8) ϒϩοΫ҉߸ ϒϩοΫ୯ҐͰ·ͱΊͯ҉߸Խɻଟ͘ͷํࣜͰ16byte͝ͱɻೖྗ Λड͚ͱͬͯϥϯμϜʹݟ͑Δग़ྗΛฦؔ͢਺ɻ ϒϩοΫ҉߸͸೚ҙͷ௕͞ͷσʔλΛ҉߸Խ͢ΔͨΊ҉߸ར༻Ϟ ʔυͱ૊Έ߹ΘͤͰ࢖͏ɻ ੈքͰ࠷΋Α͘ར༻͞Ε͍ͯΔͷ͸AESɻ伴௕͕128bit/192bit/ 256bitɺϒϩοΫ௕͸128bitݻఆɻ

Slide 9

Slide 9 text

1.4.1 ཁૉٕज़ (p.9) ϋογϡؔ਺ • ݪ૾ܭࢉࠔ೉ੑ: ͋Δϋογϡ஋ʹର͠ɺಉ͡ϋογϡ஋ʹͳΔ ϝοηʔδΛݟ͚ͭΔ͜ͱ͕ࠔ೉Ͱ͋Δੑ࣭ • ୈ2ݪ૾ܭࢉࠔ೉ੑ(ऑিಥ଱ੑ): ͋Δϝοηʔδͱϋογϡ஋͔ Βɺಉ͡ϋογϡ஋ʹͳΔผͷϝοηʔδΛݟ͚ͭΔ͜ͱ͕ࠔ ೉Ͱ͋Δੑ࣭ • িಥ଱ੑ(ڧিಥ଱ੑ): ಉ͡ϋογϡ஋ʹͳΔϝοηʔδͷ૊Έ ߹ΘͤΛݟ͚ͭΔ͜ͱ͕ࠔ೉Ͱ͋Δੑ࣭

Slide 10

Slide 10 text

1.4.1 ཁૉٕज़ (p.9) SHA1(160bit)͕Α͘࢖ΘΕ͍ͯΔ͕SHA256΁ͷஔ͖׵͕͑ਪ঑͞ Ε͍ͯΔɻ ϋογϡؔ਺ͷڧ౓͸ݪཧతʹʮ஀ੜ೔ͷύϥυοΫεʯ͔ΒΑ ͯ͘ϋογϡ஋ͷ௕͞ͷ൒෼ɻn-bitͷϋογϡ͸2^(n/2)ճϋογ ϡ஋ܭࢉ͢Ε͹িಥΛߴ֬཰Ͱݟ͚ͭΒΕΔɻ

Slide 11

Slide 11 text

1.4.1 ཁૉٕज़ (p.10) MAC(Message Authentication Code) ͋Δ͍͸ 伴෇͖ϋογϡ(keyed- hash):ϋογϡؔ਺Λ֦ுͯ͠ೝূΛՄೳʹͨ͠΋ͷɻϋογϡ஋ ΛσʔλͱҰॹʹૹΔͱϋογϡ஋ͦͷ΋ͷ΋վ͟Μ͞Ε͏Δͷ Ͱͦͷରࡦʹ࢖͏ɻ

Slide 12

Slide 12 text

1.4.1 ཁૉٕज़ (p.10-11) ҉߸ར༻Ϟʔυ • ECB: ϒϩοΫ୯ҐͰݸผʹ҉߸Խɻ҉߸จʹฏจͷ৘ใ͕ݱΕ ͯ͠·͏ͨΊ੬ऑɻ࢖͏ཧ༝ͳ͠ɻ • CBC: લͷϒϩοΫͷ҉߸Խ݁ՌͷXORΛͱ͔ͬͯΒ҉߸Խɻ • ॳظԽϕΫτϧ(IV)ΛऔΔɻϥϯμϜͳ஋Λ࢖͏͜ͱͱɺ͜ͷ ஋Λ࢖͍·Θ͞ͳ͍͜ͱ͕ॏཁɻ • ଞ: CTRɺGCMɺOCBͳͲɻGCMͱOCB͸ೝূ͖ͭ҉߸Λఏڙɻ

Slide 13

Slide 13 text

No content

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

CTRϞʔυͷ৔߹ɺ҉߸Խ/෮߸Խ྆ํͰNonceͱcounterͷ҉߸Խ Λߦ͏ɻΑͬͯCTRϞʔυʹద༻͢Δؔ਺͸block cipherͰ͸ͳ͘ pseudo-random functionͰे෼ɻ

Slide 16

Slide 16 text

1.4.1 ཁૉٕज़ (p.11-12) ެ։伴҉߸ํࣜ ҉߸Խʹ࢖͏伴ͱ෮߸ʹ࢖͏伴͕ผɻ ެ։伴Λ҆શʹ޿͘ڞ༗Ͱ͖Ε͹ࣗ෼͚͕ͩಡΊΔϝοηʔδΛ શһ͔Βૹͬͯ΋Β͑ΔʢˠPKIɺୈ3ষʹͯʣɻ ެ։伴҉߸͸ܭࢉʹ͕͔͔࣌ؒΔͷͰɺڞ༗伴ͷωΰγΤʔγϣ ϯʹ࢖ΘΕɺͦͷޙ͸ڞ༗伴Λ࢖ͬͯରশ伴҉߸Λ࢖͏ɻ RSAɺElGamal(DH伴ަ׵Λެ։伴҉߸ʹద༻ͨ͠΋ͷ)

Slide 17

Slide 17 text

1.4.1 ཁૉٕज़ (p.13) ిࢠॺ໊ ిࢠϝοηʔδ΍จॻͷਅਖ਼ੑ(authenticity)ΛݕূՄೳʹ͢Δ҉߸ ֶతͳखஈɻ MAC΋ిࢠॺ໊ͷҰछ͕ͩMAC伴ͷڞ༗ͱ͍͏໰୊͕͋Δɻ RSAΛٯํ޲ʹద༻͢Δ͜ͱͰిࢠॺ໊ΞϧΰϦζϜͱͯ͠࢖͑ ΔɻҰํͰDSA/ECDSA͸҉߸ԽΞϧΰϦζϜͱͯ͠͸࢖͑ͳ͍ɻ

Slide 18

Slide 18 text

1.4.1 ཁૉٕज़ (p.13) ཚ਺ੜ੒ث ҉߸ʹ͸඼࣭ͷ͍͍ʢhigh entropyͳʣཚ਺͕ඞཁɻ ֎෦૷ஔͷׂΓࠐΈʹΑΔΤϯτϩϐʔͷऩू(=TRNG)Ͱ͸͍ͩͨ ͍ͷ৔߹े෼ͳΤϯτϩϐʔ͕ू·Βͳ͍ͷͰ࣮ࡍ͸ٙࣅཚ਺ੜ ੒ث(PRNG)Λ࢖͏ɻ҉߸ʹ༻͍Δ΋ͷʹ͸಺෦ঢ়ଶͷ༧ଌෆՄೳ ੑΛ࣋ͬͨCSPRNG͕ඞཁɻ

Slide 19

Slide 19 text

1.4.2 ϓϩτίϧ (p.14) ؆୯ͳ҉߸௨৴ϓϩτίϧͷྫΛ͍ࣔͯ͠Δɻ • ·ͱ·ͬͨσʔλͷ҉߸Խ͸AESͰ • վ͟Μʹରॲ͢ΔͨΊϝοηʔδʹMACΛ෇༩ • ϝοηʔδͷܽམ/ϦϓϨΠ߈ܸʹରॲ͢ΔͨΊ࿈൪Λ෇༩ • ձ࿩ͷऴྃΛࣔ͢ಛघͳϝοηʔδ • ձ࿩ʹઌཱͬͯެ։伴҉߸ํࣜͰޓ͍Λೝূ • 伴ަ׵ΞϧΰϦζϜͰ҉߸伴Λަ׵

Slide 20

Slide 20 text

1.4.2 ϓϩτίϧ (p.14) TLSʹ͓͍ͯ΋ 1. ೝূͱ伴ަ׵ΛؚΜͩϋϯυγΣΠΫ 2. ϋϯυγΣΠΫޙʹػີੑͱ׬શੑͷ͋Δঢ়ଶͰσʔλΛަ׵ 3. γϟοτμ΢ϯͷखॱͰऴྃ Λߦ͏ɻ

Slide 21

Slide 21 text

1.4.3 ҉߸ٕज़ʹର͢Δ߈ܸ (p.15) • ૯౰Γ߈ܸ • ࣮૷ʢόάʣʹର͢Δ߈ܸ: λΠϛϯά߈ܸͳͲ͕Α͘஌ΒΕΔ • αʔόʹ௚઀৵ೖͯ͠҉߸伴ΛऔΔ΄͏͕؆୯ͳ͜ͱ΋ ΄ͱΜͲͷ৔߹ɺʮϓϩτίϧΛࣗ෼Ͱઃܭ͠ͳ͍ʯʮ҉߸ॲཧ ͷίʔυΛࣗ෼Ͱ࣮૷͠ͳ͍ʯ΄͏͕҆શɻ

Slide 22

Slide 22 text

1.4.4 ҉߸ڧ౓ (p.16-17) ҉߸ͷڧ౓ = ҉߸ΞϧΰϦζϜΛഁΔͷʹඞཁͳૢ࡞ͷճ਺ɺ͜ ΕΛϏοτ҆શੑͱ͍͏ɻ ҉߸ԽํࣜʹΑͬͯϏοτ҆શੑͷॏΈ͕ҟͳΔͷͰɺଞͷํࣜ ͷͲͷϨϕϧͱ౳Ձ͔ɺͱ͍͏ม׵ද͕͋Δɻ 2012೥࣌఺Ͱʮ30೥ͷ߈ܸʹର͢Δอޢʯɿڞ௨伴҉߸Խʹ͓͚ Δ128Ϗοτ૬౰

Slide 23

Slide 23 text

1.4.4 ҉߸ڧ౓ (p.16-17) NIST SP800-57 Part1 Rev.3 ͷp.64ʹ͋Δ౳Ձ҆શੑͷද1 ڞ௨伴҉߸ RSA/DSA/DH ପԁۂઢ҉߸ ϋογϡ஋ 80 1024 160 160 112 2048 224 224 128 3072 256 256 256 15360 512 512 1 ୯Ґ͸ͦΕͧΕbit

Slide 24

Slide 24 text

1.4.5 MITM߈ܸ (p.17-21) ΞΫηεͷୣऔ • ARP spoofing: MACΞυϨεͱIPΞυϨεͷؔ࿈෇͚Λ࠮শ͢Δ ͜ͱͰϩʔΧϧωοτϫʔΫʹ͓͚Δܦ࿏৘ใΛ࠮শ͢Δ • WPAD(Web Proxy Auto-Discovery) hijacking: ِͷϓϩΩγʹ༠ಋ • DNS hijacking, DNS cache poisoning: ِͷDNS৘ใΛ༩͑Δ͜ͱͰ υϝΠϯʹ޲͔͏τϥϑΟοΫΛ৐ͬऔΔɻ • BGP route hijacking: Πϯλʔωοτ্ͷϧʔλ͕ෆਖ਼ͳܦ࿏Λ ࢦఆ͢Δ͜ͱͰ௨৴͕߈ܸऀͷͱ͜ΖΛ௨Δ

Slide 25

Slide 25 text

1.4.5 MITM߈ܸ (p.17-21) डಈత߈ܸ • ҉߸Խ͞Ε͍ͯͳ͍τϥϑΟοΫΛܧଓతʹϞχλϦϯά • ҉߸Խ͞ΕͨτϥϑΟοΫͰ΋௕ظؒอଘͯ͠҉߸͕ഁΒΕΔ ͷΛ଴ͯ͹Α͍ • Perfect Forward Secrecy2ͷॏཁੑɻಉ͡伴Λ࢖ͬͯաڈʹ͞ ͔ͷ΅ͬͯ௨৴͕෮ݩͰ͖ΔͱϚζ͍ɻ 2 Perfect Forward SecrecyͱForward Secrecy͸ಉٛɻ

Slide 26

Slide 26 text

1.4.5 MITM߈ܸ (p.17-21) ೳಈతͳ߈ܸ ैདྷͷMITM߈ܸ: Mallory͕ʮBobͱ࿩͍ͯ͠Δ͔ͷΑ͏ʹAliceʹࢥ ͍ࠐ·ͤΔʯʹೝূΛλʔήοτʹͨ͠΋ͷɻ ௨ৗͷDH伴ަ׵Ͱ͸ೝূ͕ఏڙ͞Εͳ͍ͷͰ͜Ε͕Մೳɻ

Slide 27

Slide 27 text

1.4.5 MITM߈ܸ (p.17-21) ೳಈతͳ߈ܸ TLSͷ৔߹ɺAlice͕༗ޮͳ΋ͷͱͯ͠ड͚औΔΑ͏ͳূ໌ॻΛ Mallory͕ఏࣔ͢Δ͜ͱ͕ཧ૝తͳ߈ܸɻ αʔϏεΛὃͯ͠ূ໌ॻΛೖख͢Δํ๏͸4ষɺ༗ޮʹݟ͑Δূ໌ ॻΛߏ੒͢Δ߈ܸ͸6ষʹͯɻܯࠂΛແࢹ͢Δ͜ͱΛظ଴ͯ͠ෆਖ਼ ͳূ໌ॻΛఏࣔ͢Δ͜ͱ΋ɻϒϥ΢βʹ҉߸ԽΛແޮԽ͢ΔΑ͏ ͳϦΫΤετΛૹ৴͢Δ߈ܸ΋ɻ7ষʹͯɻ ίετ͕ߴ͍ͨΊେن໛ʹ͸ߦΘͣಛఆͷର৅ʹରͯ͠ߦ͏ɻ

Slide 28

Slide 28 text

No content

Slide 29

Slide 29 text

ิ଍ ຊʹ͸ࡌͬͯͳ͍͚Ͳؔ࿈͢Δ࿩·ͱΊɻ 1. ετϦʔϜ҉߸ͱOne-Time Pad 2. িಥ଱ੑʹؔ͢Δ༻ޠʹ͍ͭͯ 3. HMACͷఆٛ 4. DH伴ަ׵ʹ͓͚Δதؒऀ߈ܸ

Slide 30

Slide 30 text

ετϦʔϜ҉߸ͱOne-Time Pad One-Time Pad(Vernam҉߸)Ͱ͸ฏจͱಉ͡௕͞ͷཚ਺ྻΛ伴ͱ͠ ͯ ͷΑ͏ʹ҉߸จΛಘΔɻOne-Time Pad ͸ฏจͷ৘ใΛҰ੾҉߸จʹ࢒͞ͳ͍৘ใྔతʹperfectly secret ͳ҉߸͕ͩݱ࣮తͰͳ͍ͷͰɺݱ࣮ʹ͸୹͍伴͔Β伴ετϦʔϜ Λੜ੒͢Δɻ

Slide 31

Slide 31 text

িಥ଱ੑʹؔ͢Δ༻ޠʹ͍ͭͯ SHA1͸SHAtteredͰڧিಥ଱ੑʢʹ1ͭͷিಥ͢ΔϖΞΛ࡞Γग़͢ ͜ͱʣ͸ಥഁ͞Ε͕ͨɺऑিಥ଱ੑʢʹ͋Δจࣈྻʹର͢Δϋο γϡ஋ͱಉ͡ϋογϡ஋Λ༩͑ΔผͷจࣈྻΛࣔ͢ʣ͸·ͩಥഁ ͞Ε͍ͯͳ͍ͷͰɺ͜Ε͚ͩͰ΋ͬͯʮύεϫʔυϋογϡͱͯ͠ ෆద֨ʯͱ͍͏ͷ͸΢ιɻ΋ͬͱ΋ɺଞͷબ୒ࢶ͕΋ͬͱ༏लͳ ͷͰSHA256΍bcryptΛ࢖͍·͠ΐ͏ɻ

Slide 32

Slide 32 text

HMACͷఆٛ ϋογϡؔ਺Hͱ伴KΛ࢖ͬͯɺ ipad = Kͷ௕͞෼ͷ0x36 opad = Kͷ௕͞෼ͷ0x5c ʢ || ͸࿈݁Λද͢ɻͳͷͰɺ ͱtextΛ͚ͬͭͨ͘΋ͷͷϋ ογϡ஋Λɺ ͷޙΖʹ͚ͬͭͯ͘ɺͦͷϋογϡΛऔ Δɺͱ͍͏͜ͱʣ

Slide 33

Slide 33 text

DH伴ަ׵ʹ͓͚Δதؒऀ߈ܸ (ECͰͳ͍)DH伴ަ׵: • ެ։ͷ஋ • p ͸஋ͷେ͖ͳૉ਺ • g ͸ ͷੜ੒ݩ • ൿີͷ஋: • ૬खʹૹΒΕΔ஋:

Slide 34

Slide 34 text

No content

Slide 35

Slide 35 text

No content

Slide 36

Slide 36 text

DH伴ަ׵ʹ͓͚Δதؒऀ߈ܸ தؒऀEve͕ ͷ஋Λड͚औΓɺ ͱಉ༷ͷੑ࣭Λ࣋ͭ Λੜ੒͠ɺҎԼͷ஋Λ૬खʹ୅ΘΓʹ౉͢:

Slide 37

Slide 37 text

DH伴ަ׵ʹ͓͚Δதؒऀ߈ܸ ͦ͏͢ΔͱAliceͱBob͸ҎԼͷ஋Λܭࢉ͢Δ: ͜ͷͱ͖ɺAliceͱEveɺEveͱBobͷؒʹڞ௨伴ͷਃ͠߹Θ͕ͤ੒ཱ ͢Δʢલऀ͸ ɺޙऀ͸ ʣɻ