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
540
Doubles [NRI Hackathon 2018]
shuya
1
190
Other Decks in Programming
See All in Programming
Kiroで始めるAI-DLC
kaonash
2
540
Azure SRE Agentで運用は楽になるのか?
kkamegawa
0
1.4k
テストカバレッジ100%を10年続けて得られた学びと品質
mottyzzz
2
460
Testing Trophyは叫ばない
toms74209200
0
620
MLH State of the League: 2026 Season
theycallmeswift
0
220
MCPとデザインシステムに立脚したデザインと実装の融合
yukukotani
4
1.2k
CSC305 Summer Lecture 12
javiergs
PRO
0
130
KessokuでDIでもgoroutineを活用する / Go Connect #6
mazrean
0
140
Introducing ReActionView: A new ActionView-compatible ERB Engine @ Rails World 2025, Amsterdam
marcoroth
0
480
More Approvers for Greater OSS and Japan Community
tkikuc
1
110
レガシープロジェクトで最大限AIの恩恵を受けられるようClaude Codeを利用する
tk1351
4
1.6k
TDD 実践ミニトーク
contour_gara
1
280
Featured
See All Featured
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.4k
What’s in a name? Adding method to the madness
productmarketing
PRO
23
3.6k
Being A Developer After 40
akosma
90
590k
Embracing the Ebb and Flow
colly
87
4.8k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.6k
Writing Fast Ruby
sferik
628
62k
Designing for Performance
lara
610
69k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
How GitHub (no longer) Works
holman
315
140k
Building Flexible Design Systems
yeseniaperezcruz
328
39k
Fireside Chat
paigeccino
39
3.6k
Art, The Web, and Tiny UX
lynnandtonic
302
21k
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