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
600
rsa_understanding_memo
RSA暗号の暗号化/復号処理とその証明など
社内勉強会で話した内容からそのまま公開できない面白い要素を抜いたものです
convto
November 26, 2021
Tweet
Share
More Decks by convto
See All by convto
gob バイナリが Go バージョンによって 出力が変わることについて調べてみた / Investigating How gob Binary Output Changes Across Go Versions
convto
0
94
Go 関連の個人的おもしろCVE 5選 / my favorite go cve
convto
3
390
バイナリを眺めてわかる gob encoding の仕様と性質、適切な使い方 / understanding gob encoding
convto
6
2.5k
みんなでたのしむ math/big / i love math big
convto
0
240
Go1.22からの疑似乱数生成器について/go-122-pseudo-random-generator
convto
2
700
Go1.20からサポートされるtree構造のerrの紹介と、treeを考慮した複数マッチができるライブラリを作った話/introduction of tree structure err added since go 1_20
convto
0
1k
byte列のbit表現を得るencodingライブラリ作った
convto
1
1.2k
Go runtimeの歩き方/how to follow go runtime function
convto
1
970
入出金ドメインの苦労話と解決へのアプローチ/funds in/out difficulties and solutions
convto
2
1.3k
Other Decks in Technology
See All in Technology
AWS CDK コントリビュート はじめの一歩
yendoooo
1
120
サーバシステムを無理なくコンテナ移行する際に伝えたい4つのポイント/Container_Happy_Migration_Method
ozawa
1
110
どっちの API SHOW?SharePoint 開発における SharePoint REST API Microsoft Graph API の違い / Which API show? Differences between Microsoft Graph API and SharePoint REST API
karamem0
0
110
ペアプログラミングにQAが加わった!職能を超えたモブプログラミングの事例と学び
tonionagauzzi
1
150
LINE Notify互換のボットを作った話
kenichirokimura
0
180
DevOps文化を育むQA 〜カルチャーバブルを生み出す戦略〜 / 20250317 Atsushi Funahashi
shift_evolve
1
110
問題解決に役立つ数理工学
recruitengineers
PRO
8
2.3k
Road to SRE NEXT@仙台 IVRyの組織の形とSLO運用の現状
abnoumaru
0
410
Javaの新しめの機能を知ったかぶれるようになる話 #kanjava
irof
3
5k
近年の PyCon 情勢から見た PyCon APAC のまとめ
terapyon
0
130
ペアーズにおけるData Catalog導入の取り組み
hisamouna
0
220
OPENLOGI Company Profile
hr01
0
61k
Featured
See All Featured
Into the Great Unknown - MozCon
thekraken
36
1.7k
How GitHub (no longer) Works
holman
314
140k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
177
52k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
12
1.4k
VelocityConf: Rendering Performance Case Studies
addyosmani
328
24k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
12k
Rebuilding a faster, lazier Slack
samanthasiow
80
8.9k
[RailsConf 2023] Rails as a piece of cake
palkan
53
5.4k
Embracing the Ebb and Flow
colly
85
4.6k
Making the Leap to Tech Lead
cromwellryan
133
9.2k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
60k
Facilitating Awesome Meetings
lara
53
6.3k
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ʹ͍ͭͯͷઆ໌ ͜Εʹͯऴྃ