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
470
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
680
バイナリを眺めてわかる gob encoding の仕様と性質、適切な使い方 / understanding gob encoding
convto
6
3.6k
Other Decks in Technology
See All in Technology
今さら理解するウェブフォントver.2026
takanorip
3
770
スキマバイトという雇用形態は存在しないので、雇用期間1日のアルバイト契約を事業者とワーカーが結ぶ手続きを支えるのがタイミーなんです
akitoshiga
0
200
『SAR衛星データ解析入門』のご紹介とその応用
syuchimu
0
120
Rustuna: Rustによる高速なOptuna実装
pfn
PRO
0
190
オントロジーって 結局なにもの? AI エージェントに「意味」を渡す知識設計の話
greenmidori
0
190
AI コーディングと人間の認知スループット / CTO Night & Day 2026 Morning Session / AI Coding and Human Cognitive Throughput
prog893
4
1k
Code for Security プロジェクト紹介 2026年10月
yu23ki14
0
110
エンタメ企業のM&Aを支えるデータ基盤 ― 統合から店舗のリアルタイム分析まで / Data Engineering Summit 2026
genda
0
170
DWH の限界突破! AI エージェント向け爆速リアルタイムデータ基盤 ClickHouse
jozono
1
470
QA4AI 2026-Oct 生成AI時代の品質保証
tokuty
1
860
スプシの手作業からの解脱 ~更新はClaude Codeに、見せ方と使い方はGASアプリに任せる~
kentarofujii
0
150
AI駆動開発の時代になったのでトヨタ生産方式から見直す
terurou
7
6k
Featured
See All Featured
30 Presentation Tips
portentint
PRO
1
430
brightonSEO & MeasureFest 2025 - Winning Strategies for Black Friday CRO & PPC - Christian Goodrich
cargoodrich
3
870
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
260
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
270
For a Future-Friendly Web
brad_frost
184
10k
Done Done
chrislema
187
17k
Ten Tips & Tricks for a 🌱 transition
stuffmc
1
270
Fantastic passwords and where to find them - at NoRuKo
philnash
53
4k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
50
10k
Scaling GitHub
holman
464
140k
Designing Experiences People Love
moore
143
24k
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ʹ͍ͭͯͷઆ໌ ͜Εʹͯऴྃ