- 公開鍵
- 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を用いて、 とおける。
よって、 となる。
(ただし、途中の は であり、フェルマーの小定理を用いた)