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
rsa_understanding_memo
Search
convto
November 26, 2021
Technology
760
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
rsa_understanding_memo
RSA暗号の暗号化/復号処理とその証明など
社内勉強会で話した内容からそのまま公開できない面白い要素を抜いたものです
convto
November 26, 2021
More Decks by convto
See All by convto
標準パッケージに uuid が追加された 背景から見る Go らしい意思決定 / go_127_uuid_decision
convto
5
11k
Go 1.27 の標準パッケージに uuid が入った!のでいろいろ喋る / go_127_std_go_uuid
convto
3
940
monorepo の Go テストをはやくした〜い!~最小の依存解決への道のり~ / faster-testing-of-monorepos
convto
3
750
詳解!defer panic recover のしくみ / Understanding defer, panic, and recover
convto
0
480
MCPと認可まわりの話 / mcp_and_authorization
convto
2
1.8k
バクラクの認証基盤の成長と現在地 / bakuraku-authn-platform
convto
4
2.5k
gob バイナリが Go バージョンによって 出力が変わることについて調べてみた / Investigating How gob Binary Output Changes Across Go Versions
convto
0
190
Go 関連の個人的おもしろCVE 5選 / my favorite go cve
convto
3
690
バイナリを眺めてわかる gob encoding の仕様と性質、適切な使い方 / understanding gob encoding
convto
6
3.6k
Other Decks in Technology
See All in Technology
AI導入は済んだ。次は統制を作り替える番だ_AI×開発組織 Summit 2026
techtekt
PRO
0
470
会社説明資料
persolserverworks
0
9.8k
20年間 SNS サービス「GREE」 を支えた技術の刷新と、長期運用サービスの Kubernetes へのリアーキテクト
gree_tech
PRO
0
100
専門領域のAIをどう評価するか
bengo4com
2
370
SAENM ~Jupyterで残すPoCの試行錯誤、未来の自分と仲間を助ける記録!~
terapyon
0
170
Code for Security プロジェクト紹介 2026年10月
yu23ki14
0
120
What Is JetBrains Air
x5gtrn
PRO
0
130
LLM-as-a-Judgeは本当に信頼できるのか――評価器を評価する話
taka_aki
2
960
Running Kotlin + Quarkus with Lambda
nealle
1
4.1k
Browser Spec: Testing Hotwire with Ruby
takahashim
1
140
M5Stackで作る BLEマウス GPSログの世界
tomokusaba
PRO
0
450
S3 Filesで挑む! 八戸せんべい汁の食べ頃問題
usanchuu
0
140
Featured
See All Featured
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
630
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.9k
Chasing Engaging Ingredients in Design
codingconduct
0
370
A Soul's Torment
seathinner
8
3.8k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
7k
Context Engineering - Making Every Token Count
addyosmani
9
1.2k
Facilitating Awesome Meetings
lara
57
7.2k
How to Talk to Developers About Accessibility
jct
2
590
The browser strikes back
jonoalderson
0
1.8k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.8k
Optimising Largest Contentful Paint
csswizardry
37
4k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
310
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ʹ͍ͭͯͷઆ໌ ͜Εʹͯऴྃ