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
勉強会 #6
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
titech.crypto
May 27, 2018
370
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
勉強会 #6
デジタル署名について
titech.crypto
May 27, 2018
More Decks by titech.crypto
See All by titech.crypto
Crypgeek 勉強会 #13
titechcrypto
0
460
Lightning network
titechcrypto
0
43
About Bitcoin and its cryptography
titechcrypto
0
110
第8回 CrypGeek勉強会
titechcrypto
0
81
勉強会_7ゼロ知識証明.pdf
titechcrypto
0
440
勉強会7.pdf
titechcrypto
0
450
勉強会 #6
titechcrypto
0
380
勉強会 #4
titechcrypto
0
330
勉強会 #4
titechcrypto
0
260
Featured
See All Featured
Building an army of robots
kneath
307
47k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.4k
Into the Great Unknown - MozCon
thekraken
41
2.8k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.4k
[SF Ruby Conf 2025] Rails X
palkan
3
1.5k
Paper Plane (Part 1)
katiecoart
PRO
2
12k
How to build a perfect <img>
jonoalderson
1
6.1k
Scaling GitHub
holman
464
140k
SEO for Brand Visibility & Recognition
aleyda
0
4.8k
Navigating Weather and Climate Data
rabernat
0
560
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.6k
Writing Fast Ruby
sferik
630
63k
Transcript
σδλϧॺ໊ 2 2018/5/25 ϒϩοΫνΣʔϯษڧձ #6 Seiko Netsu 1
͡Ίʹ ࠓճͷษڧձͰɺ͍͔ͭ͋͘Δσδλϧॺ໊ʹ͍͓ͭͯ͠͠·͢ɻ લͰ֤छσδλϧॺ໊ͷ؆୯ͳհɺޙͰRSAॺ໊ͱSchnorrॺ໊ͷ ΞϧΰϦζϜʹ͍ͭͯղઆ͠·͢ɻ·ͨSchnorrॺ໊ɺLamportॺ໊ͱϒϩο ΫνΣʔϯͱͷؔΘΓʹ͍ͭͯհ͠·͢ɻ ࢿྉͷ४උʹ͋ͨͬͯɺҎԼͷॻ੶ɾWebΛࢀߟʹ͍͖ͤͯͨͩ͞·ͨ͠ɻ ɾ҉߸ٕज़ͷͯ͢ʢIPUSIRON ஶʣ ɾ҉߸ٕज़ೖʢ݁ ߒ
ஶʣ ɾͼΓ͋ΔͷݚڀϊʔτʢSchnorrॺ໊ʣ ɾγϡϊΞॺ໊͕ϏοτίΠϯͷεέʔϥϏϦςΟʹ༩͑ΔӨڹ ɾྔࢠίϯϐϡʔλ࣌ʹ༗ޮͳϥϯϙʔτॺ໊ͲΜͳΈ͔ ʢޱ༔ل༤ ஶʣ 2
લɹ 1. ֤छσδλϧॺ໊ΞϧΰϦζϜͷհ ɾRSAॺ໊ ɾElGamalॺ໊ ɾSchnorrॺ໊ ɾDSAॺ໊ ɾECDSAॺ໊ʢପԁۂઢDSAʣ ɾLamportॺ໊ 2.
Schnorrॺ໊ͱϏοτίΠϯ 3. Lamportॺ໊ϒϩοΫνΣʔϯʹΘΕΔ͔ 3
ޙɹ 4. RSAॺ໊ͷΞϧΰϦζϜ 5. Schnorrॺ໊ͷΞϧΰϦζϜ 4
ɾRSAॺ໊ ɾDSAॺ໊ ɾECDSAॺ໊ʢପԁۂઢDSAʣ ɾSchnorrॺ໊ ɾElGamalॺ໊ ɾLamportॺ໊ දతͳσδλϧॺ໊ DSSʢDigital Signature Standardʣ:σδλϧॺ໊ඪ४
FIPS PUB 186-4 5
RSAॺ໊ Rivest, Shamir, AdlemanʹΑͬͯRSA҉߸ͱಉ࣌ʹఏ Ҋ͞Ε͍ͯͨσδλϧॺ໊ɻσδλϧॺ໊ͷΞΠσΟ ΞࣗମDiffiem, HellmanʹΑͬͯఏএ͞Ε͍͕ͯͨɺ ͦΕΛ࠷ॳʹ۩ମԽͨ͠ͷ͕RSAॺ໊ɻγϯϓϧͳσ δλϧॺ໊ɺ͋ΒΏΔ߈ܸʹରͯ͠੬ऑɻ ྺ࢙తͳܦҢΜΛΓ͍ͨํɺʮ҉߸ղಡʢ্ɾ
ԼʣʯΛͥͻɻ 6
ElGamalॺ໊ ɾ1984ʹElGamalʹΑͬͯఏҊ͞Εͨࢄର ʹجͮ͘σδλϧॺ໊ɻ ɾ߈ܸطϝοηʔδ߈ܸʹରͯ͠੬ऑͰ͋Γɺ ElGamalॺ໊͕ͦͷ··༻͞ΕΔ͜ͱͳ͍ɻ → վྑ൛Ͱ͋ΔDSAॺ໊͕DSSʢDigital Signature StandardʣͷҰͭͱͯ͠ීٴ ҉߸ٕज़ͷͯ͢
7.8ষ ࢀߟ(p.535) Taher Elgamal (1955 ʙ) 7
Schnorrॺ໊ ɾࢄରରΛར༻ͨ͠σδλϧॺ໊ɻ ɾSchnorrͷূ໌ϓϩτίϧ※1 + ϋογϡؔɹͰߏɻ ɾൃ໌ऀͷSchnorr͕ࣗऔಘͨ͠ಛڐʹΑΓ2008·Ͱ อޢ͞Ε͍ͯͨɻ ɾSchnorrॺ໊ɺͦͷଞͷॺ໊ํࣜʹൺͯॺ໊͕ίϯ ύΫτͰɺݱࡏΑΓॺ໊ݕূͷεϐʔυ͕͍ɻ →BitcoinͰͷԠ༻͕ظ
҉߸ٕज़ͷͯ͢ 7.9ষ ࢀߟ(p.547) Claus P. Schnorr (1943 ʙ) ※1: ҉߸ٕज़ͷͯ͢ 9.1.5ষ ࢀߟ(p.643 8
DSAॺ໊ ɾถࠃඪ४ٕज़ݚڀॴʢNISTʣʹΑΓఏҊ͞Εͨσδ λϧॺ໊ɻRSAॺ໊ɺECDSAॺ໊ͱฒΜͰɺDSS ʢDigital Signature StandardʣͷҰͭɻ ɾElGamalॺ໊ͷॺ໊αΠζ͕খ͘͞ͳΔΑ͏ʹɺ Schnorrॺ໊ͷٕ๏Λ༻͍ͯվྑͨ͠ํࣜɻ ҉߸ٕज़ͷͯ͢ 7.10ষ
ࢀߟ(p.554) 9
ECDSAॺ໊ʢପԁۂઢDSAॺ໊ʣ ɾପԁۂઢ҉߸ɿପԁۂઢͱݺΕΔۂઢΛ༻͍ͨ҉ ߸ɻ ɾDSAʹ͍ͭͯɺପԁۂઢ҉߸Λ༻͍ΔΑ͏ʹͨ͠ม छ͕ECDSAॺ໊ɻ ɾପԁۂઢ҉߸ɺRSAʹൺ͍ͯ伴Ͱಉͩ͡ ͚ͷڧ͞Λ࣋ͭɻ Ex. 224ʙ255Ϗοτͷ伴Λ࣋ͭପԁۂઢ҉߸ɺ 2048Ϗοτͷ伴Λ࣋ͭRSA҉߸ͱಉͷڧ͞ɻ
ɾৄࡉɺୈ5ճษڧձࢿྉʢࢁຊ܅୲ʣ E: y2 = ax3 + bx2 + cx + d a = 1, b = 0, c = -2, d = 4 10
Lamportॺ໊ɿྔࢠੑ͋Γʂ ɾྔࢠίϯϐϡʔλͷొͰɺRSAΛ͡Ίͱ͢Δ҉߸ٕज़͕ةݥʹࡽ͞ΕΔ ɹˠ ྔࢠੑΛ࣋ͬͨ҉߸ٕज़͕ඞཁ ɹˠ Lamportॺ໊େنͳϋογϡؔΛ༻͍ͨྔࢠੑΛ࣋ͬͨσδλϧॺ໊ ɹˠ ҰํϋογϡؔΛ256ରͷཚʢ512ݸͷཚʣʹରͯ͠༻ɻ ɾྔࢠίϯϐϡʔλͱ͍͑Ͳɺ૯ͨΓ߈ܸʹ͕͔͔࣌ؒΔɻ
ϝϦοτɿߴɺ҆શɺ؆қͳߏɺ σϝϦοτɿॺ໊αΠζʢେʣɺϫϯλΠϜʢ܁Γฦ͑͠ͳ͍ʣ ࢀߟɿhttps://diamond.jp/articles/-/143803 11
લɹ 1. ֤छσδλϧॺ໊ΞϧΰϦζϜͷհ ɾRSAॺ໊ ɾElGamalॺ໊ ɾSchnorrॺ໊ ɾDSAॺ໊ ɾECDSAॺ໊ʢପԁۂઢDSAʣ ɾLamportॺ໊ 2.
Schnorrॺ໊ͱϏοτίΠϯ 3. Lamportॺ໊ϒϩοΫνΣʔϯʹΘΕΔ͔ 12
Schnorrॺ໊ͱϏοτίΠϯ ɾϏοτίΠϯͰɺϒϩοΫʹه͞ΕΔtxσʔλΛͰ͖Δ͚ͩখ͘͞ ͠ɺଟ͘ͷtxΛҰͭͷϒϩοΫʹऩΊΑ͏ͱ͍ͯ͠ΔʢϒϩοΫαΠζҾ͖ ্͛ɺSegwit, Lightning Network…ʣɻ ɾECDSAॺ໊Λར༻ͯ͠࡞͞Εͨॺ໊σʔλϒϩοΫʹه͞ΕΔ σʔλͷҰͭɻͳΜͱ͔͜ΕΛখ͘͞ग़དྷͳ͍͔ʁ γϡϊΞॺ໊͕ϏοτίΠϯͷεέʔϥϏϦςΟʹ༩͑Δিܸ εέʔϥϏϦςΟ
Schnorrॺ໊ͷ׆༻ ɾSchnorrॺ໊ɺͦͷଞͷॺ໊ํࣜʹൺͯॺ໊͕ίϯύΫτ͔ͭॺ໊ݕ ূͷεϐʔυ͕͍ɻ ɾಛʹෳਓͷॺ໊Λඞཁͱ͢ΔϚϧνγάʹΑΔૹۚͷσʔλαΠζΛେ ෯ʹݮͰ͖Δɻ 13
ɾSchnorrॺ໊Ͱɺෳͷॺ໊σʔλΛͻͱͭͷॺ໊σʔλʹ·ͱΊΔ͜ͱ͕Ͱ͖ Δ͜ͱ͕ϙΠϯτɻ ɾݱࡏͷBitcoinͰɺෳͷΞυϨε͔ΒҰͭͷΞυϨεʹૹۚ͢ΔࡍɺͦΕͧΕ ͷॺ໊͕ඞཁͱͳΔɻ ɾ·ͨϚϧνγάΛར༻͢Δ߹ɺෳͷॺ໊͕ඞཁͱͳΔɻྫ͑2-of-3 ͷΑ ͏ͳ߹ʹ2ͭͷॺ໊͕ඞཁɻ ɹˠ Schnorrॺ໊Ͱɺෳͷॺ໊ΛҰͭʹ·ͱΊΒΕΕ༰ྔͷઅʹͳΔɻ 14
Lamportॺ໊ϒϩοΫνΣʔϯ ʹΘΕΔ͔ ɾLamportॺ໊ͷྔࢠੑັྗతɻ͔͠͠ॺ໊ͷσʔλαΠζɻ ɾECDSAॺ໊ʢBitcoin, EthereumͰݱࡏ༻ʣͱൺֱͯ͠Lamportॺ໊ͷαΠ ζେ͖͍ɻ ɾECDSAॺ໊ɿެ։伴ʢ33 bytesʣɺॺ໊ʢ73 bytesʣ ɾLamportॺ໊ɿެ։伴ʢ16
KBʣɺॺ໊ʢ8 KBʣ Lamportॺ໊ͷެ։伴ͱॺ໊ɺECDSAॺ໊ΑΓ213ഒʢ106 bytes vs 24 KBʣ େ͖͍ɻެ։伴ͱॺ໊ͱϒϩοΫνΣʔϯͷτϥϯβΫγϣϯʹऔΓࠐ·ΕΔ ͷͰɺϒϩοΫαΠζͷංେԽΛੜͤ͡͞Δɻ →εέʔϥϏϦςΟʹٯߦ͢ΔྲྀΕɻ 15
ޙɹ 4. RSAॺ໊ͷΞϧΰϦζϜ 5. Schnorrॺ໊ͷΞϧΰϦζϜ 16
RSAॺ໊ੜΞϧΰϦζϜ ॺ໊ = ϝοηʔδd mod N ެ։伴 e,Nɺൿີ伴 d, ϝοηʔδ
m, ॺ໊ σ ͱ͢Δͱ ɾॺ໊ϝοηʔδmΛdͯ͠mod NΛͱͬͨͷɻγϯϓϧʂ ɾϙΠϯτɺൿີ伴dΛΒͳ͍ਓσΛੜͰ͖ͳ͍ɻ mɿॺ໊Λߦ͍͍ͨϝοηʔδɺdɿൿີ伴 e, Nɿެ։伴ɹσɿిࢠॺ໊σʔλ ※ Nೋͭͷେ͖ͳૉ p,q Λ͔͚ͨͷ N = p×q 17
RSAॺ໊ݕূΞϧΰϦζϜ ॺ໊͔Βಘͨϝοηʔδ = ॺ໊e mod N ެ։伴 e,Nɺൿີ伴 d, ϝοηʔδ
m, ॺ໊ σ ͱ͢Δͱ ɾݕূऀɺެ։伴 e, N ͱॺ໊ σͷใ͔ΒɺϝοηʔδmΛ෮ݩͰ͖Δ ɾॺ໊ͱҰॹʹఴ͞Ε͍ͯΔϝοηʔδmͱൺֱ͢Δ͜ͱͰɺॺ໊ͷਖ਼ੑΛ֬ೝ 18
ଘࡏʢજࡏʣతِ ॺ໊ର͕ҙຯͷͳ͍ʢϥϯμϜͳʣϝοηʔδm’ͩͱͯ͠ɺ ਖ਼͍͠σδλϧॺ໊σ’Λ࡞ΕΔ͔ʁ >>> YESʂʂσδλϧॺ໊ʹର͢ΔڴҖʹͳΔΒ͍͠… 1. ߈ܸऀϥϯμϜʹॺ໊σʔλσ’ΛબͿ 2. ϥϯμϜͳϝοηʔδm’ Λެ։伴(e,
N) ͔Βܭࢉ → m’ = σ’e mod N ,Λܭࢉ 3. ݕূऀʹm’, σ, (e,N)ΛૹΔ →ݕূऀݕূޭͯ͠͠·͏ 19
Schnorrॺ໊ɿه߸ͷఆٛ ه߸ͷఆٛ H(x), H(x//y) …… ϋογϡؔ pɿૉɻҎ߱ɺͯ͢ͷࣜ࠷ޙʹ p Ͱׂͬͨ༨ΓΛܭࢉ͍ͯ͠Δͱղऍ͢Δ qɿq|p-1Λຬͨ͢ɺૉqΛબ͍ͯ͠Δ
gɿɻgq = 1 mod p Λຬͨ͢ xɿൿີ伴 yɿެ։伴ʢy = gx mod pʣ mɿॺ໊Λߦ͍͍ͨϝοηʔδ tɿॺ໊ʹඞཁͳཚ s, hɿిࢠॺ໊σʔλ σʢs,hʣ 20
Schnorrॺ໊ͷײతཧղ H(x//y)ɺx,yΛҾͱ͢Δϋογϡؔ mॺ໊͢Δϝοηʔδ yެ։伴ͱͳΔ s,h͕γϡϊΞॺ໊Ͱܭࢉ͖͢σδλϧॺ໊σʔλʢΞϧΰϦζϜͷग़ྗσ(s,h)ʣ ࣜͷ྆ลΛݟΔͱh͕྆ํʹؚ·Εͨʮࣗݾݴٴܕʯͷࣜͱͳ͍ͬͯΔɻ ϋογϡؔHͷҰํੑΛߟ͑Δͱɺೖྗͷ”h”ͱग़ྗͷ”h”͕Ұக͢ΔΑ͏ʹ มϖΞ(s,h)ͷΛબͿͷࠔɻ Λຬͨ͢ ΛٻΊΑ͏ʂ
21
มϖΞ(s,h)ͷબͼํ ࣮ɺൿີ伴xΛ͍ͬͯΔͱɺ͜ͷมϖΞʢs,hʣΛٻΊΔ͜ͱ͕Ͱ͖Δɻ ϙΠϯτެ։伴y͕ɺൿີ伴 xͱgΛ༻͍ͯɹy = gx ͱදͤΔ͜ͱɻ ᶃॺ໊ʹඞཁͳཚt (= s
- xh) ΛઌʹܾΊΔɻ ᶄ h = H(m//gt) ΑΓɺh͕ٻ·Δɻ ᶅ ॺ໊ऀʹͱͬͯطͷt, h,x ΑΓ s ͕ٻ·Δɻ ᶆॺ໊σʔλσ = (s,h)ͷมϖΞΛಘΔɻ มϖΞ(s,h)ΛܭࢉͰ͖Δͷɺൿີ伴xΛ͍࣋ͬͯΔਓ͚ͩʂ ॺ໊ͱͯ͠Γཱͭɻ 22
Schnorrॺ໊ͷΞϧΰϦζϜ sͰͳ͘xͱࢥΘΕΔɻ y = gx mod p sk = x
23
KeyGen:伴ੜΞϧΰϦζϜ ɿಈ࡞4ɿsͰͳ͘xͱࢥΘΕΔɻy = gx mod p, sk = x ͱ͠ͳ͍ͱͭͭ͡·͕߹Θͳ͍ɻ
ൿີ伴xͱެ։伴y 24
ॺ໊ੜΞϧΰϦζϜ 1. దͳཚ t Λੜ͢Δ 2. h = H(m//r) =
H(m//gt) Λܭࢉ͢Δ(r = gt mod p) 3. 2ͰٻΊͨhΛར༻ͯ͠ɺs = t + xh mod pΛܭࢉ͢Δ 4. ٻΊͨ(h,s)Λσδλϧॺ໊ͷग़ྗͱ͢Δ pΛ͋Δڊେͳૉͱ͠ɺgΛpͱޓ͍ʹૉͳͱ͢Δɻ mॺ໊ϝοηʔδͱ͠ɺxΛൿີ伴ɺyΛެ։伴ͱ͢Δɻ H( )ϋογϡؔͰ͋Γɺͦͷग़ྗ͕hͰ͋Δɻ 25
ॺ໊ݕূΞϧΰϦζϜ 1. r’ = gsy-h mod p Λܭࢉ͢Δ 2. h’
= H(m//r’) Λܭࢉ ͢Δ 3. h’ = h Λ֬ೝɻΓཱͭ߹1Λग़ྗ͠ɺΓཱͨͳ͍߹0Λग़ྗ ༩͑ΒΕͨॺ໊Λݕূ͢Δʹ Λܭࢉ͠ɺh’ͱh͕Ұக͢Δ͔Λ֬ೝ͢ΕΑ͍ɻͳ͓ɺg, ॺ໊σʔλ(s,h), ެ։伴y ݕূऀʹͱͬͯطͰ͋Δɻ 26