logo

ポラードのp-1素因数分解アルゴリズムの証明 📂整数論

ポラードのp-1素因数分解アルゴリズムの証明

アルゴリズム 1

準素数 NN が与えられたとする。ppスムーズ 素数であれば、NN の素因数分解 N=pqN = pq は次のように求めることができる。


ステップ 1.

a:=2a := 2L:=1L := 1 を設定する。


ステップ 2.

d:=gcd(aL1,N)d := \gcd ( a^{L} - 1 , N ) を計算する。


ステップ 3.

1<d<N1< d < N ならば、NN約数 d=pd = p を見つけたことになり、終了する。それ以外の場合は、L:=(L+1)!L := (L+1)! のように更新する。LL があまりに大きくなった場合は、L:=1L := 1 に戻り、a:=a+1a : = a+ 1 のように更新する。その後、ステップ 2 に戻る。

説明

ポラードの p1p-1 素因数分解アルゴリズムは、ポリグ-ヘルマンアルゴリズムのように スムーズ素数 の弱点を利用する。一つの素数が弱点になって、素因数分解問題が簡単に解けてしまう。この攻撃方法のため、素因数分解問題の難しさを利用した暗号システムは、秘密鍵としてスムーズ素数を使用できなくなる。

原則として、ステップ 1のように a=2a=2 から始める必要も、ステップ 2のように L=n!L = n! を使用する必要もない。ただ、pp がスムーズであれば、d:=gcd(aL1,N)d := \gcd ( a^{L} - 1 , N ) を成功させる確率が高いため、そのように使用されるだけだ。

証明

(p1)L(q1)L (p-1) \mid L \\ (q-1) \nmid L ppスムーズ であるから、L=n!L = n! に対して上記の条件を満たしやすいと仮定する。これは、ある i,jZi,j \in \mathbb{Z}kNk \in \mathbb{N} に対して、次のことが成立するということである。 L=i(p1)L=j(q1)+k \begin{align*} L =& i ( p -1 ) \\ L =& j ( q -1 ) + k \end{align*}

フェルマーの小定理: 素数 pppp と互いに素な整数 aa に対して、ap11(modp)a^{p-1} \equiv 1 \pmod{p}

(modp)\pmod{p} では aLa(p1)i1i1(modp) \begin{align*} a^{L} & \equiv a^{( p - 1 ) i } \\ & \equiv 1^{i} \\ & \equiv 1 \pmod{p} \end{align*} (modq)\pmod{q} では aLa(q1)j+k1jakak(modq) \begin{align*} a^{L} & \equiv a^{( q - 1 ) j + k } \\ & \equiv 1^{j} a^{k} \\ & \equiv a^{k} \pmod{q} \end{align*} ここで、k0k \ne 0 より、通常の場合は ak1(modq)a^{k} \ne 1 \pmod{q} である可能性が高い。これは、再び言えば paL1 p \mid a^{L} -1

qaL1 q \nmid a^{L} -1 これは、ppaL1a^{L} -1約数 であることを意味しており、ppNN約数 でもあるため、二つの数の最大公約数を計算すると p=gcd(aL1,N) p = \gcd \left( a^{L} - 1 , N \right)

関連項目

素因数分解問題の難しさを利用したセキュリティアルゴリズム

素因数分解問題に対する攻撃アルゴリズム


  1. Hoffstein. (2008). An Introduction to Mathematical Cryptography: p133~135. ↩︎