「RSA暗号の素因数分解法における各種方法の処理時間比較」
1. RSA暗号とは
2. 素因数判定
3. 素因数分解法
(研究では試行割算法・ρ法・楕円曲線法について調べます)
3,1. 試行割算法
3,2. ρ法(モンテカルロ法)
3,3. p−1法
3,4. p+1法
3,5. 連分数法
3,6. 複数多項式二次ふるい法
3,7. 楕円曲線法
4.データ
4,1. 試行割算法
4,2. ρ法(モンテカルロ法)
4,3. 楕円曲線法
1.はじめに
インターネットの普及により電子商取引が本格的な広がりを見せ始めた。しかしインターネットはハッカーにとって格好の犯罪の舞台となる。電子的に送金される決済データを横取りしたり、クレジットカード番号を盗み見したり、安全・確実に商品の売買や代金の振り込みをするには、暗号技術が必要となる。現在最も使われているRSA暗号の安全性について研究する。
2.問題設定
素因数分解法(試行割り算法・ρ法・連分数法…etc)についてプログラムを作りそれぞれの処理時間を比較する。ただし、分解する数はあらかじめn=p*q(p.qは素数)と設定しておく。
3.問題の解法
3.1試行割り算法(1st)
合成数nを2,3,4…と順に割って行く、必ず素数p.qは見つかるが一番時間がかかる。
3.2試行割り算法(2nd)
合成数nを2,3,5,7…と順に割って行く、上記の方法より幾分処理時間は速くなるが時間はかかる。
4.得られた結果
試行割り算法
|
合成数桁 |
素数桁 |
分解式 |
処理時間(秒) 試行割り算法1st |
試行割り算法2nd |
|
7桁 |
4桁 |
1018081 |
4 |
3 |
|
9桁 |
5桁 |
100140049 |
61 |
35 |
|
11桁 |
6桁 |
10000600009 |
642 |
312 |
|
13桁 |
7桁 |
1000006000009 |
8076 |
3822 |
|
15桁 |
8桁 |
100000380000361 |
95417 |
37883 |
5.まとめ
試行割り算法では合成数が2桁、分解式が100倍づつ増えていくと処理時間は約10倍となった。試行割り算(2nd)では割っていく数が1/2となるので処理時間は約半分となった。15桁で処理時間が約26時間となり17桁では約260時間(10日)程かかるのでこの辺りで止めることにした。
今後の課題は他の素因数分解法についてプログラムを作り比較していきたいと思う。
1.秘密鍵と公開鍵の作成
まず、暗号化を行う前に、予め以下の手順に従って秘密鍵と公開鍵を作成しておく必要があります。
1,2つの大きな素数p、qを選択する。
2,n=pqとφ(n)=(p−1)(q−1)を計算する。このnを係数と呼ぶ。
3,gcd(e,φ(n))=1の関係をもつ乱数e(公開指数)を選択する。この公開指数eと係数nが公開鍵(e,n)となる。
4,de=1 mod φ(n)となるd(秘密指数)を計算する。この秘密指数dと係数nが秘密鍵(d,n)となる。
5,公開鍵(e,n)を公開する。p、 q、dは誰にも知られないようにしておく。