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
rsa_understanding_memo
Search
convto
November 26, 2021
Technology
0
470
rsa_understanding_memo
RSA暗号の暗号化/復号処理とその証明など
社内勉強会で話した内容からそのまま公開できない面白い要素を抜いたものです
convto
November 26, 2021
Tweet
Share
More Decks by convto
See All by convto
Go1.22からの疑似乱数生成器について/go-122-pseudo-random-generator
convto
2
200
Go1.20からサポートされるtree構造のerrの紹介と、treeを考慮した複数マッチができるライブラリを作った話/introduction of tree structure err added since go 1_20
convto
0
520
byte列のbit表現を得るencodingライブラリ作った
convto
1
880
Go runtimeの歩き方/how to follow go runtime function
convto
1
810
入出金ドメインの苦労話と解決へのアプローチ/funds in/out difficulties and solutions
convto
2
1.2k
検索エンジンことはじめ/First step towards full-text search engine
convto
0
87
自作コンパイラやっていきの巻💪💪/making my own compiler!
convto
0
90
kubernetes 浅瀬 dive / kubernetes shallow dive
convto
0
490
GoogleCloudFunctionsでHTTPフックなGoスクリプトを書く / Write HTTP hook Go script with GoogleCloudFunctions
convto
0
85
Other Decks in Technology
See All in Technology
Compose Compiler Metricsを使った実践的なコードレビュー
tomorrowkey
1
220
私が trocco を推す理由
__allllllllez__
1
240
チームでロジカルシンキングに改めて向き合っている話 〜学習環境と実践⽅法〜
sansantech
PRO
3
2.6k
Cloud Native Java with Spring Boot (CNCF Aarhus, April 2024)
thomasvitale
1
170
ワールドカフェI /チューターを改良する / World Café I and Improving the Tutors
ks91
PRO
0
120
AWSに詳しくない人でも始められるコスト最適化ガイド
yuhta28
1
240
TechFeed Experts Night#27 〜 フロントエンドフレームワーク最前線 (Svelte)
baseballyama
1
530
競技としてのKaggle、役に立つKaggle
yu4u
3
1.7k
Google Cloud Next '24 Recap(Cloud Run/k8s)
mokocm
0
230
Postman v10リリース後を振り返る / Looking back at Postman v10 after release
yokawasa
1
160
現代CSSフレームワークの内部実装とその仕組み
poteboy
7
3.6k
APIファーストなプロダクトマネジメントの実践 〜SaaSus Platformでの例〜 / "Practicing API-First Product Management - An Example with SaaSus Platform
oztick139
0
110
Featured
See All Featured
Optimizing for Happiness
mojombo
370
69k
Testing 201, or: Great Expectations
jmmastey
28
6.4k
Git: the NoSQL Database
bkeepers
PRO
422
63k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
357
22k
4 Signs Your Business is Dying
shpigford
175
21k
Put a Button on it: Removing Barriers to Going Fast.
kastner
58
3.1k
Agile that works and the tools we love
rasmusluckow
325
20k
5 minutes of I Can Smell Your CMS
philhawksworth
199
19k
Learning to Love Humans: Emotional Interface Design
aarron
267
39k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
187
16k
StorybookのUI Testing Handbookを読んだ
zakiyama
13
4.6k
For a Future-Friendly Web
brad_frost
172
9k
Transcript
RSAશཧղϝϞ 2021/11/26 ࣾษڧձ
͡Ίʹ
ॾҙ • ࠓճΔͷ͋͘·ͰૉͷRSA҉߸ʹ͍ͭͯͰ͢ɻPKCS#1 v1.5 ͱ͔ OAEP ͱ͔ͷ֤छpaddingํࣜʹ͍ͭͯݴٴ͠ͳ͍Ͱ͢ • ૉͷRSA͍͔ͭ͘ͷཧ༝ʹΑΓඇਪͳͷͰɺ࣮ࡍʹར༻͢Δͱ͖ ރΕ࣮ͨͱ҆શͳpaddingΛ͍·͠ΐ͏
RSAͥΜͥΜΘ͔ΒΜ • ͳΜ͔͍͍ײ͡ʹ҆શͬΆ͍҉߸Λͭͬͯ͘͘ΕΔͬΆ͍ • ͳΜ͔伴ͷbit͍΄͏͕ྑ͍Β͍͠ • ͳΜ͔ૉҼղ͕Ήͣͯ͘ΞϨΒ͍͠
ͥΜͥΜΘ͔Βͳ͍ͱࠔΔ͜ͱ • ҆શੑͷཧ༝͕Θ͔Βͳ͍(=ෳͷ҉߸ΞϧΰϦζϜؒͷ҆શੑͷൺ ֱ͕Ͱ͖ͳ͍) • ͥΜͥΜΘ͔Βͳ͍ͷʹഎதΛ༬͚Δͷͪΐͬͱ૽ɻݪཧΛ Βͳ͍ͱෆ༻ҙʹةݥͳ͜ͱΛͯ͠͠·ͬͨΓͪ͠Ό͏͔
ͳͷͰ͍Ζ͍Ζௐͨ
ͷͰ͍ͬͯ͘
ࠓΔ͜ͱ • RSAͷ҉߸Խ/෮߸ͷखॱͱ෮߸Ͱ͖Δ͜ͱͷূ໌ • ܻ͘͢ͳ͍RSAΛखܭࢉͰͱ͘ϋϯζΦϯ • ૉҼղͷࠔੑͱ҆શૉʹ͍ͭͯ • ͬͱਂງΓ͍ͨਓ͚ͷRSAཧղͷͨΊͷϩʔυϚοϓ
RSAͷૢ࡞
༻ҙ͢Δͷ • p, q Λ૬ҧͳૉͱͯ͠ n = pq ͱͳΔ n
• (p-1)(q-1) ͱޓ͍ʹૉͳe • de ≡ 1 (mod (p-1)(q-1)) ͱͳΔ d • n, eΛެ։伴ɺdΛൿີ伴ͱ͢Δ
༻ҙ͢Δͷ • p, q Λ૬ҧͳૉͱͯ͠ n = pq ͱͳΔ n
• (p-1)(q-1) ͱޓ͍ʹૉͳe • de ≡ 1 (mod (p-1)(q-1)) ͱͳΔ d • n, eΛެ։伴ɺdΛൿີ伴ͱ͢Δ ͍͍͓͍ͪͭͯ
༻ҙ͢Δͷ • p, q Λ૬ҧͳૉͱͯ͠ n = pq ͱͳΔ n
• (p-1)(q-1) ͱޓ͍ʹૉͳe • de ≡ 1 (mod (p-1)(q-1)) ͱͳΔ d • n, eΛެ։伴ɺdΛൿີ伴ͱ͢Δ Θ͔Δ
༻ҙ͢Δͷ • p, q Λ૬ҧͳૉͱͯ͠ n = pq ͱͳΔ n
• (p-1)(q-1) ͱޓ͍ʹૉͳe • de ≡ 1 (mod (p-1)(q-1)) ͱͳΔ d • n, eΛެ։伴ɺdΛൿີ伴ͱ͢Δ ͓ޓ͍ૉͰͳʹ͕͏Ε͍͔͍ͬͯ͠͏ͱ࣍ ͷ݅ΛΈͨ͢E͕ଘࡏ͢Δ͜ͱ͕͍͑Δ͔ Β ༨ஊ͚ͩͲFͱ͢Δ͜ͱ͕ଟ͍ ͦͦ͜͜େ͖͍ૉͳͷͱɺਐͰ ͱͳΓCJU͔͠ ͨͬͯͳͯ͘ԋࢉෛՙ͕͍ͪ͞ΊͳͨΊ
༻ҙ͢Δͷ • p, q Λ૬ҧͳૉͱͯ͠ n = pq ͱͳΔ n
• (p-1)(q-1) ͱޓ͍ʹૉͳe • de ≡ 1 (mod (p-1)(q-1)) ͱͳΔ d • n, eΛެ։伴ɺdΛൿີ伴ͱ͢Δ NPE༨ΛٻΊΔॲཧͰɺϓϩάϥϜͰ Δԋࢉͱಉ͡ ༨ʹ͓͚Δ߹ಉӈͱࠨͷ༨͕͍͠ ͱ͍͏ҙຯ ͭ·ΓೃછΈ͋Δදݱʹ͢ͱ EF Q R Q R ͱͳ ΔE FΛ४උ͍ͤͱ͍͏͜ͱ
༻ҙ͢Δͷ • p, q Λ૬ҧͳૉͱͯ͠ n = pq ͱͳΔ n
• (p-1)(q-1) ͱޓ͍ʹૉͳe • de ≡ 1 (mod (p-1)(q-1)) ͱͳΔ d • n, eΛެ։伴ɺdΛൿີ伴ͱ͢Δ NPE༨ΛٻΊΔॲཧͰɺϓϩάϥϜͰ Δԋࢉͱಉ͡ ༨ʹ͓͚Δ߹ಉӈͱࠨͷ༨͕͍͠ ͱ͍͏ҙຯ ͭ·ΓೃછΈ͋Δදݱʹ͢ͱ EF Q R Q R ͱͳ ΔE FΛ४උ͍ͤͱ͍͏͜ͱ EF㲇 NPE Q R Λຬͨ͢EΛٻΊ Δͷ֦ுϢʔΫϦουޓআ๏Λ͔ͭ͑ ΘΓͱαΫοͱͰ͖Δ ֦ுϢʔΫϦουޓআ๏ͰͳΜͰ͏·͍͘ ͔͘ϕζʔͷࣜͱ͔ͱབྷΉͷͰׂѪ ڵຯ͋Δਓ͚ͷϩʔυϚοϓʹؔੑΛ ·ͱΊͱ͖·͢
༻ҙ͢Δͷ • p, q Λ૬ҧͳૉͱͯ͠ n = pq ͱͳΔ n
• (p-1)(q-1) ͱޓ͍ʹૉͳe • de ≡ 1 (mod (p-1)(q-1)) ͱͳΔ d • n, eΛެ։伴ɺdΛൿີ伴ͱ͢Δ NPE༨ΛٻΊΔॲཧͰɺϓϩάϥϜͰ Δԋࢉͱಉ͡ ༨ʹ͓͚Δ߹ಉӈͱࠨͷ༨͕͍͠ ͱ͍͏ҙຯ ͭ·ΓೃછΈ͋Δදݱʹ͢ͱ EF Q R Q R ͱͳ ΔE FΛ४උ͍ͤͱ͍͏͜ͱ EF㲇 NPE Q R Λຬͨ͢EΛٻΊ Δͷ֦ுϢʔΫϦουޓআ๏Λ͔ͭ͑ ΘΓͱαΫοͱͰ͖Δ ֦ுϢʔΫϦουޓআ๏ͰͳΜͰ͏·͍͘ ͔͘ϕζʔͷࣜͱ͔ͱབྷΉͷͰׂѪ ڵຯ͋Δਓ͚ͷϩʔυϚοϓʹؔੑΛ ·ͱΊͱ͖·͢ ͳΜͰͦΜͳ͜ͱ͢Δͷʁ
͋ͱͰγϡͬͱͯ͠νϟͬͱ͢ΔΜͩΑʂ
҉߸Խͷૢ࡞ • Ҏ߱ϓϨʔϯςΩετΛm, ҉߸ԽจࣈྻΛcͱ͠·͢ • RSAͷ҉߸Խ Enc(m) := m^e mod
n • Α͏mΛeͯ͠%nͱΕ҉߸ԽͰ͖Δɻeͱnެ։ใͳͷͰ୭ Ͱ҉߸ԽՄೳ
෮߸ͷૢ࡞ • RSAͷ෮߸ Dec(c) := c^d mod n • ͜ΕͰmʹͲΔ
• ͖ͬ͞ͷ෮߸ͱ͋Θͤͯཧ͢Δͱ (m^e mod n)^d mod n ͢Δͱm ʹΔͱ͍͍ͬͯΔ • nΛ๏ͱ͢ΔmodͱΔૢ࡞్தͰͬͯলུͯ݁͠Ռ͔ΘΒ ͳ͍ͷͰ (m^e)^d mod n ͱܭࢉͯ͠ಉ͡
ͨΊͯ͠ΈΑ͏ • m = (m^e mod n)^d mod n ͕Γཱͭͱͯ͠ܭࢉͯ͠ΈΔ
• దʹn=35, e=5, d=5, m=4ͱ͔Ͱࢼͯ͠ΈΔ • m^e mod n = 4^5 mod 35 = 1024 mod 35 = 9 • c^d mod n = 9^5 mod 35 = 59049 mod 35 = 4 • 0 < m < n ͷൣғʹཱ͓͍ͯ͢Δ
(m^e)^d ≡ m (mod n) ͷূ໌(1) • ཧͯ͠m^de ≡ m
(mod n) • ͜͜Ͱ de ʹ͍ͭͯɺ de ≡ 1 (mod (p-1)(q-1)) ͱͳΔΑ͏ͳ͔ͩΒ ͳʹ͔͠Βͷ(p-1)(q-1)ͷഒʹ1ͨ͠Ͱ de = 1 + s(p-1)(q-1) ͱ ͔͚Δ • m^de = m^(1+s(p-1)(q-1)) = m(m^(p-1)(q-1))^s ͱ͔͚Δɻ͜ΕͰm ͷഒͷܗͰ͔͚ͨ
(m^e)^d ≡ m (mod n) ͷূ໌(2) • ·ͱΊΔͱ m(m^(p-1)(q-1))^s ≡
m (mod n) ͱͳΕΑ͍ • άοͱᛀΉͱ m^(p-1)(q-1) mod n ͕ͳʹ͔ͷखҧ͍Ͱ1ʹͳͬͯ͘Ε Δͱm(1)^s ≡ m (mod n) ͱͳͬͯ͘Εͦ͏ • ͦΜͳ߹ͷ͍͍͜ͱ…͋ΔΘ͚…͋ΔΘ͚…
(m^e)^d ≡ m (mod n) ͷূ໌(2) • ·ͱΊΔͱ m(m^(p-1)(q-1))^s ≡
m (mod n) ͱͳΕΑ͍ • άοͱᛀΉͱ m^(p-1)(q-1) mod n ͕ͳʹ͔ͷखҧ͍Ͱ1ʹͳͬͯ͘Ε Δͱm(1)^s ≡ m (mod n) ͱͳͬͯ͘Εͦ͏ • ͦΜͳ߹ͷ͍͍͜ͱ…͋ΔΘ͚…͋ΔΘ͚… େֶऀϑΣϧϚʔ ࢴ͕͘͢ͳ͍͜ͱͰ༗໊ ͋ΔͰ
ϑΣϧϚʔͷখఆཧ • pૉ, aͰޓ͍ʹૉͱ͢Δͱ͖ҎԼ͕Γཱͭ • a^(p-1) ≡ 1 (mod p)
• ূ໌հ͍͚ͨ͠Ͳۮવʹखݩʹࢴ͕ແ͍ͷͰলུ͠·͢ • ͦͦ͜͜؆୯ͳͷͰ͕࣌ؒ༨ͬͨΒܰ͘հ͢Δ͔
(m^e)^d ≡ m (mod n) ͷূ໌(3) m^(p-1)(q-1) ≡ 1 (mod
n) Λͱ͘ • ํͱͯ͠ͳΜ͔ͯ͠ m^(p-1)(q-1) -1 ≡ 0 (mod n) ͰׂΓΕ Δ͜ͱΛ֬ೝ͢ΔํͰؤுΔ • ↑͕Γཱͯมܗͯ͠ m^(p-1)(q-1) ≡ 1 (mod n) ͕ٻ·Δ
(m^e)^d ≡ m (mod n) ͷূ໌(4) m^(p-1)(q-1) ≡ 1 (mod
n) Λͱ͘ • (m^(p-1))^(q-1) ͱมܗͯ͠ߟ͑Δ • qૉ͔ͩΒɺm͕ࣗqͷഒͰͳ͍ݶΓ m^(p-1) ͱޓ͍ʹૉ ͳͷͰɺϑΣϧϚʔͷখఆཧΑΓ (m^(p-1))^(q-1) ≡ 1 (mod q) • ׂΓΕΔܗʹཧ͢Δͱ (m^(p-1))^(q-1) -1 ≡ 0 (mod q) • m^(p-1)(q-1) -1 ≡ 0 (mod q) ͕ࣔͤͨ … (i
(m^e)^d ≡ m (mod n) ͷূ໌(5) m^(p-1)(q-1) ≡ 1 (mod
n) Λͱ͘ • (m^(q-1))^(p-1) ͱมܗͯ͠ߟ͑Δ • pૉ͔ͩΒɺm͕ࣗpͷഒͰͳ͍ݶΓ m^(q-1) ͱޓ͍ʹૉ ͳͷͰɺϑΣϧϚʔͷখఆཧΑΓ (m^(q-1))^(p-1) ≡ 1 (mod p) • ׂΓΕΔܗʹཧ͢Δͱ (m^(q-1))^(p-1) -1 ≡ 0 (mod p) • m^(p-1)(q-1) -1 ≡ 0 (mod p) ͕ࣔͤͨ … (ii
(m^e)^d ≡ m (mod n) ͷূ໌(6) m^(p-1)(q-1) ≡ 1 (mod
n) Λͱ͘ • (i, (ii ΑΓ m^(p-1)(q-1) -1 pͰqͰׂΓΕΔ • p, q૬ҧͳૉͳͷͰ͕ଘࡏ͠ͳ͍ɻͦͷͨΊͲͪΒͰׂΓ ΕΔͱ͍͏͜ͱ m^(p-1)(q-1) -1 pq ͷഒͰ͋Δ • Ҏ্ΑΓ m^(p-1)(q-1) -1 ≡ 0 (mod n) Ͱ͋Δ͜ͱ͕Θ͔Δ • มܗͯ͠ m^(p-1)(q-1) ≡ 1 (mod n) ͱͳΔʂ …(iii
(m^e)^d ≡ m (mod n) ͷূ໌(7) • m(m^(p-1)(q-1))^s ≡ m
(mod n) ͱͳΕΑ͍ • άοͱᛀΉͱ m^(p-1)(q-1) mod n ͕ͳʹ͔ͷखҧ͍Ͱ1ʹͳͬͯ͘ΕΔͱ m(1)^s ≡ m (mod n) ͱͳͬͯ͘Εͦ͏ • pqͱޓ͍ʹૉͳmͳΒ m^(p-1)(q-1) ≡ 1 (mod n) ͱͳΔͷͰˢཱ͕͢Δʂূ ໌͓ΘΓ • ͪͳΈʹpqͱm͕ૉ͡Όͳ͍ͱ͖ϑΣϧϚʔͷখఆཧͱ͔ߟ͑ͳͯ͘Αͯ͘ m͕p, qͰׂΓΕΔ͜ͱΛར༻ͯ͠୯ʹnͷഒ+mͷܗʹཧͰ͖Δ
खܭࢉͰͱͧ͘ʂ
• 1~26ͷࣈΛͦΕͧΕΞϧϑΝϕοτͷA~ZʹׂΓͯͨՍۭͷจ ࣈίʔυ͕ଘࡏ͢Δͱ͢Δ • n=35, e=5 ͕Θ͔͍ͬͯΔͱ͖ɺҎԼͷ3ͭͷ҉߸จΛղಡͯ͠Ͷ • 23,
24, 1
• 1~26ͷࣈΛͦΕͧΕΞϧϑΝϕοτͷA~ZʹׂΓͯͨՍۭͷจ ࣈίʔυ͕ଘࡏ͢Δͱ͢Δ • n=35, e=5 ͕Θ͔͍ͬͯΔͱ͖ɺҎԼͷ3ͭͷ҉߸จΛղಡͯ͠Ͷ • 23,
24, 1 • ώϯτ1: c^d mod n Ͱ෮߸Ͱ͖Δɻd de ≡ 1 (mod (p-1)(q-1)) • ώϯτ2: n = pq ͱͳΔpqʹૉҼղͰ͖Ε͋ͱܭࢉ͢Δ͚ͩ
ͨ͑͜ • n 35͔ͩΒୈײͰ 5 * 7 ͷૉҼղͰ͖Δ • Αͬͯd
5d ≡ 1 mod (5 - 1)(7 - 1) • ܭࢉ͢Δͱ5d - 1 ≡ 0 mod 24 ͱͳΓɺd = 5 ͕͋ͯ·Δ͜ͱ͕Θ͔Δ • ͋ͱ 23^5 mod 35, 24^5 mod 35, 1^5 mod 35 ΛٻΊΔ͚ͩɻखͰΔ ͱ͖͍͚ͭͲΪϦࠜੑͰղ͚Δൣғ • ղ͘ͱ 18, 19, 1 ʹͳͬͯṖͷจࣈίʔυʹরΒ͠߹ΘͤΔͱ RSA ʹͳΔʂ
ϋϯζΦϯ͔ΒΘ͔Δ͜ͱ • ૉҼղ͑͞Ͱ͖ͨΒޙܭࢉ͢Δ͚ͩ • ୯७ܭࢉίϯϐϡʔλͷಘҙͱ͢Δͱ͜ΖͳͷͰͦ͜·Ͱ͍͚ νϣϩ͍ • RSAͷ͠͞ૉҼղͷࠔ͞ʹґڌ͍ͯ͠Δɻ͕͜͜ಥഁ͞Ε Δͱγϡοͱൿີ伴͕ܭࢉ͞ΕͪΌ͏
ૉҼղͷࠔੑͱ҆શૉ
ૉҼղ͖ͪʔͧʂ • ଟ߲ࣜ࣌ؒͰͱ͚ΔΞϧΰϦζϜΈ͔ͭͬͯͳ͍ͷ… • ࢦ͔͔࣌ؒΔ͔ΒͭΒ͍ͷ… • ରͱͳΔૉͷܻ͕૿͑Ε૿͑Δ΄ͲΞϗΈ͍ͨʹ͔͔࣌ؒΔ • 200ܻ *
200ܻ͙Β͍ͩͱ͍·ͷεύίϯͰԯ͔͔ΔΑ͏Ͱ͢ (ࢦ͔͔࣌ؒΔͱ͍͏ͱ͜Ζ·Ͱ͔ͬͯ͠ͳ͍͔ΒͲ͏͍͏ܭࢉ Ͱԯͱ͍ͬͯΔͷ͔Βͳ͍)
ૉҼղޮΑ͘Ͱ͖ͳ͍ʁ • p-1๏ͱ͍͏ͷ͕͋Δ • ͘Θ͍͔͚͘͠Εͯͳ͍͚ͲɺϑΣϧϚʔͷখఆཧΛ͔ͭͬ ͨߟ͑ํͰɺૉp͔Β-1ͨ͠ͱ͖ʹখ͞ͳૉͲ͏͠ͷੵʹͳͬͯ ΔͱޮΑ͘ܭࢉͰ͖ΔΒ͍͠ • Ͱ͔͍ૉҼ͕;͘·ΕͯΔͱp-1๏ޮΑ͘Ͱ͖ͳ͍
҆શૉͱ • p, qͷ૬ҧͳૉ͕͋ͬͨͱ͖ p = 2q +1 ͱͳΔૉ •
p-1๏p-1ʹͰ͔͍ૉҼ͕͋Δͱޮ͕͋Βͳ͍ͷΛࢥ͍ग़͢ͱɺ҆શ ૉp-1๏ʹͱ͔ͬͯͳΓ૬खͨ͘͠ͳ͍(p-1ͷૉҼʹ͍͍ͩͨp/2 ͷαΠζͷόΧσΧૉ͕͋ΔͷͰ) • ҉߸తͳڧΛͭૉੜͱɺेେ͖͍҆શૉΛͭͬͯ͘͘ΕΔ ͬͯ͜ͱͩͧʂ͜͜ςετʹग़·͢ • ेͳܻͷ҆શૉͷੵ·͋ૉҼղ͢ΔͷແཧΖͱͳ͍ͬͯΔ
ਂງΓ͍ͨਓ͚ RSAཧղͷϩʔυϚοϓ
҉߸Խ/෮߸ཱ͕͢Δ͜ͱ Λཧղ͢ΔͨΊʹඞཁͬΆ͍ͭ • ϑΣϧϚʔͷখఆཧ • ؆୯Ί • ΦΠϥʔͷఆཧ • ϑΣϧϚʔͷఆཧ๏p͕ૉͰ͋Δඞཁ͕͚͋ͬͨͲɺͦΕΛҰ
ൠʹ֦ுͯ͠ޓ͍ʹૉͳa, nͰ͋Εཱ͢ΔΑ͏ʹͨͭ͠ • ͜ΕͰূ໌ͯ͠Δ͜ͱଟ͍͚ͲϑΣϧϚʔͷখఆཧͱେମ͓ͳ͡
de ≡ 1 (mod (p-1)(q-1)) ΛٻΊΔํ๏ ͷཧղʹඞཁͬΆ͍ͭ • ܈, ,
ମͷݴ༿ͷఆٛ͘Β͍ • ͷͪͷূ໌ʹ͠Εͬͱग़͖ͯͯͳΜͩ͜ΕͱͳΔ • ୯Ґݩ, ٯݩ͋ͨΓݴ༿ͷҙຯ͕Θ͔ΔͱΑ͛͞ • ϕζʔͷࣜ • ax+by=c͕࣮ղΛ࣋ͭͳΒcgcd(a,b)ͷഒͩͧͱ͍͏ͭɻݸਓతʹࠓճಡΜͩূ໌ͰҰ൪Ή͔ͣͬͨ • ϢʔΫϦουޓআ๏ • gcd(a,b)ΛޮΑ͘ͱΊΔΞϧΰϦζϜɻ͜Εূ໌͕؆୯ • ֦ுϢʔΫϦουޓআ๏ • ϕζʔͷࣜΛຬͨ͢ղΛ୳ࡧͰ͖Δɻ࣮ͱͯ͠ϢʔΫϦουޓআ๏ʹໟ͕ੜ͑ͨఔ • ͍ͭ͜Ͱ༨ͷٯݩ͕ͩͤΔઆ໌ผ్ಡ·ͳ͍ͱΘ͔Β͵͔
҆શͳn=pqΛ࡞Δํ๏ ͷཧղʹඞཁͬΆ͍ͭ • ૉੜΞϧΰϦζϜਖ਼͓͍͖Εͯͳ͍ • దͳૉͬΆ͍ͭ͘Δ -> ߴͳૉఆʂͷྲྀΕ͕͓͓͍ɻߴͳૉ ఆ֬తͳΞϧΰϦζϜ͔ͬΓ͔ͩΒෳճ܁Γฦͯ͠ޡݕΛ ͛͞Δ(n=10ͱ͔)
• Miller-Rabin๏: ૉ͡Όͳ͍ʹOKग़ͪ͠Ό͏ͷ25%ҎԼ • Baillie-PSW๏: ͍͔ͭ͘ͷૉఆΞϧΰϦζϜΛΈ߹Θͤͯຐվͨ͠ Έ͍ͨͳͭʁͪΌΜͱͬͯͳ͍͚ͲGoͱ͔ͰΘΕͯΔ͔ΒΑͦ͞͏
҆શͳn=pqΛ࡞Δํ๏ ͷཧղʹඞཁͬΆ͍ͭ • ૉੜΞϧΰϦζϜਖ਼͓͍͖Εͯͳ͍ • దͳૉͬΆ͍ͭ͘Δ -> ߴͳૉఆʂͷྲྀΕ͕͓͓͍ɻߴͳૉ ఆ֬తͳΞϧΰϦζϜ͔ͬΓ͔ͩΒෳճ܁Γฦͯ͠ޡݕΛ ͛͞Δ(n=10ͱ͔)
• Miller-Rabin๏: ૉ͡Όͳ͍ʹOKग़ͪ͠Ό͏ͷ25%ҎԼ • Baillie-PSW๏: ͍͔ͭ͘ͷૉఆΞϧΰϦζϜΛΈ߹Θͤͯຐվͨ͠ Έ͍ͨͳͭʁͪΌΜͱͬͯͳ͍͚ͲGoͱ͔ͰΘΕͯΔ͔ΒΑͦ͞͏ ͪͳΈʹ҆શૉͷੜʹ͍ͭͯ͋Μ· Γ͏·ͬͯ͘ͳ͍ؾ͕͍ͯͯ͠ɺ ૉʹҙͷૉఆͰૉRΛͭͬͨ͘ޙ R ͕ૉ͔͓͔ΘΓఆͯ͠ૉͩͬͨ Β͍ͦͭΛQͱͯ͠ฦ͢Έ͍ͨͳงғؾ͕͋ Δ ͪΌΜͱௐ͖Εͯͳ͍͚Ͳײతʹͦ Ε͕ૣͦ͏
RSAʹ͍ͭͯͷઆ໌ ͜Εʹͯऴྃ