暗号学者マイケル・J・ウィーナーにちなんで名付けられたウィーナー攻撃は、 RSA暗号 に対する暗号攻撃 の一種です。この攻撃は、連分数表現を用いて、 d が小さい 場合に秘密鍵dを暴露します。
RSAの背景 架空の人物、アリスとボブは、 安全に通信したい人々です。具体的には、アリスはボブに、ボブだけが読めるメッセージを送りたいと考えています。まずボブは 2 つの秘密の素数 p とq を選択します。次に、RSA係数 N = pq を計算します。この RSA 係数は、暗号化 指数e とともに公開されます。N とe は 公開鍵ペア( e 、N ) を形成します。この情報を公開することで、誰でもボブへのメッセージを暗号化できます。 復号化 指数d は ed ≡ 1 (mod λ ( N )) を満たします。ここで、λ ( N ) は カーマイケル関数 を表しますが、オイラーのトーシェント関数 φ ( N ) が使用されることもあります (注: これは乗法群 ( Z / N Z ) × の順序であり、必ずしも巡回群ではありません)。暗号化指数e とλ ( N ) も互いに素で なければならないため、モジュラー逆 が存在する。N の因数分解 と秘密鍵d は秘密に保持されるため、ボブだけがメッセージを復号できる。秘密鍵ペアを ( d , N ) と表記する。メッセージMの暗号化は C ≡ M e (mod N ) で与えられ、暗号文C の復号はC d ≡ ( M e ) d ≡ M ed ≡ M (mod N ) で与えられる(オイラーの定理を 使用)。
ユークリッドの互除法 を用いると、 N の因数分解が 分かれば秘密鍵dを 効率的に復元できる。秘密鍵dが分かれば、 N の法を効率的に因数分解できる。[ 1 ]
小さな秘密鍵 RSA暗号システムにおいて、ボブは RSA 復号 性能を向上させるために、大きな乱数ではなく小さな値のdを使用する傾向があるかもしれません。しかし、ウィーナーの攻撃は、 d に小さな値を選択すると、攻撃者がすべての秘密情報を復元できる、つまりRSAシステムを破ることができる安全でないシステムになることを示しています。この破綻は、 d が小さな値であるときに成立するウィーナーの定理に基づいています。ウィーナーは、 d < のときに攻撃者がdを 効率的に見つけることができることを証明しました。1 / 3 北 1/4 . [ 2 ]
Wiener氏の論文では、彼の攻撃に対する高速な復号を可能にするいくつかの対策も提示されています。具体的には、以下の2つの手法が説明されています。
大きな公開鍵の選択 :e を e ′に置き換えます。ここで、e ′ = e + k ⋅ λ ( N ) ( k の大きさ)です。e ′ が十分に大きい場合、 つまりe ′ > N 3/2 の 場合、 d がどれだけ小さくてもウィーナー攻撃は適用できません。
中国剰余定理 を使う :d p ≡ d (mod ( p − 1)) とd q ≡ d (mod ( q − 1)) が両方とも小さいが、 d 自体は小さくなるようにd を選択すると、 C の高速復号化は 次のように実行できます。
まずM p ≡ C d p (mod p ) とM q ≡ C d q (mod q ) を計算します。 中国剰余定理を 使用して 、 M ≡ M p (mod p ) およびM ≡ M q (mod q )を満たす0 ≤ M < N の一意の値を計算します。 M の結果は、必要に応じてM ≡ C d (mod N ) を満たします。重要な点は、 d mod λ ( N ) の値が大きくなる可能性があるため、ここではウィーナー攻撃は適用されないことです。
攻撃の仕組み ご了承ください
λ ( 北 ) = 1cm ( p − 1 、 q − 1 ) = ( p − 1 ) ( q − 1 ) G = φ ( 北 ) 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 × λ ( 北 ) + 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 = け グラム ( p − 1 ) ( q − 1 ) + 1 {\displaystyle ed={\frac {k}{g}}(p-1)(q-1)+1} 。dpq で割ると:
e p q = け d グラム ( 1 − δ ) {\displaystyle {\frac {e}{pq}}={\frac {k}{dg}}(1-\delta )} 、 どこ。δ = p + q − 1 − グラム け p q {\displaystyle \delta ={\frac {p+q-1-{\frac {g}{k}}}{pq}}} だから、 e / pq は よりわずかに小さいけ / dg 、前者は完全に公開情報 で構成されています。しかし、確認と推測の手段は依然として必要です。
簡単な代数 演算と恒等式 を用いることで、推測の正確さ を確認することができる。[ 1 ]
ウィーナーの定理N = pq とし、 q < p < 2 q とする。d < 1 / 3 N 1/4 。
ed≡1 (modλ ( N ) ) の⟨N , e⟩ が 与えられると、攻撃者はdを 効率 的に回復できる。[ 2 ] [ 3 ]
例 公開鍵が⟨ N , e ⟩ = ⟨90581, 17993⟩ であると仮定する。攻撃はd を決定する必要がある。ウィーナーの定理と 連分数 を用いてd を 近似するために、まずの 連分数 展開を求める。e / 北 。このアルゴリズムは分数を 最小の項で求めることに注意してください。
e 北 = 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 は次のとおりです。
け 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 利回り
φ ( 北 ) = e d − 1 け = 17993 × 5 − 1 1 = 89964 {\displaystyle \varphi (N)={\frac {ed-1}{k}}={\frac {17993\times 5-1}{1}}=89964} さて、この方程式を解くと
× 2 − ( ( 北 − φ ( 北 ) ) + 1 ) × + 北 = 0 {\displaystyle x^{2}-\left(\left(N-\varphi (N)\right)+1\right)x+N=0} × 2 − ( ( 90581 − 89964 ) + 1 ) × + 90581 = 0 {\displaystyle x^{2}-\left(\left(90581-89964\right)+1\right)x+90581=0} × 2 − 618 × + 90581 = 0 {\displaystyle x^{2}-618x+90581=0} すると、 x = 379; 239 となる根が 見つかる。したがって、因数分解が見つかった。
北 = 90581 = 379 × 239 = p × q {\displaystyle N=90581=379\times 239=p\times q} 。係数N = 90581 の場合、ウィーナーの定理は次の場合に成り立つ ことに注意する。
d < 北 1 / 4 3 ≈ 5.7828 {\displaystyle d<{\frac {N^{1/4}}{3}}\approx 5.7828} 。
ウィーナーの定理の証明証明は連分数を用いた近似に基づいている。[ 2 ]
ed = 1 (mod λ ( N )) なので、 ed − kλ ( N ) = 1 となるk が 存在する。したがって、
| e λ ( 北 ) − け d | = 1 d λ ( 北 ) {\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 φ ( 北 ) − け G d | = 1 d φ ( 北 ) {\displaystyle \left|{\frac {e}{\varphi (N)}}-{\frac {k}{Gd}}\right\vert ={\frac {1}{d\varphi (N)}}} したがって、 け / 神様 は の近似値ですe / φ ( N ) 。攻撃者はφ ( N )を知らないが、N を使って近似値を求める可能性がある。実際、 φ ( N ) = N − p − q + 1 かつp + q − 1 < 3 √ N なので、以下の式が成り立つ。
| p + q − 1 | < 3 北 {\displaystyle \left\vert p+q-1\right\vert <3{\sqrt {N}}} | 北 − φ ( 北 ) | < 3 北 {\displaystyle \left\vert N-\varphi (N)\right\vert <3{\sqrt {N}}} φ ( N )の代わりにN を使用すると次のようになります。
| e 北 − け G d | = | e d G − け 北 北 G d | = | e d G − け φ ( 北 ) − け 北 + け φ ( 北 ) 北 G d | = | 1 − け ( 北 − φ ( 北 ) ) 北 G d | < | − け ( 北 − φ ( 北 ) ) 北 G d | ( ∵ 0 < | 北 − φ ( 北 ) | ) < | 3 け 北 北 G d | = 3 け 北 北 北 G d ≤ 3 け d 北 {\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}}} ここで、kλ ( N ) = ed − 1 < ed なので 、kλ ( N ) < ed となります 。e < λ ( N ) なので、kλ ( N ) < ed < λ ( N ) d となり、以下の式が得られます。
け λ ( 北 ) < λ ( 北 ) d {\displaystyle k\lambda (N)<\lambda (N)d} け < d {\displaystyle k<d} k < d かつd < なので1 / 3 N 1/4 . したがって次式が得られます。
(1)| e 北 − け G d | < 1 d 北 1 4 {\displaystyle \left\vert {\frac {e}{N}}-{\frac {k}{Gd}}\right\vert <{\frac {1}{dN^{\frac {1}{4}}}}} d < 1 / 3 N 1/4 、 2 d < 3 d 、そして2 d < 3 d < N 1/4 の場合、次の式が得られます。
2 d < 北 1 / 4 {\displaystyle 2d<N^{1/4}} なので(2)1 2 d > 1 北 1 / 4 {\displaystyle {\frac {1}{2d}}>{\frac {1}{N^{1/4}}}} (1)と(2)から、
| e 北 − け G d | < 3 け d 北 < 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}}}} もし| x − 1つの / b | < 1 / 2 b 2 、そして 1つの / b はx の収束なので、 け / 神様 は の収束の中に現れるe / 北 。したがって、アルゴリズムは最終的にを見つけることになります。 け / 神様 。
参考文献
さらに読む