Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
第2章プロトコル
Search
shuya
February 26, 2018
Programming
89
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
第2章プロトコル
研究室で行った輪読のスライドです
プロフェッショナル SSL/TLS 第2章プロトコル
shuya
February 26, 2018
More Decks by shuya
See All by shuya
トイルを撲滅!インフラ領域での生成AI活用のススメ
shuya
1
740
Doubles [NRI Hackathon 2018]
shuya
1
200
Other Decks in Programming
See All in Programming
re:Inventに行く前に知っておきたい現地参加のノウハウ
nokomoro3
0
370
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
1
480
パーソナライズPodcastを作った話
repunit11
0
120
速習iPhone Duo対応
yuukiw00w
2
960
The Rails Doctrine Decade
koic
2
510
AI が書く Go コードの品質を劇的に向上させる Linter: “declscope”
mpyw
0
480
技術的負債の返済は、AI時代の複利で効く投資 — 経営としての意思決定とその遂行
curekoshimizu
1
2.2k
R8 の設定見直しでアプリサイズ削減
andpad
0
180
動作中のプログラムの中身をリアルタイムに覗く / Realtime Debugger for CSharp with Roslyn
prota
1
1.8k
見えないものを探る要求要件定義に必要な基本的思考 / invisible-requirement-thinking
minodriven
15
7.5k
IBM Bob Dojo #1 仕様駆動開発入門
oniak3ibm
PRO
0
350
UPDATE をやめる — EF Core でマスタをバージョン管理する
panda728
PRO
0
1.1k
Featured
See All Featured
The Curious Case for Waylosing
cassininazir
1
550
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
510
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.8k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
570
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
320
30 Presentation Tips
portentint
PRO
1
420
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.6k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.6k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
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