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
660
rsa_understanding_memo
RSA暗号の暗号化/復号処理とその証明など
社内勉強会で話した内容からそのまま公開できない面白い要素を抜いたものです
convto
November 26, 2021
Tweet
Share
More Decks by convto
See All by convto
monorepo の Go テストをはやくした〜い!~最小の依存解決への道のり~ / faster-testing-of-monorepos
convto
2
560
詳解!defer panic recover のしくみ / Understanding defer, panic, and recover
convto
0
310
MCPと認可まわりの話 / mcp_and_authorization
convto
2
830
バクラクの認証基盤の成長と現在地 / bakuraku-authn-platform
convto
4
1.5k
gob バイナリが Go バージョンによって 出力が変わることについて調べてみた / Investigating How gob Binary Output Changes Across Go Versions
convto
0
140
Go 関連の個人的おもしろCVE 5選 / my favorite go cve
convto
3
500
バイナリを眺めてわかる gob encoding の仕様と性質、適切な使い方 / understanding gob encoding
convto
6
3k
みんなでたのしむ math/big / i love math big
convto
0
290
Go1.22からの疑似乱数生成器について/go-122-pseudo-random-generator
convto
2
890
Other Decks in Technology
See All in Technology
What's new in OpenShift 4.20
redhatlivestreaming
0
350
ラスベガスの歩き方 2025年版(re:Invent 事前勉強会)
junjikoide
0
530
プレイドのユニークな技術とインターンのリアル
plaidtech
PRO
1
480
パフォーマンスチューニングのために普段からできること/Performance Tuning: Daily Practices
fujiwara3
2
140
JAWS UG AI/ML #32 Amazon BedrockモデルのライフサイクルとEOL対応/How Amazon Bedrock Model Lifecycle Works
quiver
1
100
現場の壁を乗り越えて、 「計装注入」が拓く オブザーバビリティ / Beyond the Field Barriers: Instrumentation Injection and the Future of Observability
aoto
PRO
1
680
RemoteFunctionを使ったコロケーション
mkazutaka
1
140
スタートアップの現場で実践しているテストマネジメント #jasst_kyushu
makky_tyuyan
0
140
serverless team topology
_kensh
3
240
CREが作る自己解決サイクルSlackワークフローに組み込んだAIによる社内ヘルプデスク改革 #cre_meetup
bengo4com
0
360
20251027_findyさん_音声エージェントLT
almondo_event
2
490
Amazon Athena で JSON・Parquet・Iceberg のデータを検索し、性能を比較してみた
shigeruoda
1
170
Featured
See All Featured
Making the Leap to Tech Lead
cromwellryan
135
9.6k
Product Roadmaps are Hard
iamctodd
PRO
55
11k
Become a Pro
speakerdeck
PRO
29
5.6k
Visualization
eitanlees
150
16k
Reflections from 52 weeks, 52 projects
jeffersonlam
355
21k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
34
2.3k
Code Reviewing Like a Champion
maltzj
526
40k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
23
1.5k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
130k
Producing Creativity
orderedlist
PRO
348
40k
How GitHub (no longer) Works
holman
315
140k
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ʹ͍ͭͯͷઆ໌ ͜Εʹͯऴྃ