ウィーナーの攻撃

Cryptographic attack on the RSA system

暗号学者マイケル・J・ウィーナーにちなんで名付けられたウィーナー攻撃は、 RSA暗号に対する暗号攻撃の一種です。この攻撃は、連分数表現を用いて、 dが小さい 場合に秘密鍵dを暴露します。

RSAの背景

架空の人物、アリスとボブは、安全に通信したい人々です。具体的には、アリスはボブに、ボブだけが読めるメッセージを送りたいと考えています。まずボブは 2 つの秘密の素数 pqを選択します。次に、RSA係数 N = pqを計算します。この RSA 係数は、暗号化指数eとともに公開されます。Ne公開鍵ペア( eN )を形成します。この情報を公開することで、誰でもボブへのメッセージを暗号化できます。復号化指数d はed ≡ 1 (mod λ ( N ))を満たします。ここで、λ ( N ) はカーマイケル関数を表しますが、オイラーのトーシェント関数φ ( N ) が使用されることもあります (注: これは乗法群( Z ‍ / ‍ N Z ) ×の順序であり、必ずしも巡回群ではありません)。暗号化指数eλ ( N ) も互いに素でなければならないため、モジュラー逆が存在する。N因数分解と秘密鍵dは秘密に保持されるため、ボブだけがメッセージを復号できる。秘密鍵ペアを( d , N )と表記する。メッセージMの暗号化はCM e (mod N )で与えられ、暗号文Cの復号はC d ≡ ( M e ) dM edM (mod N )で与えられる(オイラーの定理を使用)。

ユークリッドの互除法を用いると、 N因数分解が分かれば秘密鍵dを効率的に復元できる。秘密鍵dが分かれば、 Nの法を効率的に因数分解できる[1]

小さな秘密鍵

RSA暗号システムにおいて、ボブはRSA復号性能を向上させるために、大きな乱数ではなく小さな値のdを使用する傾向があるかもしれません。しかし、ウィーナーの攻撃は、 dに小さな値を選択すると、攻撃者がすべての秘密情報を復元できる、つまりRSAシステムを破ることができる安全でないシステムになることを示しています。この破綻は、 dが小さな値であるときに成立するウィーナーの定理に基づいています。ウィーナーは、 d < のときに攻撃者がdを効率的に見つけることができることを証明しました。 1/3N 1/4 . [2]

Wiener氏の論文では、彼の攻撃に対する高速な復号を可能にするいくつかの対策も提示されています。具体的には、以下の2つの手法が説明されています。

大きな公開鍵の選択e をe ′に置き換えます。ここで、e ′ = e + kλ ( N ) ( kの大きさ)です。e ′ が十分に大きい場合つまりe ′ > N 3/2 の場合、 dがどれだけ小さくてもウィーナー攻撃は適用できません

中国剰余定理を使うd pd (mod ( p − 1))d qd (mod ( q − 1))が両方とも小さいが、 d自体は小さくなるようにd を選択すると、 C高速復号化は次のように実行できます。

  1. まずM pC d p (mod p )M qC d q (mod q )を計算します。
  2. 中国剰余定理を用いて 、 MM p (mod p )かつMM q (mod q )を満たす0 ≤ M < Nの唯一の値を計算します。Mの結果は必要に応じてM C d (mod N )を満たします。重要なのは、 d mod λ ( N )の値が大きくなる可能性があるため、ウィーナー攻撃はここでは適用されないということです[要出典]

攻撃の仕組み

ご了承ください

λ ( N ) = lcm ( p 1 , q 1 ) = ( p 1 ) ( q 1 ) G = φ ( N ) G {\displaystyle \lambda (N)=\operatorname {lcm} (p-1,q-1)={\frac {(p-1)(q-1)}{G}}={\frac {\varphi (N)}{G}}}

ここでG = gcd( p − 1, q − 1)

ed ≡ 1 ( mod λ ( N ) )なので

e d = K × λ ( N ) + 1 {\displaystyle ed=K\times \lambda (N)+1}
e d = K G ( p 1 ) ( q 1 ) + 1 {\displaystyle ed={\frac {K}{G}}(p-1)(q-1)+1}

k = の定義K/gcd( K , G )およびg = G/gcd( K , G )、これを上記に代入すると次のようになります。

e d = k g ( p 1 ) ( q 1 ) + 1 {\displaystyle ed={\frac {k}{g}}(p-1)(q-1)+1}

