Slide 1

Slide 1 text

҉߸ٕज़Λࢧ͑Δૉ਺ ϓϩάϥϚͷͨΊͷ਺ֶษڧձ@෱Ԭ
 2015.09.04 @shoyan

Slide 2

Slide 2 text

4IPIFJ:BNBTBLJ !TIPZBO • ϓϩάϥϚʔ • 2ࣇͷ෕ • GMOϖύϘ

Slide 3

Slide 3 text

໨࣍ • ҉߸ٕज़ʹ͍ͭͯ • ެ։伴҉߸ʹ͍ͭͯ • RSA҉߸ͷ҆શੑʹ͍ͭͯ • ҉߸ֶతͳ਺ʹ͍ͭͯ • ·ͱΊ

Slide 4

Slide 4 text

҉߸ٕज़ʹ͍ͭͯ

Slide 5

Slide 5 text

Πϯλʔωοτͷ໰୊ • ৘ใͷ౪ௌ • ৘ใͷվ͟Μ • ͳΓ͢·͠

Slide 6

Slide 6 text

͜ΕΒͷ໰୊Λղܾ͢ΔͨΊʹ ҉߸ٕज़͕࢖ΘΕ͍ͯΔ

Slide 7

Slide 7 text

҉߸ٕज़͸ͭʹ෼ྨ͞ΕΔ

Slide 8

Slide 8 text

৘ใΛಡΉ͜ͱ͕Ͱ͖ͳ͍Α͏ʹ
 ͢ΔͨΊͷ҉߸ٕज़ • ౪ௌऀ͕৘ใΛݟͯ΋ɺ಺༰͕Θ͔Βͳ͍Α ͏ʹ͢Δ • SSL / TLS • SSH • IPsec

Slide 9

Slide 9 text

৘ใ͕վ͟Μ͞Ε͍ͯͳ͍͜ͱΛ֬ ೝ͢ΔͨΊͷ҉߸ٕज़ • ૹΒΕ͖ͯͨ৘ใ͕ਖ਼͍͠৘ใ͔Ͳ͏͔Λ
 νΣοΫ͢Δʹ͸ɺϋογϡνΣοΫΛ༻͍ Δ • SHA-1 • MD5

Slide 10

Slide 10 text

৘ใΛૹͬͨ૬खΛ֬ೝ͢ΔͨΊͷ ҉߸ٕज़ • ৘ใΛૹ৴ͨ͠૬ख͕ਖ਼͍͠૬ख͔Ͳ͏͔Λ νΣοΫ͢Δɻిࢠॺ໊ͱݺ͹ΕΔํ๏͕͋ Δ • ೝূہʹిࢠূ໌ॻΛൃߦͯ͠΋Β͏ • https௨৴Ͱར༻͞Ε͍ͯΔ

Slide 11

Slide 11 text

ެ։ݤ҉߸ʹ͍ͭͯ

Slide 12

Slide 12 text

ެ։ݤ҉߸ • ΠϯλʔωοτͰ࠷΋࢖ΘΕ͍ͯΔ҉߸ٕज़ • ৘ใͷ౪ௌΛ๷͙҉߸ٕज़΍ిࢠূ໌ॻͷੜ ੒ʹ࢖ΘΕ͍ͯΔ

Slide 13

Slide 13 text

ެ։ݤ҉߸ • ެ։伴Λ࢖ͬͯ҉߸Խ͢Δ • ൿີ伴Λ࢖ͬͯ෮߸Խ͢Δ • ड৴ऀ͸͋Β͔͡Ίެ։伴Λૹ৴ऀʹ౉͓ͯ͠ ͘ • ެ։伴Ͱ͸෮߸ԽͰ͖ͳ͍ͷͰ౪ௌ͞Εͯ΋໰ ୊ͳ͍

Slide 14

Slide 14 text

ެ։ݤ҉߸ํࣜͰ࠷΋ීٴ͍ͯ͠Δ 34" • Ϛανϡʔηοπ޻ՊେֶͷRon Rivestɺ
 Adi ShamirɺLeonard Adlemanͷ3ਓ͕։ൃ • 3ਓͷ։ൃऀͷ಄จࣈ͔ΒRSA҉߸ํࣜͱ໋໊ ͞Εͨ

Slide 15

Slide 15 text

