流れる空の中で数学を。

とある数学好きの「手作りすうがく」と「気ままな雑記」。

【RSA暗号】適当にとった自然数eの割り算による素因数探索【未実装かつ自信なし】

Amazon.co.jp: Yoshiki Ueoka:作品一覧、著者略歴

数学関連の絶版本・品切れ本をコチラから購入できます!

RSA暗号解読に向けて試してみたこと

連分数によるRSA暗号の攻撃方法があることを知ったので、そこに着想を得て自分であれこれやってみた。この本に書いてありました。

 

RSA暗号については、過去記事を参照してください。

 

sky-time-math.hatenablog.jp

 

N=pqp,qも教えないけど、公開鍵eは教えているわけで、その意味でなんか数学的に関連はあって、N素因数分解しなくても、なんとかできるんじゃないかと思った次第。しかし、結局、公開鍵と秘密鍵の積はわからずじまいなので、普通の自然数eを法としたアルゴリズムをとりあえず考えてみた。

過去に考えたアルゴリズム

 過去に考えたアルゴリズムも一応紹介しておく。

 

 

 

 

eを法とする素因数探索アルゴリズム

N=pqを適当な自然数eで割った商をr、余りをsとすると、

\frac{N}{e}=r+\frac{s}{e}

同様にして、分かってない素数の組(p,q)について、p+q,(p-1)(q-1)eで割った余りをそれぞれ、\alpha,\beta\gamma,\deltaとすると、

\frac{p+q}{e}=\alpha+\frac{\beta}{e}

\frac{(p-1)(q-1)}{e}=\gamma+\frac{\delta}{e}

となる。ここで、既知の数は、r,sで、未知の数は、\alpha,\beta,\gamma,\deltaである。

ここで、次の関係式に注目する。

r+\frac{s}{e}

=\frac{N}{e}=\frac{(p-1)(q-1)+(p+q)-1}{e}

=\gamma+\alpha+\frac{\beta+\delta-1}{e}

ここで、ほとんどの場合、\delta+\beta-1\lt eと考えてもよさそうなので、そうしてみる。分子のeより大きい場合を考慮したければ、分子からeをひき、整数部分に1をたせばよい。

最初と最後の式を比較すると、

\gamma+\alpha=r

\beta+\delta-1=s

特に、上の等式をeについて解くと(solve r+s/x=g+a+(d+b-1)/x - Wolfram|Alpha)、

e=\frac{s+1-\beta-\delta}{\alpha+\gamma-r}

となる。0割りが発生しているので、この嘘を式変形前に戻って、整理し直すと、

e(\alpha+\gamma-r)=s+1-\beta-\delta

を得る。すなわち、 s+1-\beta-\deltaeで割り切れて、0ではない。

0 \lt \beta+\delta \lt s+1

|s+1-\beta-\delta| \lt 2e-1

に着目すると、 s+1-\beta-\deltaeで割った商は1-1である。ところが不等式評価により、商は次のように1だとわかる。

0 \lt s+1-e=\beta+\delta\gt 0

結局、

s+1+e=\beta+\delta

と表せるので、

\beta+\delta =ex+s+1  

\beta =e+s+1 -\delta \lt e 

 s+1 \lt \delta

また、こうして求まった、各s+1-\beta-\deltaに対して、e=\gcd(e,s+1-\beta-\delta)となり、約数1=(s+1-\beta-\delta)/eが計算できるが、これは、\alpha+\gamma-rに等しい。つまり、

r+1=\alpha+\gamma

\gamma=r+1-\alpha \gt r+1-N/e

となる。

 

不等式の評価

以上をまとめると、

\frac{N}{e}=r+\frac{s}{e}

 と計算したとき、

(p-1)(q-1)=N-(p+q)+1=\delta e+\gamma

p+q=N-\delta e-\gamma+1

pq=N

 であり、

 \delta \gt \s+1

\gamma\gt r+1-N/e

であることが分かった。後は、p+qを探索して、解と係数の関係を使って、2次方程式を解けば素因数p,qが求まる。どのような自然数eを適切に選べば、\delta,\gammaの探索範囲が狭まるかは謎である。

いまのところ、直観的には、\gammaの方が探索範囲が狭いように感じられる。気のせいかもしれないが……

 

どなたか実装してみたいよとかこのアルゴリズムダメじゃんとか言う人がいたら、twitterの@foxq0113までDMください。ここに、コメントしていただいても大丈夫ですが、あまり見ないこともあるので、反応が遅くなります。

 

最後に、繰り返しますが、今回のアルゴリズムはあまり自信がありません。