dpqで割ると:

e p q = k d g ( 1 δ ) {\displaystyle {\frac {e}{pq}}={\frac {k}{dg}}(1-\delta )} 、 どこ δ = p + q 1 g k p q {\displaystyle \delta ={\frac {p+q-1-{\frac {g}{k}}}{pq}}}

だから、e/pq⁠はよりわずかに小さい/dg、前者は完全に公開情報で構成されています。しかし、確認([説明が必要])と推測を行う方法は依然として必要です。

簡単な代数演算と恒等式を用いることで、推測の正確さを検証することができる。[1]

ウィーナーの定理

N = pqとしq < p < 2 qとする。d <1/3N 1/4

ed≡1(modλ N となる⟨N e⟩与えられると、攻撃者はdを効率的に回復できる[2] [3]

公開鍵がN , e = ⟨90581, 17993⟩であると仮定する。攻撃はd を決定する必要がある。ウィーナーの定理と連分数を用いてd を近似するために、まず⁠の連分数展開を求める。e/。このアルゴリズムは分数を最小の項で求めることに注意してください。

e N = 17993 90581 = 1 5 + 1 29 + + 1 3 = [ 0 , 5 , 29 , 4 , 1 , 3 , 2 , 4 , 3 ] {\displaystyle {\frac {e}{N}}={\frac {17993}{90581}}={\cfrac {1}{5+{\cfrac {1}{29+\dots +{\cfrac {1}{3}}}}}}=\left[0,5,29,4,1,3,2,4,3\right]}

連分数展開によれば、e/、すべての収束/dは次のとおりです。

k d = 0 , 1 5 , 29 146 , 117 589 , 146 735 , 555 2794 , 1256 6323 , 5579 28086 , 17993 90581 {\displaystyle {\frac {k}{d}}=0,{\frac {1}{5}},{\frac {29}{146}},{\frac {117}{589}},{\frac {146}{735}},{\frac {555}{2794}},{\frac {1256}{6323}},{\frac {5579}{28086}},{\frac {17993}{90581}}}

最初の収束はNの因数分解を生じないことが確認できます。しかし、収束1/5利回り

φ ( N ) = e d 1 k = 17993 × 5 1 1 = 89964 {\displaystyle \varphi (N)={\frac {ed-1}{k}}={\frac {17993\times 5-1}{1}}=89964}

さて、この方程式を解くと

x 2 ( ( N φ ( N ) ) + 1 ) x + N = 0 {\displaystyle x^{2}-\left(\left(N-\varphi (N)\right)+1\right)x+N=0}
x 2 ( ( 90581 89964 ) + 1 ) x + 90581 = 0 {\displaystyle x^{2}-\left(\left(90581-89964\right)+1\right)x+90581=0}
x 2 618 x + 90581 = 0 {\displaystyle x^{2}-618x+90581=0}

すると、 x = 379; 239となる根が見つかる。したがって、因数分解が見つかった。

N = 90581 = 379 × 239 = p × q {\displaystyle N=90581=379\times 239=p\times q}

係数N = 90581の場合、ウィーナーの定理は次の場合に成り立つ ことに注意する。

d < N 1 / 4 3 5.7828 {\displaystyle d<{\frac {N^{1/4}}{3}}\approx 5.7828}

ウィーナーの定理の証明

証明は連分数を用いた近似に基づいている。[2]

ed = 1 (mod λ ( N ))なので、 ed ( N ) = 1となるk が存在する。したがって、

| e λ ( N ) k d | = 1 d λ ( N ) {\displaystyle \left|{\frac {e}{\lambda (N)}}-{\frac {k}{d}}\right\vert ={\frac {1}{d\lambda (N)}}}

G = gcd( p − 1, q − 1)とします。λ ( N ) の代わりにφ ( N )を使用すると、証明はG = 1に置き換えられφ ( N ) はλ ( N ) に置き換えられることに注意してください

次に⁠を掛けて1/G

| e φ ( N ) k G d | = 1 d φ ( N ) {\displaystyle \left|{\frac {e}{\varphi (N)}}-{\frac {k}{Gd}}\right\vert ={\frac {1}{d\varphi (N)}}}

したがって、/神様⁠ はの近似値ですe/φ ( N )⁠ 。攻撃者はφ ( N )を知らないがN を使って近似値を求める可能性がある。実際、 φ ( N ) = Npq + 1かつp + q − 1 < 3 Nなので、以下の式が成り立つ。

| p + q 1 | < 3 N {\displaystyle \left\vert p+q-1\right\vert <3{\sqrt {N}}}
| N φ ( N ) | < 3 N {\displaystyle \left\vert N-\varphi (N)\right\vert <3{\sqrt {N}}}

φ ( N )の代わりにNを使用すると次のようになります。

| e N k G d | = | e d G k N N G d | = | e d G k φ ( N ) k N + k φ ( N ) N G d | = | 1 k ( N φ ( N ) ) N G d | < | k ( N φ ( N ) ) N G d | ( 0 < | N φ ( N ) | ) < | 3 k N N G d | = 3 k N N N G d 3 k d N {\displaystyle {\begin{aligned}\left\vert {\frac {e}{N}}-{\frac {k}{Gd}}\right\vert &=\left\vert {\frac {edG-kN}{NGd}}\right\vert \\&=\left\vert {\frac {edG-k\varphi (N)-kN+k\varphi (N)}{NGd}}\right\vert \\&=\left\vert {\frac {1-k(N-\varphi (N))}{NGd}}\right\vert \\&<\left\vert {\frac {-k(N-\varphi (N))}{NGd}}\right\vert (\because 0<|N-\varphi (N)|)\\&<\left\vert {\frac {3k{\sqrt {N}}}{NGd}}\right\vert ={\frac {3k{\sqrt {N}}}{{\sqrt {N}}{\sqrt {N}}Gd}}\leq {\frac {3k}{d{\sqrt {N}}}}\end{aligned}}}

ここで、 ( N ) = ed − 1 < ed なので ( N ) < ed となりますe < λ ( N )なので、 ( N ) < ed < λ ( N ) dとなり、以下の式が得られます。

k λ ( N ) < λ ( N ) d {\displaystyle k\lambda (N)<\lambda (N)d}
k < d {\displaystyle k<d}

k < dかつd < なので1/3N 1/4 . したがって次式が得られます。

(1) | e N k G d | < 1 d N 1 4 {\displaystyle \left\vert {\frac {e}{N}}-{\frac {k}{Gd}}\right\vert <{\frac {1}{dN^{\frac {1}{4}}}}}

d < 1/3N 1/4 2 d < 3 d、そして2 d < 3 d < N 1/4の場合、次の式が得られます。

2 d < N 1 / 4 {\displaystyle 2d<N^{1/4}} なので(2) 1 2 d > 1 N 1 / 4 {\displaystyle {\frac {1}{2d}}>{\frac {1}{N^{1/4}}}}

(1)と(2)から、

| e N k G d | < 3 k d N < 1 d 2 d = 1 2 d 2 {\displaystyle \left\vert {\frac {e}{N}}-{\frac {k}{Gd}}\right\vert <{\frac {3k}{d{\sqrt {N}}}}<{\frac {1}{d\cdot 2d}}={\frac {1}{2d^{2}}}}

もし| x1つの/b | <1/2 b 2、そして1つの/b⁠はxの収束なので、/神様⁠ はの収束の中に現れるe/。したがって、アルゴリズムは最終的に⁠を見つけることになります。/神様 . [さらに説明が必要]

参考文献

  1. ^ ab L. Render, Elaine (2007). Wiener's Attack on Short Secret Exponents. [リンク切れ]
  2. ^ abc ボネ, ダン. 「RSA暗号システムへの20年間の攻撃」(PDF) .通知. 46 (2).アメリカ数学会: 203–213 .
  3. ^ Wiener, Michael J. (1990). 「短いRSA秘密指数の暗号解析」. IEEE Transactions on Information Theory . 36 (3). IEEE : 553–558 . doi :10.1109/18.54902.

さらに読む

  • コッパースミス、ドン (1996). 低指数RSAと関連メッセージ. シュプリンガー・フェアラーク・ベルリン・ハイデルベルク.
  • Dujella, Andrej (2004). 「連分数と小さな秘密指数を持つRSA」arXiv : cs/0402052 .
  • Wiener 攻撃の Python 実装。
  • R. スティンソン、ダグラス (2002).暗号理論と実践(第2版). CRC Press Company. pp.  200– 204. ISBN 1-58488-206-9
Retrieved from "https://en.wikipedia.org/w/index.php?title=Wiener%27s_attack&oldid=1310158123"