ެ։ݤͱൿີݤͷੜ੒ • ൿີ伴ͱެ։伴͸ϖΞʹͳ͍ͬͯΔඞཁ͕͋ Γɺ͜ͷ2ͭͷΩʔͷ͜ͱΛΩʔϖΞͱݺͿ

Slide 16

Slide 16 text

ΩʔϖΞͷੜ੒खॱ PͱQΛ࢖ͬͯNΛܭࢉ͢Δ PͱQΛ࢖ͬͯLΛܭࢉ͢Δ LΛ࢖ͬͯEΛܭࢉ͢Δ EͱLΛ࢖ͬͯDΛܭࢉ͢Δ

Slide 17

Slide 17 text

1ͱ2Λ࢖ͬͯ/Λܭࢉ͢Δ • ʮPʯͱʮQʯͷ2ͭͷૉ਺Λ४උ͢Δ • ஋͕খ͗͢͞Δͱղಡ͕༰қʹͳͬͯ͠·͏ • ஋͕େ͖͗͢Δͱॲཧʹ͕͔͔࣌ؒΔ • 1024 - 4096Ϗοτ(10ਐ਺Ͱ300-1000ܻఔ౓) ͕ਪ঑͞Ε͍ͯΔ

Slide 18

Slide 18 text

ૉ਺ͱ͸ • ૉ਺ͱ͸1ͱࣗ෼ࣗ਎Ҏ֎ʹਖ਼ͷ໿਺Λ࣋ͨͳ ͍ࣗવ਺Ͱɺ1Ͱͳ͍਺ͷ͜ͱ ҎԼͷૉ਺ • 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97

Slide 19

Slide 19 text

Τϥτεςωεͷ;Δ͍ • ࢦఆ͞Εͨ੔਺xҎԼͷશͯͷૉ਺Λൃݟ͢Δ ΞϧΰϦζϜ • ݹ୅ΪϦγϟͷՊֶऀɺΤϥτεςωε͕
 ߟҊͨ͠ • ͍·΋ݱ໾Ͱ࢖ΘΕ͍ͯΔํ๏

Slide 20

Slide 20 text

/ /VNCFS ͷܭࢉࣜ N = P ✖ Q N = 13 ✖ 17 N= 221 • ʮPʯΛʮ13ʯɺʮQʯΛʮ17ʯͱͯ͠ʮNʯ Λܭࢉ͢Δ

Slide 21

Slide 21 text

1ͱ2Λ࢖ͬͯ- -$.-FBTU $PNNPO.VMUJQMF Λܭࢉ͢Δ L = lcm(P - 1, Q - 1) • ʮP - 1ʯͱʮQ - 1ʯͷ࠷খެഒ਺ΛٻΊΔ • LͷܭࢉͰ͸ɺNͷܭࢉͰ࢖ͬͨPͱQΛ࢖͏

Slide 22

Slide 22 text

-ͷܭࢉ݁Ռ L = lcm(13 - 1, 17 - 1) L = 48 • 12(13 - 1) ͱ16(17 - 1) ͷ࠷খެഒ਺͸ʮ48ʯ

Slide 23

Slide 23 text

-Λ࢖ͬͯ& &ODSZQUJPO Λ
 ܭࢉ͢Δ Eͷܭࢉࣜ 1 < E < L god(E, L) = 1 • ʮEʯ͸ʮ1ʯΑΓେ͖͘ɺLΑΓখ͍͞ • ʮEʯͱʮLʯͷ࠷େެ໿਺͕1ͱͳΔ(ޓ͍ʹૉ)

Slide 24

Slide 24 text

&ͷܭࢉ݁Ռ • 48ͱૉʹͳΔ਺ʮEʯΛٻΊΔ • ʮEʯͷ஋͸ෳ਺ಘΒΕΔͷͰɺ͜ͷத͔Βૉ਺Λ1ͭ
 બ୒͢Δ god(E, 48) = 1 E = 5, 7, 11, 13, 17, 19, 23, 25, 29, 31, 35, 37, 41, 43, 47

Slide 25

Slide 25 text

&ͱ-Λ࢖ͬͯ% %FDSZQUJPO Λ
 ܭࢉ͢Δ • ʮEʯͱʮDʯΛֻ͚߹Θͤɺʮmod LʯΛ
 ܭࢉͨ͠஋͕1ʹͳΔΑ͏ͳʮDʯͷ஋ΛٻΊ Δ E ✖ D mod L = 1 Dͷܭࢉࣜ

Slide 26

