「RSA暗号のアルゴリズム」の版間の差分

提供:MochiuWiki - SUSE, Electronic Circuit, PCB
ナビゲーションに移動 検索に移動
14行目: 14行目:
===== メッセージを受け取る側の準備 =====
===== メッセージを受け取る側の準備 =====
大きな素数pとqを生成して、<math>n = pq</math>とする。<br>
大きな素数pとqを生成して、<math>n = pq</math>とする。<br>
<math>(p - 1)(q - 1)</math>と互いに素な整数k<sub>1</sub>を取る。<br>
<math>\phi(n) = (p - 1)(q - 1)</math>と互いに素な整数k<sub>1</sub>を取る。<br>
<math>k_1k_2 \equiv 1\,\bmod\,(p - 1)(q - 1)</math>となるk<sub>2</sub>を取る。<br>
<math>k_1k_2 \equiv 1\,\bmod\,(p - 1)(q - 1)</math>となるk<sub>2</sub>を取る。<br>
<br>
<br>
23行目: 23行目:
* k<sub>2</sub>は非公開にする(秘密鍵)
* k<sub>2</sub>は非公開にする(秘密鍵)
<br>
<br>
===== メッセージを送る側の暗号化方法 =====
===== メッセージを送る側の暗号化方法 =====
送りたいメッセージをm(ただし、<math>0 \le m \le n</math>を満たす)とする。<br>
送りたいメッセージをm(ただし、<math>0 \le m \le n</math>を満たす)とする。<br>

2020年3月6日 (金) 23:43時点における版

概要

公開鍵暗号方式の具体的なアルゴリズムであるRSA暗号の仕組みと安全性について記載する。


前提知識

以下の初等整数論の知識を用いる。

  • 合同式の基礎
  • フェルマーの小定理
  • 有名な定理 : aとbが互いに素なとき、となるxが、の間でただ1つ存在する。



RSA暗号の仕組み

メッセージを受け取る側の準備

大きな素数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を復号できる。