Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
第2章プロトコル
Search
shuya
February 26, 2018
Programming
0
80
第2章プロトコル
研究室で行った輪読のスライドです
プロフェッショナル SSL/TLS 第2章プロトコル
shuya
February 26, 2018
Tweet
Share
More Decks by shuya
See All by shuya
トイルを撲滅!インフラ領域での生成AI活用のススメ
shuya
1
560
Doubles [NRI Hackathon 2018]
shuya
1
190
Other Decks in Programming
See All in Programming
CI_CD「健康診断」のススメ。現場でのボトルネック特定から、健康診断を通じた組織的な改善手法
teamlab
PRO
0
160
あなたの知らない「動画広告」の世界 - iOSDC Japan 2025
ukitaka
0
340
Advance Your Career with Open Source
ivargrimstad
0
260
Django Ninja による API 開発効率化とリプレースの実践
kashewnuts
0
870
Playwrightはどのようにクロスブラウザをサポートしているのか
yotahada3
7
2.2k
dynamic!
moro
9
5.5k
プログラマのための作曲入門
cheebow
0
520
そのpreloadは必要?見過ごされたpreloadが技術的負債として爆発した日
mugitti9
2
2.8k
iOSDC.pdf
chronos2500
2
650
XP, Testing and ninja testing ZOZ5
m_seki
2
230
Go Conference 2025: Goで体感するMultipath TCP ― Go 1.24 時代の MPTCP Listener を理解する
takehaya
7
1.5k
Pull-Requestの内容を1クリックで動作確認可能にするワークフロー
natmark
1
420
Featured
See All Featured
Music & Morning Musume
bryan
46
6.8k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
285
14k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.2k
What's in a price? How to price your products and services
michaelherold
246
12k
Stop Working from a Prison Cell
hatefulcrawdad
271
21k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
950
Git: the NoSQL Database
bkeepers
PRO
431
66k
Rails Girls Zürich Keynote
gr2m
95
14k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
How GitHub (no longer) Works
holman
315
140k
The World Runs on Bad Software
bkeepers
PRO
71
11k
Transcript
ୈ̎ষɹϓϩτίϧ ɹ݄ ϓϩϑΣογϣφϧ44-5-4ྠಡձ Shuya OSAKI (@4huya) Keio University
3FDPSEϓϩτίϧ ֊Խ͞Εͨ5-4ϓϩτίϧ 2 ɾ5-43FDPSEϓϩτίϧɹɹɹ҉߸ԽͷॲཧΛ୲͏ ɾ5-4)BOETIBLFϓϩτίϧ҉߸ԽҎ֎ͷॲཧΛ୲͏ɾ̐ͭʹࡉԽ͞ΕΔ )551 5-43FDPSEϓϩτίϧ )BOETIBLF ϓϩτίϧ $IBOHF$JQIFS4QFD
ϓϩτίϧ "MFSU ϓϩτίϧ "QQMJDBUJPO%BUB ϓϩτίϧ 5-4)BOETIBLFϓϩτίϧ 5-4ϓϩτίϧ
3FDPSEϓϩτίϧ 3 https://hpbn.co/transport-layer-security-tls/ 3FDPSEϓϩτίϧͷׂ ɾ ϝοηʔδͷసૹ ‣ Ϩίʔυʹ߹Θͤͯϑϥάϝϯτʹͨ͠ΓɺෳͷόοϑΝΛ୯ҰϨίʔυʹ·ͱΊΔ ɾ ҉߸Խ͓Αͼશੑͷݕূ
‣ ωΰγΤʔγϣϯͨ͠ύϥϝʔλʹج͍ͮͨɺϨίʔυʹΑΔ҉߸Խɾશੑͷݕূ ɾ ѹॖ ‣ ඇਪɻ$*3*.&߈ܸ ηογϣϯϋΠδϟοΫ ɺѹॖ͞Εͨίϯςϯπ ը૾ ͷ࠶ѹॖ͕ى͖Δɻ ɾ ֦ுੑ ‣ 3FDPSEϓϩτίϧσʔλసૹͱ҉߸ॲཧΛ୲͏ɻଞͷػೳαϒϓϩτίϧͰ֦ு͢Δɻ 5-43FDPSEͷߏ
)BOETIBLFϓϩτίϧ 4 )BOETIBLFϓϩτίϧͷׂ ɾ 5-4)BOETIBLFϓϩτίϧͷ̍ͭ 5-4)BOETIBLF)BOETIBLF ɾ ڞ༗伴Λੜ͠ɺূ໌ॻͷަΛߦ͏ ‣
ڞ༗伴ͷੜɹɹ҉߸௨৴Λߦ͏ͨΊ ‣ ূ໌ॻͷަɹɹ૬खΛೝূ͢ΔͨΊ ɾ )BOETIBLFͷҰൠతͳྲྀΕ ᶃαʔόೝূΛ͏ϑϧϋϯυγΣΠΫ ᶄηογϣϯΛ࠶։͢Δ߹ͷɺҰ෦ϝοηʔδΛলུͨ͠ϋϯυγΣΠΫ ᶅΫϥΠΞϯτͱαʔόͷೝূΛ͏ϋϯυγΣΠΫ )BOETIBLFϓϩτίϧ NTH@UZQF MFOHUI )BOETIBLF σʔλ όΠτ NTH@UZQF )BOETIBLFσʔλ Y )FMMP3FRVFTU Y $MJFOU)FMMP Y 4FSWFS)FMMP YC $FSUJpDBUF YD 4FSWFS,FZ&YDIBOHF YE $FSUJpDBUF3FRVFTU YF 4FSFWFS)FMMP%POF YG $FSUJpDBUF7FSJGZ Y $MJFOU,FZ&YDIBOHF Y 'JOJTIFE
ϑϧϋϯυγΣΠΫ 5 5-4ηογϣϯͷཱ֬ 2.2 Handshake Ϋϥ Π Ξϯ τ αʔό
$MJFOU)FMMP 4FSWFS)FMMP $FSUJpDBUF 4FSWFS)FMMP%POF $MJFOU,FZ&YDIBOHF <$IBOHF$JQIFS4QFD> 'JOJTIFE 4FSWFS,FZ&YDIBOHF <$IBOHF$JQIFS4QFD> 'JOJTIFE p.27ΑΓ αʔόೝূΛ͏ϑϧϋϯυγΣΠΫ 5$1ϋϯυγΣΠΫ #FGPSF ⁞ΫϥΠΞϯτ͕৽نͷϋϯυγΣΠΫ ɹΛ։࢝ɺฏจͰಈ࡞༷Λૹ৴ ಈ࡞༷ʹैͬͯ҉߸Խʹඞཁͳ ɹύϥϝʔλΛϨεϙϯε͢Δ ҉߸Խʹඞཁͳ͕݅߹ҙ͞ΕͨΒ ηογϣϯʹඞཁͳڞ௨伴Λੜ͢Δ ҉߸௨৴ʹΓସ͑."$Λૹ৴͢Δ "GUFS ΞϓϦέʔγϣϯσʔλͷૹड৴ 355
ϑϧϋϯυγΣΠΫ 6 $MJFOU)FMMP ɾ৽نͷϋϯυγΣΠΫͰ࠷ॳʹૹ৴͞ΕΔϝοηʔδ ɾΫϥΠΞϯτ͜ΕͰಈ࡞༷Λαʔόʹ͑Δ 28 ୈ2ষ ϓϩτίϧ Լهʹ ClientHello
ͷϝοηʔδྫΛࣔ͠·͢ɻݟ͍͢Α͏ʹ༨ͳใऔΓআ͍ͯ ͋Γ·͕͢ɺॏཁͳϙΠϯτؚͯ͢·Ε͍ͯ·͢ɻ Handshake protocol: ClientHello Version: TLS 1.2 Random Client time: May 22, 2030 02:43:46 GMT Random bytes: b76b0e61829557eb4c611adfd2d36eb232dc1332fe29802e321ee871 Session ID: (ۭ) Cipher Suites Suite: TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 Suite: TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 Suite: TLS_RSA_WITH_AES_128_GCM_SHA256 Suite: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA Suite: TLS_DHE_RSA_WITH_AES_128_CBC_SHA Suite: TLS_RSA_WITH_AES_128_CBC_SHA Suite: TLS_RSA_WITH_3DES_EDE_CBC_SHA Suite: TLS_RSA_WITH_RC4_128_SHA Compression methods Method: null Extensions Extension: server_name Hostname: www.feistyduck.com Extension: renegotiation_info Extension: elliptic_curves Named curve: secp256r1 Named curve: secp384r1 Extension: signature_algorithms Algorithm: sha1/rsa Algorithm: sha256/rsa Algorithm: sha1/ecdsa Algorithm: sha256/ecdsa p.28ΑΓ w 7FSTJPO ‣ αϙʔτ͢Δ5-4ͷόʔδϣϯ w 3BOEPN ‣ ϋϯυγΣΠΫΛҰҙʹ͢Δཚ w 4FTTJPO*% ‣ ࠷ॳͷଓͰ৽نଓΛۭࣔ͢ w $JQIFS4VJUF ‣ ରԠՄೳͳ҉߸εΠʔτ w $PNQSFTTJPONFUIPET ‣ ѹॖํࣜͷࢦఆɺઈରOVMM w &YUFOTJPOT ‣ ֦ுใͷεϖʔε ClientHello ϝοηʔδྫ
ϑϧϋϯυγΣΠΫ 7 4FSWFS)FMMP ɾαʔό͕ଓͰ͏ύϥϝʔλΛΫϥΠΞϯτʹฦ͢Δɻ ɾߏ$MJFOU)FMMPͱಉ͡ɺαʔό͕ΫϥΠΞϯτʹఏҊ͢Δͷ͕ೖΔɻ $FSUJpDBUF ɾαʔό͔ΒΫϥΠΞϯτ9ূ໌ॻνΣʔϯΛҾ͖͢ɻ ɾূ໌ॻνΣʔϯʹαʔόͷূ໌ॻ͔Βূ໌ॻʹॺ໊͢Δೝূہͷূ໌ॻ͕࿈ͳΔɻ 4FSWFS,FZ&YDIBOHF ɾ伴ަʹඞཁͳՃతͳσʔλΛૹΔɻ$FUJpDBUFͷิɻ
4FSWFS)FMMP%POF ɾ4FSWFS)FMMP͔ΒͷҰ࿈ͷϝοηʔδͷऴΘΓΛࣔ͢ɻ
ϑϧϋϯυγΣΠΫ 8 $MJFOU,FZ&YDIBOHF ɾ伴ަʹඞཁͳใΛΫϥΠΞϯτ͔Βૹ৴ ɾ&YϓϨϚελʔγʔΫϨοτ 34" ɺ%J⒏F)FMMNBOެ։ %)伴ަ $IBOHF$JQIFS4QFD ɾ)BOETIBLFϝοηʔδͰͳ͘ɺ5-4)BOETIBLFͷαϒϓϩτίϧ
ɾ)BOETIBLFϓϩτίϧͰܾఆͨ͠ಈ࡞༷ΛΫϥΠΞϯτʹ௨ 'JOJTIFE ɾϋϯυγΣΠΫͷྃΛࣔ͠ɺ҉߸Խ͞ΕͨϝοηʔδͰ͋Δ ɾWFSJGZ@EBUBϑΟʔϧυͰμΠδΣετΛͱΓɺվ͟ΜΛ͘͢͠Δ
ΫϥΠΞϯτೝূ 9 ૬ޓೝূΛߦ͏ p.32ΑΓ ΫϥΠΞϯτೝূͷ߹ͷϑϧϋϯυγΣΠΫ 355 ͠ɺࣗͷ Certificate ϝοηʔδΛૹΓʢ͜ͷͱ͖ͷϑΥʔϚοταʔ ૹΔͷʹ͏
Certificate ϝοηʔδͱಉ͡Ͱ͢ʣ ɺରԠ͢ΔൿີݤΛ࣋ͬ CertificateVerify ϝοηʔδΛͬͯূ໌͠·͢ʢਤ2.3ʣ ɻ Ϋϥ Π Ξϯ τ αʔό $MJFOU)FMMP 4FSWFS)FMMP $FSUJpDBUF 4FSWFS)FMMP%POF $MJFOU,FZ&YDIBOHF <$IBOHF$JQIFS4QFD> $FSUJpDBUF 4FSWFS,FZ&YDIBOHF <$IBOHF$JQIFS4QFD> 'JOJTIFE $FSUJpDBUF3FRVFTU 'JOJTIFE $FSUJpDBUF7FSJGZ ɾαʔό͕ΫϥΠΞϯτʹೝূΛٻΊΔ ɾ$FSUJpDBUF3FRVFTUϝοηʔδͰ ҎԼʹै͏ূ໌ॻΛཁٻ͢Δ ‣ αʔό͕ཧղͰ͖Δূ໌ॻͷλΠϓ ‣ αʔό͕ཧղͰ͖Δೝূہͷ໊લ ɾΫϥΠΞϯτ$FSUJpDBUFϝοηʔδ ͰԠ͢Δ ɾ$FSUJpDBUF7FSJGZϝοηʔδͰରԠ͢Δ ൿີ伴ͷॴ༗Λࣔ͢
ϑϧϋϯυγΣΠΫ 10 $FSUJpDBUF3FRVFTU ɾΫϥΠΞϯτʹରͯ͠ೝূͷཁٻΛߦ͏ ɾαʔό͕ରͱ͢Δূ໌ॻͷެ։伴͓Αͼॺ໊ΞϧΰϦζϜͷୡʹ༻͍ΒΕΔ $FSUJpDBUF7FSJGZ ɾΫϥΠΞϯτূ໌ॻͷൿີ伴ͷอ༗Λࣔ͢
ηογϣϯϦβϯϓγϣϯ 11 ཱ֬ࡁΈͷηογϣϯͷ࠶։ ɾϑϧϋϯυγΣΠΫʹΦʔόʔϔου͕͏ ɾ4FTTJPO*%Λ༻͍ͯηογϣϯͷ࠶։ΛՄೳʹ͢ΔΈ Session ID ϑΟʔϧυΛࢀরʣ ɻΫϥΠΞϯτͱαʔόɺશͳωΰγΤʔγ ཱ֬ͨ͠ଓ͕ऴྃͨ͋͠ͱɺ͜ͷSession
ID ΛҰఆظؒอ࣋͠·͢ɻ ΫϥΠΞϯτɺҎલͷηογϣϯΛ࠶։͠Α͏ͱ͢Δ߹ɺClientHell దͳ Session ID ΛؚΊͯૹ৴͠·͢ɻαʔόɺ֘ͷηογϣϯΛ࠶։͢ ߹ɺಉ͡Session ID ΛServerHello ϝοηʔδʹؚΊͯૹΓฦ͠·͢ɻͦ͠ ͨ͠ϚελʔγʔΫϨοτΛͬͯ৽͍͠҉߸ݤʢ҉߸Խʹ͏ݤMACݤͳ ҉߸௨৴ͱҠߦ͔ͯ͠ΒɺFinished ϝοηʔδΛૹΓ·͢ɻΫϥΠΞϯτ ͕࠶։͞Εͨ͜ͱΛ֬ೝͨ͠Βɺαʔόͱಉ͜͡ͱΛ͠·͢ɻ݁Ռతʹϋϯυγ ͳΓɺωοτϫʔΫ্ͷΓऔΓ͕Ұԟ෮͚ͩͰࡁΈ·͢ʢਤ2.4ʣ ɻ Ϋϥ Π Ξϯ τ αʔό $MJFOU)FMMP 4FSWFS)FMMP <$IBOHF$JQIFS4QFD> 'JOJTIFE <$IBOHF$JQIFS4QFD> 'JOJTIFE $IBOHF$JQIFS4QFDϓϩ τ ίϧͷϝ ο ηʔ δ <> p.33ΑΓ লུ͞Εͨ5-4ϋϯυγΣΠΫ ɾ αʔόηογϣϯʹ4FTTJPO*%Λ ׂΓͯΔ ɾ 4FTTJPO*%4FSWFS)FMMPͰૹ৴͢Δ ɾ ηογϣϯΛ࠶։࣌ΫϥΠΞϯτ͕ $MJFOU)FMMPʹҎલͷ4FTTJPO*%Λૠೖ ɾ ηογϣϯνέοτͱݺΕΔํ๏͋Δ 355
伴ަ 12 5-4Ͱ༻͍ΒΕΔ伴ަΞϧΰϦζϜ ɾ 5-4Ͱଟ͘ͷ伴ަΞϧΰϦζϜΛαϙʔτ͢Δ ɾ Ͳͷ҉߸εΠʔτ͕ΘΕΔ͔ωΰγΤʔγϣϯʹΑΓܾ·Δ ओͳ伴ަΞϧΰϦζϜ ɾ 34"
‣ σϑΝΫτελϯμʔυɻαʔόͷൿີ伴Λ༻͍ΔͨΊɺ1'4 1FSGFDU'PSXBSE4FDSFZ Ͱͳ͍ɻ ɾ %)&@34" ‣ ΫϥΠΞϯτɾαʔόͷ྆ऀͰڞ௨ͷ伴Λੜ͢Δɻ34"ʹΑΔೝূΛซ༻͢Δɻ1'4͕͋Δɻ ɾ &$%)&@34"ɾ&$%)&@&$%4" ‣ ପԁۂઢ҉߸ &$ ʹجͮ͘伴ަΞϧΰϦζϜɻ ‣ ֓೦తʹ%)&ͱಉ͡伴ಉҙΞϧΰϦζϜ͕ͩɺॲཧ͕ߴɻ
34"伴ަ 13 34"ͷ҉߸Խɾ෮߸ʹར༻Մೳͳੑ࣭Λ༻͍Δ 34"伴ަͷखॱ ‣ ΫϥΠΞϯτϓϦϚελʔγʔΫϨοτΛੜ όΠτͷཚ ‣ ͦΕΛαʔόͷެ։伴Ͱॺ໊͠ɺ$MJFOU&YDIBOHFϝοηʔδͰૹ৴
‣ αʔόϝοηʔδͷϓϦϚελʔγʔΫϨοτΛαʔόͷൿີ伴Ͱ෮߸͠ೖख ɾ ൿີ伴͕ೖख͞ΕΔͱɺ߈ܸऀϓϦϚελʔγʔΫϨοτΛੜͰ͖Δ ɾ ཁτϥϑΟοΫΛஷΊ͓͚ͯ5-4௨৴Ͱ伴ׂ͕ΕͨॠؒʹղಡͰ͖Δ ɾ /4"աڈͷτϥϑΟοΫΛ5-4ͷ··อ͍ͯ͠Δͱ·͜ͱ͔͠ʹ͔͞͞ΕΔʜ ɾ ͔ͩΒࠓͰ1'4 લํൿಗੑ ͕͋Δଞͷ伴ަΞϧΰϦζϜ͕ਪ͞ΕΔ ‣ 34"ͷΑ͏ʹ伴͕࿙Εͯɺηογϣϯͷ෮߸͕Ͱ͖ͳ͍͜ͱ
%J⒏F)FMMNBO伴ަ 14 ڞ༗͢Δ伴ΛܭࢉʹΑͬͯಋग़ ɾ %)伴ަͷखॱ ‣ লུʂ ͳΜͱͳ͔͔͘͠ΒΜʜ ‣
҉߸ٕज़ೖͷQΛಡΜͰ͘Ε %)伴ަͷ ɾ %)ύϥϝʔλͷηΩϡϦςΟ ‣ ύϥϝʔλͷڧ͞ʹηογϣϯͷ҆શੑ͕ࠨӈ͞ΕΔ ɾ %)ύϥϝʔλͷωΰγΤʔγϣϯ ‣ ωΰγΤʔγϣϯͷ݁ՌʹΑͬͯɺظ͢Δڧͷύϥϝʔλ͕༻Ͱ͖ͳ͍ ɾ ෆेͳύϥϝʔλͷڧ ‣ -PHKBN߈ܸʹΑΓύϥϝʔλʹ͋Δఔͷڧ͕ඞཁͰ͋Δ͜ͱ͕ࣔ͞Εͨ
ପԁۂઢ%J⒏F)FMMNBO伴ަ 15 ପԁۂઢ্ͷࢄର ɾ %)伴ަͷखॱ ‣ লུʂ ͬͪ͜ϚδͰ͔ΒΜʜ ‣
҉߸ٕज़ೖͷQΛಡΜͰ͘Ε ɾ &$%)&ͷํ͕͍伴͔ͭߴ͍ηΩϡϦςΟ͕࣮ݱͰ͖Δ ‣ ύϥϝʔλͷڧ͞ʹηογϣϯͷ҆શੑ͕ࠨӈ͞ΕΔ
ೝূ 16 ೝূͱ伴ަҰମ ɾ 5-4ͰίετΛݮ͢ΔͨΊɺೝূͱ伴ަҰମͰߦΘΕΔ ɾ ೝূূ໌ॻΛར༻ͨ͠ެ։伴҉߸ํ͕ࣜҰൠ ɾ 34"ʹΑΔ伴ަ ‣
ΫϥΠΞϯτ͕ϥϯμϜͳΛϓϦϚελʔγʔΫϨοτͯ͠ੜ ‣ ͦΕΛαʔόͷެ։伴Ͱॺ໊͠ૹ৴ ɾ %)&͓Αͼ&$%)&ʹΑΔ伴ަ ‣ αʔόύϥϝʔλʹॺ໊Λߦ͏ ‣ ΫϥΠΞϯτݕূ͞Εͨূ໌ॻ͔ΒରԠ͢Δެ։伴Λऔಘ ‣ ެ։伴Λ༻͍ͯॺ໊͞ΕͨύϥϝʔλΛݕূ͢Δ ‣ ύϥϝʔληογϣϯ͝ͱʹҰҙ͕ͩɺಛఆͷঢ়گԼͰ߈ܸऀ͕ϥϯμϜͳΛಉظͤͯ͞αʔόͷ ॺ໊Λ࠶ར༻͢Δ-PHKBN߈ܸ͕͋Δ
҉߸Խ 17 ଟͷ҉߸ΞϧΰϦζϜΛαϙʔτ͢Δ5-4 ɾ 5-4Ͱ༷ʑͳΞϧΰϦζϜΛ༻͍ͯɺΞϓϦέʔγϣϯσʔλΛ҉߸ԽͰ͖Δ ‣ ݱࡏɺ࠷Ұൠతͳͷ"&4 3JKOEBFM ɾ
5-4Ͱར༻Ͱ͖Δ҉߸ԽछྨʹྨͰ͖Δ ‣ ετϦʔϜ҉߸Խํࣜ ‣ ϒϩοΫ҉߸Խํࣜ ‣ "&"% ೝূ͖҉߸
ετϦʔϜ҉߸Խํࣜ 18 ҉߸Խஈ֊ͰߦΘΕΔ ɾ Ϩίʔυͷγʔέϯε൪߸ɾ3FDPSEϔομɾฏจσʔλͷ݁߹ͷ."$ΛͱΔ ‣ ."$ͷܭࢉʹ3FDPSEϔομؚ͕·Ε͍ͯΔͨΊɺσʔλ͕վ͟Μ͞Ε͍ͯͳ͍͜ͱΛࣔͤΔ ‣ ."$ͷܭࢉʹγʔέϯε൪߸ؚ͕·Ε͍ͯΔͨΊɺਖ਼͍͠ύέοτ ϦϓϨΠ߈ܸͰͳ͍
Ͱ͋Δ ɾ ."$ͱฏจσʔλͱΛ҉߸Խ͢Δ 2.5 ҉߸Խ 41 ҉߸จ ೝূ ."$ ҉߸Խ ϔο μ γʔέϯε൪߸ ϔο μ ฏจ ฏจ ετϦʔϜ҉߸Խํࣜ p.41ΑΓ
ϒϩοΫ҉߸Խํࣜ 19 42 ୈ2ষ ϓϩτίϧ ฏจ ೝূ ."$ ҉߸Խ ϔο
μ γʔέϯε൪߸ ϔο μ ฏจ ฏจ ύσ Ο ϯ ά *7 ਤ 2.6 ϒϩοΫ҉߸Խํࣜ NOTE CBC ϞʔυɺύσΟϯάɺ͓ΑͼIV ʹ͍ͭͯ1.4.1 અΛࢀর͍ͯͩ͘͠͞ɻ ϒϩοΫ҉߸Խํࣜ ҉߸ԽલͷϒϩοΫ ͷഒʹͳΔΑ͏ʹ ҉߸ԽϒϩοΫͱ ಉ͡͞ $#$ϞʔυͰ҉߸Խ ͞Ε*7ͱόΠϯυ ɾ ͜ͷաఔ."$UIFOFODSZQUͱݺΕΔ ‣ ."$ͷಋग़ʹύσΟϯάΛؚΊͯͳ͍ͨΊɺύσΟϯάΦϥΫϧ߈ܸͷةݥੑ ɾ &ODSZQUUIFO."$ͱݺΕΔ5-4֦ுͷొ ‣ ฏจσʔλͱύσΟϯάΛ࠷ॳʹ҉߸Խ͢ΔͷͰೳಈత߈ܸ͕͍͠ p.42ΑΓ ❶ ❷ ❸ ҉߸จ
ϒϩοΫ҉߸Խํࣜ 20 "&"% ೝূ͖҉߸ ɾ ҉߸Խͱಉ࣌ʹೝূߦ͏ ɾ ҉߸จࣗମʹೝূจؚ͕·ΕΔ ɾ φϯεͱݺΕΔҰҙͷཚΛ҉߸จͱͱʹૹΔ
p.43ΑΓ Ճతͳσʔλͱͯ͠ɺγʔέϯε൪߸ͱRecord ϔομ҉߸ԽΞϧΰϦζϜʹ͢ 3. φϯεͱ҉߸จΛҰॹʹૹΔ ҉߸Խ ϔο μ γʔέϯε൪߸ ϔο μ ฏจ φϯε ҉߸จ ೝূ ਤ 2.7 AEADʢೝূ͖҉߸ʣ AEAD MAC-then-Encrypt ʹ·ͭΘΔΛճආͰ͖ΔͷͰɺݱࡏͷͱ͜Ζ TLS Ͱར༻Ͱ ͖Δ࠷ྑͷ҉߸Խར༻Ϟʔυͩͱ͍͑·͢ɻݱࡏͷ TLS Ͱɺೝূํࣜͷબࢶͱͯ͠ GCM
࠶ωΰγΤʔγϣϯ 21 ৽͍͠ଓͱͯ͠ϋϯυγΣΠΫΛΓ͢ ɾ 5-4Ͱഇࢭ͞ΕΔ༧ఆɻ ɾ ηΩϡΞ͡Όͳ͍ɺ੬ऑੑΛ๊͑Δ ɾ ΫϥΠΞϯτ$MJFOU)FMMPɺαʔό)FMMP3FRVFTU͕࠶ωΰγΤʔγϣϯͷ߹ਤ ࠶ωΰγΤʔγϣϯͷར༻ྫ
ɾ ΫϥΠΞϯτূ໌ॻ ‣ 8FCαΠτͷτοϓೝূͳ͠ɺ͔ͦ͜Βূ໌ॻ͕ඞཁͳϖʔδʹ༠ಋ͢Δ ͜͜Ͱ࠶ωΰγΤʔγϣϯ ɾ ใͷӅṭ ‣ ஈ֊ͰΫϥΠΞϯτূ໌ॻΛ༗ޮʹ͢Δ͜ͱͰɺճͷϋϯυγΣΠΫΛӅͤΔ ɾ ҉߸ڧͷมߋ ‣ ճͱճͰ҉߸ڧΛมߋ͢Δ ෛՙରࡦ
"QQMJDBUJPO%BUB "MFSU ଓΛด͡Δ 22 "QQMJDBUJPO%BUBϓϩτίϧ ɾΞϓϦέʔγϣϯͷσʔλΛӡͿ ɾ5-4ʹ͓͍ͯ୯ͳΔσʔλͷόοϑΝ "MFSUϓϩτίϧ ɾ௨৴தʹྫ֎͕ൃੜͨ࣌͠ͷ௨ͷػߏ ɾ"MFSUͭͷϑΟʔϧυͰදݱ͞ΕΔ
‣ "MFSU-FWFMXBSOJOH·ͨGBUBM ଈ࣌ःஅ ‣ "MFSU%FTDSJQUJPOΞϥʔτͷ༰Λࣔ͢ ଓΛด͡Δ ɾDMPTF@OPUJGZΞϥʔτͰΒͤΔɺ͜ΕΛड͚औͬͨΒૹΓฦ͢ ɾγϟοτμϯͷϓϩτίϧΛ༻ҙ͢Δ͜ͱͰڧ੍அ߈ܸʹඋ͑Δ
ٖࣅཚੜث 23 ҙͷ͞ͷٖࣅཚͷੜ ɾ 5-4Ͱҙͷ͞ͷٖࣅཚΛੜ͢ΔͨΊʹ13' ٖࣅཚੜث Λ༻͍Δ ɾ 13'Ҿͱͯ͠ɺγʔΫϨοτɾγʔυɾҰҙͳϥϕϧΛͱΔ ɾ
5-4Ҏ߱ɺ)."$ͱTIBʹجͮ͘13'ͷར༻͕ࢦఆ͞ΕΔ P_hash(Secret, seed) = HMAC_hash(secret, A(1) + 1) + HMAC_hash(secret, A(2) + 2) + HMAC_hash(secret, A(3) + 3) + A(0) = HMAC_hash(secret, seed) A(i) = HMAC_hash(secret, A(i-1)) PRF(secret, label, seed) = P_hash(secret, label + seed) 13'1@IBTIͷ ϥούʔ
ϚελʔγʔΫϨοτ伴ੜ 24 ϚελʔγʔΫϨοτ ɾ ϓϦϚελγʔΫϨοτʹ13'Λט·ͤͯ࡞Δ όΠτ ɾ 伴ަͷํ๏ʹΑͬͯϓϦϚελʔγʔΫϨοτͷ͕͞มΘΔ͔Β͜ͷॲཧ͕ඞཁ master_secret
= PRF(pre_master_secret, “master secret”, client_random + server_random) 伴ੜ ɾ 伴ૉࡐϚελʔγʔΫϨοτͱγʔυ͔Β࡞ΒΕΔ ɾ 伴ϒϩοΫΛׂ͠ɺ."$伴ɾ҉߸伴ɾ*7Λಋग़͢Δ ɾ ηογϣϯ࠶։࣌γʔυͷΈ৽نऔಘ͢Δ key_block = PRF(master_secret, “key expansion”, server_random + client_random)
҉߸εΠʔτ 25 ҉߸εΩʔϜύϥϝʔλͷ૯শ͕҉߸εΠʔτ ɾ ҉߸εΠʔτ໊લ͔Βத͕ͳΜͱͳ͘Θ͔Δ TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 伴ަ ೝূ ΞϧΰϦζϜ ͞
Ϟʔυ ҉߸ ."$·ͨ13'
֦ு 26 ػೳΛՃ͢Δ5-4֦ு ɾ ϓϩτίϧΛमਖ਼͢Δ͜ͱͳ͘ɺ5-4ʹػೳΛՃ͢ΔΈ ɾ 5-4֦ு$MJFOU)FMMP 4FSWFS)FMMPͷޙʹஔ͞ΕΔ "-1/ ɾ5-4ଓ্ͰΞϓϦέʔγϣϯʹҟͳΔϓϩτίϧͷ༻ΛՄೳʹ͢Δ
ɾ)551ͱ41%:ͷซ༻ͷΑ͏ͳ͜ͱ͕Մೳʹɺ"-1/ͷૹ৴ฏจ $5 ɾύϒϦοΫ$"ʹΑͬͯαʔόূ໌ॻΛશͯه͠ɺ1,*ΛΑ͘͠Α͏ͱ͍͏ࢥ ପԁۂઢͷར༻Մೳੑ ɾΫϥΠΞϯτͰར༻Մೳͳପԁۂઢ҉߸ΛϋϯυγΣΠΫதʹΓऔΓ ɾରԠ͍ͯ͠Δ҉߸ΛϦετԽɾପԁۂઢ্ͷͷѹॖΦϓγϣϯ ѹॖΠϚΠν
֦ு 27 )FBSUCFBU ɾ 6%1ͷΑ͏ͳϓϩτίϧʹLFFQBMJWFػೳͷఏڙ ɾ ਂࠁͳ੬ऑੑ )FBSUCMFFE ͕ݟ͔ͭΓΘΕ͍ͯͳ͍ /FYU1SPUPDPM/FHPUJBUJPO
ɾ41%:ͷͨΊʹ࡞ΒΕ͕ͨɺࠓ"-1/ʹҰຊԽ ɾൿಗԽͷͨΊʹωΰγΤʔγϣϯͯ͠Δϓϩτίϧ͕ػث͔Βݟ͑ͳ͍ ҆શͳ࠶ωΰγΤʔγϣϯ ɾҎલͷ'JOJTIFEϝοηʔδͷWFSJGZ@EBUBΛૹड'JOJTIFE҉߸ܦ࿏্Ͱ҆શ 4/* ɾଓ͍ͨ͠αʔόͷ໊લΛΫϥΠΞϯτ͕ࢦఆՄೳʹ͢Δ ɾಉҰϗετͷෳαΠτͰ5-4Λ؆୯ʹѻ͑Δ
֦ு 28 ηογϣϯνέοτ ɾ ηογϣϯσʔλΛΫϥΠΞϯτଆͰཧ͢ΔΈ ɾ $MJFOU)FMMPͷ4FTTJPO5JDLFUʹؚ·ΕΔ ɾ ηογϣϯσʔλαʔόͷൿີ伴Ͱ҉߸Խ͞ΕΔ ॺ໊ΞϧΰϦζϜ
ɾΫϥΠΞϯτ͕ରԠ͍ͯ͠Δॺ໊ΞϧΰϦζϜͱϋογϡؔ ɾͳ͔ͬͨΒαʔό͕ਪଌ͢Δ 0$41εςʔϓϧ ɾαʔό͔ΒΫϥΠΞϯτʹূ໌ॻͷࣦޮใΛૹ৴͢Δ ɾೝূہʹ͍߹Θͤ͢Δඞཁ͕ͳ͘ͳΔ
ϓϩτίϧͷݶք 29 ଞͷϨΠϠʔͷηΩϡϦςΟΘ͔ΒΜ ɾ 5$1ͷϝλσʔλɾԼҐϨΠϠʔฏจͷ·· ‣ *1TFD͏ͳΓͳΜͳΓ͢Δ ɾ ࠷ॳͷϋϯυγΣΠΫฏจͰ݁ΕΔ ‣
26*$ͳੈͷதΛ࠲ͯͯ͠ ɾ ҉߸ԽҎ߱࿐ग़͢Δใ͋Δ ‣ αϒϓϩτίϧɾ֤ϝοηʔδͷ͞ ‣ ϝοηʔδͷ͞ΛӅͤͳ͍ͳΒѹॖ͢Δ
ϓϩτίϧͷόʔδϣϯʹΑΔࠩҟ 30 44- ɾ ωοτεέʔϓ͕ؤுͬͯ࡞ͬͨ࠷ޙͷ44- 5-4 ɾ ΊͰͨ͘ඪ४Խ͞Ε·ͨ͠ ɾ ."$ʹඪ४Խ͞Εͨ)."$Λ༻
ɾ ඪ४Խ͞Εͨ)."$ʹΑΓ13'Λنఆ ɾ ϚελʔγʔΫϨοτ͕13'ʹΑͬͯੜ ɾ WFSJGZ@EBUB͕13'ʹΑͬͯੜ ɾ ύσΟϯάͷϑΥʔϚοτ͕มߋ͞ΕηΩϡΞʹ100%-&߈ܸʜ ɾ ҉߸εΠʔτ͔Β'035&;"͕֎ΕΔ
ϓϩτίϧͷόʔδϣϯʹΑΔࠩҟ 31 5-4 ɾ $#$҉߸Խར༻ϞʔυͰ໌ࣔతͳ*7Λ༻ɹ#&"45߈ܸ ɾ ύσΟϯϯά߈ܸʹର͢Δޚ ɾ 5-4֦ுΛࢀর 5-4
ɾ "&"%ɾ)."$4)"ͷαϙʔτ ɾ .%ɾTIB͕େ෯ʹআ ‣ 5-4ͰωΰγΤʔγϣϯ͞ΕͨΒ13'ͷTIBTIBΛ͏ ‣ σδλϧॺ໊ͷ.%ɾTIBͷΈ߹ΘͤΛ୯Ұͷϋογϡؔʹஔ ɾ ΫϥΠΞϯτ͕ϋογϡɾॺ໊ͷΞϧΰϦζϜͷرΛ௨TJHOBUVSF@BMHPSJUIN ɾ 'JOJTIFEϝοηʔδͷWFSJGZ@EBUBͷ͞Λ໌ࣔతʹࢦఆՄೳʹ
ࢀߟ
ࢀߟจݙ 33 ɾ݁ߒ҉߸ٕज़ೖൿີͷࠃͷΞϦειϑτόϯΫΫϦΤΠςΟϒ ɾ0QFO44-ͷ੬ऑੑ $7& Ͱ5-4ϓϩτίϧͷجૅΛֶͿ ɹIUUQEIBUFOBOFKQKPWJ ɾෆਖ਼ΞΫηεΛࢭ͢Δ44-5-4ʢʣ ɹIUUQXXXBUNBSLJUDPKQBJUBSUJDMFTOFXT@IUNM
ɾ44-5-4ʢ44-ʙ5-4ʣͷϋϯυγΣΠΫΛ෮श͢Δ ɹIUUQTRJJUBDPNOJFJUFNTGEECEB