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
75
第2章プロトコル
研究室で行った輪読のスライドです
プロフェッショナル SSL/TLS 第2章プロトコル
shuya
February 26, 2018
Tweet
Share
More Decks by shuya
See All by shuya
トイルを撲滅!インフラ領域での生成AI活用のススメ
shuya
0
370
Doubles [NRI Hackathon 2018]
shuya
1
190
Other Decks in Programming
See All in Programming
データベースコネクションプール(DBCP)の変遷と理解
fujikawa8
0
170
バランスを見極めよう!実装の意味を明示するための型定義 TSKaigi 2025 Day2 (5/24)
whatasoda
2
800
型安全なDrag and Dropの設計を考える
yudppp
5
690
AIエージェントによるテストフレームワーク Arbigent
takahirom
0
330
カクヨムAndroidアプリのリブート
numeroanddev
0
140
事業戦略を理解してソフトウェアを設計する
masuda220
PRO
16
5k
TypeScript だけを書いて Tauri でデスクトップアプリを作ろう / Tauri with only TypeScript
tris5572
2
550
20250528 AWS Startupイベント登壇資料:AIコーディングの取り組み
procrustes5
0
120
eBPFを用いたAIネットワーク監視システム論文の実装 / eBPF Japan Meetup #4
yuukit
3
680
PT AI без купюр
v0lka
0
210
TypeScript製IaCツールのAWS CDKが様々な言語で実装できる理由 ~他言語変換の仕組み~ / cdk-language-transformation
gotok365
7
400
TypeScriptのmoduleオプションを改めて整理する
bicstone
4
450
Featured
See All Featured
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
137
34k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
1
96
4 Signs Your Business is Dying
shpigford
183
22k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
252
21k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
35
2.3k
Why Our Code Smells
bkeepers
PRO
337
57k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
[RailsConf 2023] Rails as a piece of cake
palkan
55
5.6k
Designing Experiences People Love
moore
142
24k
GitHub's CSS Performance
jonrohan
1031
460k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Balancing Empowerment & Direction
lara
1
100
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