Slide 26 text

%ͷܭࢉ݁Ռ • ʮEʯͷ஋Λʮ5ʯɺʮLʯͷ஋Λʮ48ʯͱ͠ ͯܭࢉͨ͠৔߹ 5 ✖ D mod 48 = 1 D = 29

Slide 27

Slide 27 text

࡞੒͞ΕͨΩʔϖΞ ެ։伴͸ʮEʯͱʮNʯ E = 5 N = 221 ൿີ伴͸ʮDʯͱʮNʯ D = 29 N = 221

Slide 28

Slide 28 text

34"ͷ҉߸Խॲཧ • ฏจΛʮEʯ৐͠ɺͦͷ݁Ռͷ஋ΛʮNʯͰׂ Γɺ༨Γͷ஋ΛٻΊΔɻ • ʮEʯͱʮNʯ͕ެ։伴 ҉߸จ = ฏจ mod N E

Slide 29

Slide 29 text

҉߸Խॲཧͷܭࢉ • ฏจͷ஋͕ʮ12ʯɺʮEʯͷ஋͕ʮ5ʯɺ ʮNʯͷ஋͕ʮ221ʯͷ৔߹ ҉߸จ = 12 mod 221 ҉߸จ = 207 5

Slide 30

Slide 30 text

34"ͷ෮߸Խॲཧ • ҉߸จʮDʯ৐ͯ͠ɺͦͷ݁Ռͷ஋ΛʮNʯͰ ׂΓɺ༨Γͷ஋ΛٻΊΔɻ • ʮDʯͱʮNʯ͕ൿີ伴 ฏจ = ҉߸จ mod N D

Slide 31

Slide 31 text

෮߸Խॲཧͷܭࢉ • ҉߸จͷ஋͕ʮ207ʯɺʮDʯͷ஋͕ʮ29ʯɺ ʮNʯͷ஋͕ʮ221ʯͷ৔߹ ฏจ = 207 mod 221 ҉߸จ = 12 29

Slide 32

Slide 32 text

34"҉߸ͷ҆શੑʹ͍ͭͯ

Slide 33

Slide 33 text

҉߸จΛղಡ͢Δͧʂ • ҉߸จ͸ʮDʯͱʮNʯ͕Θ͔Ε͹෮߸Ͱ͖Δ • ʮNʯͱʮEʯ͸౪ௌ͢Δ͜ͱ͕Ͱ͖Δ • N = P ✖ Q • ΩʔϖΞ͸ ʮPʯͱʮ Qʯ͔Β࡞੒͞Ε͍ͯ Δ

Slide 34

Slide 34 text

ʮ/ʯΛʮ1ʯͱʮ2ʯʹ෼ղ ͢Ε͹҉߸ΛղಡͰ͖Δʂ

Slide 35

Slide 35 text

ʮ/ʯΛʮ1ʯͱʮ2ʯʹ෼ղ ʮૉҼ਺෼ղʯ

Slide 36

Slide 36 text

࠷΋؆୯ͳૉҼ਺෼ղ 6 = 2 ✖ 3 • ָউʂ

Slide 37

Slide 37 text

ΛૉҼ਺෼ղ 221 = 13 ✖ 17 • ͜Ε͘Β͍ͳΒͰ͖Δʂ

Slide 38

Slide 38 text

70000000013390000000171

Slide 39

Slide 39 text

͜ͷ22ܻͷେ͖ͳ਺͸ 100000000019 ✖ 700000000009 ͱ͍͏2ͭͷૉ਺ͷੵʹ෼ղͰ͖Δ

Slide 40

Slide 40 text

ࢴͱԖච͕͋Ε͹ೋ਺Λֻ͚ࢉͯ͠ɺ΋ͱͷ ਺ʹ໭͢͜ͱ͸༰қʹߦ͑Δ ͚ΕͲ΋ɺେ͖ͳ਺ΛૉҼ਺෼ղ͢Δͷ͸೉ ͍͠

Slide 41

Slide 41 text

ཱͪ͸͔ͩΔૉҼ਺෼ղͷน

Slide 42

Slide 42 text

਺ͷܭࢉͱ҉߸ • ૉҼ਺෼ղͷ೉͠͞͸ܭࢉػΛ༻͍ͯ΋Ұ޲ ʹղܾ͠ͳ͍ • ҰඵؒʹԿઍԯճ΋ͷܭࢉ͕Ͱ͖ΔܭࢉػΛ ࣋ͬͯͯ͠΋·ͬͨ͘ࣃ͕ͨͨͳ͍

