Class of cryptographic attacks
コッパースミス攻撃は、 コッパースミス法 に基づく 公開鍵暗号システム RSA に対する 暗号攻撃 の一種である 。コッパースミス法は、公開指数 e が小さい場合や秘密鍵の素因数が部分的にしか分かっていない場合にRSA攻撃に用いられる。
RSAの基礎
RSAシステムの公開鍵は整数 の組であり 、 Nは2つの素数 p と q の積です 。秘密鍵は、 を満たす整数 d で与えられます。同様に、秘密鍵はで与えられ 、 中国剰余定理を 用いて復号速度を向上させる 場合は、 CRT-RSA を参照してください。 メッセージ Mを暗号化すると 暗号文 が生成され、これを 計算する ことで復号できます 。
(
N
,
e
)
{\displaystyle (N,e)}
e
d
≡
1
(
mod
(
p
−
1
)
(
q
−
1
)
)
{\displaystyle ed\equiv 1{\pmod {(p-1)(q-1)}}}
d
p
≡
d
(
mod
p
−
1
)
{\displaystyle d_{p}\equiv d{\pmod {p-1}}}
d
q
≡
d
(
mod
q
−
1
)
{\displaystyle d_{q}\equiv d{\pmod {q-1}}}
C
≡
M
e
(
mod
N
)
{\displaystyle C\equiv M^{e}{\pmod {N}}}
d
{\displaystyle d}
C
d
≡
M
(
mod
N
)
{\displaystyle C^{d}\equiv M{\pmod {N}}}
低公開指数攻撃
暗号化 や署名の検証時間を短縮するには、小さな公開 指数 ( ) を使用すると便利です 。 [1] 実際には、 の一般的な選択肢は 3、17、65537 です 。 eのこれらの値は フェルマー素数 であり、 それぞれ および と 呼ばれることもあります 。 これらが選択される理由は、 指数モジュラー演算 が高速になるためです。また、このような を選択すると、 鍵生成 のステップ 1 で素数を生成およびテストする際に、および である か どうかをテストするのが簡単になります。このテストに合格しない または の値は 、その場で拒否できます。(さらに良いことに、 e が 素数で 2 より大きい場合は、 よりコストのかかるテスト を このテストに置き換えることができます 。)
e
{\displaystyle e}
e
{\displaystyle e}
(
2
16
+
1
)
{\displaystyle (2^{16}+1)}
F
0
,
F
2
{\displaystyle F_{0},F_{2}}
F
4
{\displaystyle F_{4}}
(
F
x
=
2
2
x
+
1
)
{\displaystyle (F_{x}=2^{2^{x}}+1)}
e
{\displaystyle e}
gcd
(
e
,
p
−
1
)
=
1
{\displaystyle \gcd(e,p-1)=1}
gcd
(
e
,
q
−
1
)
=
1
{\displaystyle \gcd(e,q-1)=1}
p
{\displaystyle p}
q
{\displaystyle q}
p
mod
e
≠
1
{\displaystyle p{\bmod {e}}\neq 1}
gcd
(
p
−
1
,
e
)
=
1
{\displaystyle \gcd(p-1,e)=1}
公開指数が小さく、 平文 が非常に短い場合、RSA 関数の反転が容易になる可能性があり、特定の攻撃が可能になります。
パディング スキーム により、メッセージの長さは完全になりますが、さらに公開指数を選択することを お勧めします。この値を使用すると、署名の検証には 17 回の乗算が必要ですが、 同様のサイズの乱数を使用する場合は約 25 回です。低い秘密指数 ( ウィーナーの攻撃を 参照) とは異なり、小さい秘密指数を使用する場合に適用される攻撃は、秘密鍵 d を復元できる 完全な 破綻からは程遠いものです。低い公開指数 RSA に対する最も強力な攻撃は、 ドン コッパースミス による次の定理に基づいています 。
m
{\displaystyle m}
e
=
2
16
+
1
{\displaystyle e=2^{16}+1}
e
{\displaystyle e}
e
{\displaystyle e}
ハスタッドの放送攻撃
理解を容易にするために、Håstadの攻撃の最も単純な形式が提示されています。 [2] 一般的なケースでは、Coppersmith法が使用されます。
ある送信者が、同じメッセージを 暗号化した形で多数の人 に送信し 、各人が同じ小さな公開指数 (たとえば )と異なる法 を使用するとします 。簡単な議論から、暗号文が知られるやいなや 、メッセージは 安全ではなくなることがわかります。イヴが 、および( )を傍受したとします。 すべての に対して と 仮定できます(そうでない場合は、 を計算することで、 いずれかの数の 因数 を 計算することができます )。 中国式剰余定理 により、イヴはとなる 計算を行う可能性があります 。すると となります 。ただし、 すべての に対してとなるため 、 となります 。したがって、 整数 に対して が成り立ち、イヴは の 立方根 を計算して を得ることができます 。
M
{\displaystyle M}
P
1
;
P
2
;
…
;
P
k
{\displaystyle P_{1};P_{2};\dots ;P_{k}}
e
{\displaystyle e}
e
=
3
{\displaystyle e=3}
⟨
N
i
,
e
⟩
{\displaystyle \left\langle N_{i},e\right\rangle }
k
≥
3
{\displaystyle k\geq 3}
M
{\displaystyle M}
C
1
,
C
2
{\displaystyle C_{1},C_{2}}
C
3
{\displaystyle C_{3}}
C
i
≡
M
3
(
mod
N
i
)
{\displaystyle C_{i}\equiv M^{3}{\pmod {N_{i}}}}
gcd
(
N
i
,
N
j
)
=
1
{\displaystyle \gcd(N_{i},N_{j})=1}
i
,
j
{\displaystyle i,j}
N
i
{\displaystyle N_{i}}
gcd
(
N
i
,
N
j
)
{\displaystyle \gcd(N_{i},N_{j})}
C
∈
Z
N
1
N
2
N
3
∗
{\displaystyle C\in \mathbb {Z} _{N_{1}N_{2}N_{3}}^{*}}
C
≡
C
i
(
mod
N
i
)
{\displaystyle C\equiv C_{i}{\pmod {N_{i}}}}
C
≡
M
3
(
mod
N
1
N
2
N
3
)
{\displaystyle C\equiv M^{3}{\pmod {N_{1}N_{2}N_{3}}}}
M
<
N
i
{\displaystyle M<N_{i}}
i
{\displaystyle i}
M
3
<
N
1
N
2
N
3
{\displaystyle M^{3}<N_{1}N_{2}N_{3}}
C
=
M
3
{\displaystyle C=M^{3}}
C
{\displaystyle C}
M
{\displaystyle M}
の値が大きくなると 、より多くの暗号文が必要になりますが、特に、 の暗号文で十分です。
e
{\displaystyle e}
e
{\displaystyle e}
一般化
ハスタッドはまた、暗号化前 に に 線形 パディングを 適用しても、この攻撃から保護されないことを示しました。攻撃者が と何らかの線形関数 についてを学習していると仮定します。つまり 、ボブは メッセージ を暗号化する 前に パディング を適用し 、受信者がわずかに異なるメッセージを受信するようにします。例えば、 が ビット長の場合、ボブはこれを 暗号化して - 番目の受信者に送信する可能性があります 。
M
{\displaystyle M}
C
i
=
f
i
(
M
)
e
{\displaystyle C_{i}=f_{i}(M)^{e}}
1
≤
i
≤
k
{\displaystyle 1\leq i\leq k}
f
i
{\displaystyle f_{i}}
M
{\displaystyle M}
M
{\displaystyle M}
m
{\displaystyle m}
M
i
=
i
2
m
+
M
{\displaystyle M_{i}=i2^{m}+M}
i
{\displaystyle i}
十分に大規模なグループが関与している場合、攻撃者は 同様の方法ですべての 暗号文 から 平文を復元できます。より一般的には、Håstadは、任意の固定 多項式 を適用するなど、 互いに素な合成数 を法とする 一変 数方程式系は、十分な数の 方程式 が与えられれば解けることを証明しまし た。この 攻撃は、 RSA暗号 においてランダム パディングを 使用すべきであることを示唆しています 。
M
i
{\displaystyle M_{i}}
g
i
(
M
)
≡
0
(
mod
N
i
)
{\displaystyle g_{i}(M)\equiv 0{\pmod {N_{i}}}}
フランクリンとライターは、複数の関連するメッセージが暗号化されている場合の RSA 攻撃を特定しました。2つの メッセージ が既知の固定差のみで、 同じ RSA 係数で RSA 暗号 化されて いる場合、両方のメッセージを復元することが可能です。この攻撃は当初、公開 指数 を用いて記述されていましたが、より一般的に機能します(が大きくなるにつれてコストも増加します )。
N
{\displaystyle N}
e
=
3
{\displaystyle e=3}
e
{\displaystyle e}
をアリスの公開鍵とします。2 つ の異なる メッセージ が、ある公開 多項式 を満たすとします 。ボブは、 と を アリスに送信するために、 これらの メッセージを単純に 暗号化し 、その結果得られる 暗号文 を送信します。イブは、 が与えられた場合、次の定理を用いて を簡単に復元できます 。
⟨
N
;
e
i
⟩
{\displaystyle \left\langle N;e_{i}\right\rangle }
M
1
;
M
2
∈
Z
N
{\displaystyle M_{1};M_{2}\in \mathbb {Z} _{N}}
M
1
≡
f
(
M
2
)
(
mod
N
)
{\displaystyle M_{1}\equiv f(M_{2}){\pmod {N}}}
f
∈
Z
N
[
x
]
{\displaystyle f\in \mathbb {Z} _{N}[x]}
M
1
{\displaystyle M_{1}}
M
2
{\displaystyle M_{2}}
C
1
;
C
2
{\displaystyle C_{1};C_{2}}
M
1
;
M
2
{\displaystyle M_{1};M_{2}}
C
1
;
C
2
{\displaystyle C_{1};C_{2}}
コッパースミスのショートパッド攻撃
ハスタッド攻撃やフランクリン・ライター攻撃と同様に、この攻撃は 公開指数を用いた RSAの脆弱性を悪用します。コッパースミスは、ハスタッドが提案したランダムパディングが不適切に使用されると、 RSA 暗号は 安全ではないことを示しました 。
e
=
3
{\displaystyle e=3}
ボブがアリスに、暗号化する 前に小さなランダムパディングを使って メッセージを送信したとします 。攻撃者のイヴが 暗号文を 傍受し、宛先への到達を阻止します。 アリスがメッセージに応答しなかったため、ボブはアリスに再送信することにしました。彼は 再びランダムパディングを行い、その結果得られた暗号文を送信します。これでイヴは、同じメッセージを2つの異なるランダムパディングを使って暗号化した2つの暗号文を持つことになります。
M
{\displaystyle M}
M
{\displaystyle M}
M
{\displaystyle M}
イブは使用されているランダム パッドを知りませんが、ランダム パディングが短すぎる場合は、次の定理を使用して
メッセージを復元できます。
M
{\displaystyle M}
This Coppersmith's short-pad attack
is missing information about "the following theorem" is missing..
Please expand the Coppersmith's short-pad attack to include this information. Further details may exist on the talk page . (May 2025 )
参照
参考文献
^ ボネ、ダン (1999). 「RSA暗号システムへの20年間の攻撃」 アメリカ 数学会報 46 (2): 203–213 .
^ Glenn Durfee、「代数法と格子法を用いた RSA の暗号解読」