「RSA暗号のアルゴリズム」の版間の差分
ナビゲーションに移動
検索に移動
(→安全性) |
|||
(同じ利用者による、間の2版が非表示) | |||
34行目: | 34行目: | ||
===== メッセージを送る側の暗号化方法 ===== | ===== メッセージを送る側の暗号化方法 ===== | ||
送信するメッセージをMとする時、暗号文をCは、以下の式で求められる。<br> | |||
ただし、<math>\,0 \le M \le n \,</math>を満たす。<br> | |||
<math>C = M^{k_1} \bmod n</math><br> | |||
<br> | <br> | ||
===== メッセージを受け取る側の復号方法 ===== | ===== メッセージを受け取る側の復号方法 ===== | ||
受信した暗号文Cと秘密鍵k<sub>2</sub>を使用して復号する時、以下の式から求められる。<br> | |||
<math>M = C^{k_2} \bmod n</math><br> | |||
<br> | |||
これが元のメッセージに一致する。(後述) | これが元のメッセージに一致する。(後述) | ||
<br> | <br> | ||
===== 安全性 ===== | ===== 安全性 ===== | ||
暗号文Cと公開鍵n、k<sub>1</sub>が分かっても、(現実的な時間では)mを復元することはできない。<br> | 暗号文Cと公開鍵n、k<sub>1</sub>が分かっても、(現実的な時間では)mを復元することはできない。<br> | ||
<br> | <br> | ||
* 復号できる理由 | * 復号できる理由 | ||
*: 暗号化:<math> | *: 暗号化:<math>m^{k_1} \bmod n</math> | ||
*: 復号 :<math> | *: 復号 :<math>C^{k_2} \bmod n</math> | ||
<br> | <br> | ||
証明<br> | 証明<br> |
2021年5月23日 (日) 10:03時点における最新版
概要
公開鍵暗号方式の具体的なアルゴリズムであるRSA暗号の仕組みと安全性について記載する。
前提知識
以下の初等整数論の知識を用いる。
RSA暗号の仕組み
- 公開鍵
- n : 2つの素数の積
- k1 : と互いに素な整数k1 (ただし、を満たすこと)
- 秘密鍵
- 素数p
- 素数q
- φ(n) : の積
- k2 : となるk2
メッセージを受け取る側の準備
大きな素数pとqを生成して、とする。
と互いに素な整数k1を取る。
となるk2を取る。
※注意
上記の有名な定理により、とすると、k2は一意に定まる。
また、ここまでの操作は高速にできることが知られている。
- nとk1を公開する(公開鍵)
- k2は非公開にする(秘密鍵)
メッセージを送る側の暗号化方法
送信するメッセージをMとする時、暗号文をCは、以下の式で求められる。
ただし、を満たす。
メッセージを受け取る側の復号方法
受信した暗号文Cと秘密鍵k2を使用して復号する時、以下の式から求められる。
これが元のメッセージに一致する。(後述)
安全性
暗号文Cと公開鍵n、k1が分かっても、(現実的な時間では)mを復元することはできない。
- 復号できる理由
- 暗号化:
- 復号 :
証明
を証明すればよい。
を証明すれば十分である。(対称性より、も同様)
mがpの倍数のとき、両辺ともにpの倍数よりOK。
mがpの倍数でないとき、がの倍数となるように設定したので、
整数Nを用いて、とおける。
よって、となる。
(ただし、途中のはであり、フェルマーの小定理を用いた)
RSA暗号の安全性と素因数分解
素因数分解が簡単に(短時間で)計算できれば、RSA暗号は破られる。
- RSA暗号が破られる理由
- 暗号文C、公開鍵k1、nは誰でも見ることができる。
- ここで、nを素因数分解することでpとqが求まる。
- すると、"メッセージを受け取る側の準備"と同じ方法で秘密鍵k2が求まり、元のメッセージMを復号できる。