Slide 43

Slide 43 text

ޮ཰తͳૉҼ਺෼ղͷํ๏ • ۃΊͯߴ౓ͳ਺ֶͷཧ࿦Λ༻͍ͯૉҼ਺෼ղ ΛٻΊΔํ๏͕ੈքதͷ਺ֶऀͷؒͰ೔໷ݚ ڀ͞Ε͍ͯΔ͕… • ͦ͏ͨ͠ཧ࿦Λ༻͍ͯܭࢉػͷϓϩάϥϜΛ ࡞ͬͯ΋ɺ೉͍͠໰୊Ͱ͋Δ͜ͱʹ͸มΘΓ ͸ͳ͍

Slide 44

Slide 44 text

34"҉߸ͷ҆શੑ • ૉҼ਺෼ղ͕ࠔ೉ͳ͜ͱʹΑΓ୲อ͞Ε͍ͯΔ • ͨ͘͞Μͷܭࢉػͱ్ํ΋ͳ͍೥݄Λ͔͚ͯ ΍ͬͱD͕ٻ·ͬͨͱͯ͠΋ͦͷࠒʹ͸౪ௌ͠ Α͏ͱ͍ͯͨ͠৘ใͷՁ஋͕ͳ͘ͳ͍ͬͯΔ • ౪ௌ͠Α͏ͱ͍ͯ͠Δ৘ใʹରͯ࣌ؒ͠ͱίε τ͕ݟ߹Θͳ͍

Slide 45

Slide 45 text

҉߸ֶతͳ਺ʹ͍ͭͯ

Slide 46

Slide 46 text

େ͖ͳ਺ • ެ։伴҉߸Ͱ͸ͱͯ΋େ͖ͳ਺Λ࢖͏ • RSA҉߸Ͱ͸1000Ϗοτఔ౓ • 10ਐ਺ʹ͢Δͱ300ܻҎ্ͷ਺ࣈ

Slide 47

Slide 47 text

ఱจֶతͳ਺ • ෺ཧֶऀͷEddingtonʢΤσΟϯτϯʣ͸ɺશ Ӊ஦ͷཅࢠͷਖ਼֬ͳ਺͸136✖2 = 1.575 ✖ 10 (Eddingtonఆ਺)ͩͱ͍ͯ͠Δ • ೔ຊޠͰ͸ɺҰ൪େ͖͍਺ͷҐ͕ແྔେ਺ (10 ) ͳͷͰ͜ͷ਺ΛಡΈ্͛Δ୯Ґ͸ଘࡏ ͠ͳ͍ 256 79 68

Slide 48

Slide 48 text

ਖ߷هʢ͡Μ͜͏͖ʣʹΑΔ਺ͷ਺ ͑ํ

Slide 49

Slide 49 text

҉߸ֶతͳ਺ • RSA҉߸Ͱ͸1000Ϗοτఔ౓ • 1000Ϗοτ͸໿1.80 ✖ 10 • ਺্͑͛Δ͜ͱ΋Ͱ͖ͳ͍͠ɺ૝૾͢ΒͰ͖ ͳ͍ 308

Slide 50

Slide 50 text

·ͱΊ

Slide 51

Slide 51 text

·ͱΊ • ҉߸ٕज़͸େ͖͘3ͭʹΘ͚ΒΕΔ • ৘ใΛಡΉ͜ͱ͕Ͱ͖ͳ͍Α͏ʹ͢Δ • ৘ใͷվ͟ΜΛνΣοΫ͢Δ • ৘ใΛૹͬͨ૬खΛ֬ೝ͢ΔͨΊͷ҉߸ٕज़

Slide 52

Slide 52 text

·ͱΊ • ެ։伴҉߸ • ެ։伴ͱൿີ伴ͷ࡞੒ํ๏ • ҉߸Խͱ෮߸Խʹ͍ͭͯ

Slide 53

Slide 53 text

·ͱΊ • RSA҉߸ͷ҆શੑʹ͍ͭͯ • ૉҼ਺෼ղ͕ࠔ೉ͳ͜ͱʹΑͬͯ୲อ͞Εͯ ͍Δ • ҉߸ֶతͳ਺͸్ํ΋ͳ͘େ͖͍

Slide 54

Slide 54 text

͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