RSA暗号:復号化の仕組み

IT
  • RSA暗号を勉強しました
  • 暗号文 CCMe(modn) で暗号化する時、元の文 MMCd(modn) で復号できる理由を確認したのでmemo

前提:RSA暗号について

  • 以下3つの数字を用意
    • 異なる素数 pq
    • (p1)(q1)と互いに素な自然数 e
  • この時、元の文 M を暗号文 C に変換する式が CMe(modn)
  • この時元の文 M を復号する式が MCd(modn)
  • ただし、nd
    • n=pq
    • dek(p1)(q1)=1を満たす自然数de

復号化の仕組み

  • 確認したいこと:MCd(modn)で復号できる仕組み
    • Cd(modn)Mになることが計算できれば良い

Cdを計算する

Cd(modn)Mを計算する流れは以下となる。
(1)(4)の計算の詳細は後述にて解説する。

(2)は既出 dek(p1)(q1)=1 から de=1+k(p1)(q1)を代入
(3)は指数の1を前に出した

Cd(modn)Med(modn)(1)Mk(p1)(q1)+1(modn)(2)MMk(p1)(q1)(modn)(3)M(4)

(1) Cd(modn)Med(modn)

CMe(modn)の時、C=Me+nxと表現できる(xは任意の整数)。
この時、

Cd=(Me+nx)d=Med+dC1Me(d1)nx+dC2Me(d2)(nx)2+

となる。初項Medを除く全ての項にnが含まれているため、nで割り切れる。よって

Cd(modn)Med(modn)

となる

(2) MMk(p1)(q1)(modn)M1(modn)

以下の順序で計算していく。

  • (21) M(p1)(q1)1(modn)を計算
  • (22) M(p1)(q1)1(modn) の時、

    Mk(p1)(q1)1(modn) となる

  • (23) Mk(p1)(q1)1(modn) の時、

    MMk(p1)(q1)(modn)M1(modn) となる

(21) M(p1)(q1)1(modn)を計算する

フェルマーの小定理より素数ppの倍数でない正の整数a

ap11(modp)

となる。この性質を利用する

フェルマーの小定理より

M(p1)(q1)=(M(q1))(p1)1(modp)
M(p1)(q1)=(M(p1))(q1)1(modq)

となる。これらの式が成立する時 pq=nnに対して、

M(p1)(q1)1(modn)

が成立する。またこの時、

Mk(p1)(q1)1(modn)

となる。

M(p1)(q1)1(modn)が成立する理由

M(p1)(q1)1(modp) より M(p1)(q1)=pX+1
M(p1)(q1)1(modq) よりM(p1)(q1)=qY+1

XYは任意の整数

これらの式より

pX+1=qY+1pX=qY

pqは異なる素数のため、この式が成立するためにはXqの、Ypの整数倍でなければならない。

これより

M(p1)(q1)1(modp)

M(p1)(q1)1(modq)

が成立する時、

M(p1)(q1)1(modn)

となる。

(22) M(p1)(q1)1(modn) の時、Mk(p1)(q1)1(modn) となる

※考え方は 「Cd(modn)=Med(modn) の理由」と同じ

M(p1)(q1)1(modn)より、M(p1)(q1)=nx+1

Mk(p1)(q1)=(1+nx)k=(1)k+kC11(k1)nx+kC21(k2)(nx)2++(nx)k=1+kC1nx+kC2(nx)2++(nx)k

これより、Mk(p1)(q1)は初項 1 を除くと、nの倍数になるため、

M(p1)(q1)1(modn) の時、

Mk(p1)(q1)1(modn)
となる。

(23) Mk(p1)(q1)1(modn) の時、 MMk(p1)(q1)(modn)M1(modn) となる

Mk(p1)(q1)1(modn)より、Mk(p1)(q1)=nx+1

xは任意の自然数

これより、
MMk(p1)(q1)(modn)M(nx+1)(modn)Mnx+M(modn)M

まとめ

以上よりCMe(modn)で暗号化した元の文MCd(modn)Mで復号できることを確認した。

終わりに

  • RSA暗号の仕組み解説には色々な定理や方法論が用いられますが、今回はなるべくその部分も順序立てて計算しました。
    • フェルマーの小定理は証明だけ理解して、使用しました(^_^;)
  • こういった計算をしっかりするのは久しぶりだったため、厳密性がなかったり、誤りがある箇所があるかもしれません。
    • そういった箇所は発見次第、修正していきます

今後の展望

  • 今回は暗号化の式ありきで、復号がなぜ同じ式でできるのかを確認しました。
    • RSA暗号の仕組みを使用して、暗号化・復号化のコードを書こうとした時に、復号化がなぜこの式でできるのか疑問に感じたため
  • 今後はこの理解した内容を踏まえて、RSA暗号の仕組みを使ったコーディングを進めたいです
  • 機会があれば、復号化の式に限らず、もう少しRSA暗号について、深掘りをしたいです

    • フェルマーの小定理で端折ったところの追記
    • 暗号化の式について

    など

コメント

タイトルとURLをコピーしました