RSA暗号の方法
2006/03/20 早稲田大学 後 保範 (Waseda University, Ushiro Yasunori )
2006/11/15 指摘修正(1.(2)(b)の(n,e)のeの値)
1. RSA暗号鍵の作成
(1) RSA鍵の作成法
下記に従い作成し、(e,n)は公開暗号鍵でdが秘密復号鍵となる。
(a) 素数p,q及びeを選ぶ。
(b) n=p×q及びf=(p-1)×(q-1)を計算する。
(c) d=1/e mod(f)となる整数dを計算する。
(2) RSA鍵の作成例
(a) 素数p,q及びeを選ぶ。
p=239,q=547,e=43291
(b) n=p×q及びf=(p-1)×(q-1)を計算する。
n=239×547=130733, f=(p-1)×(q-1)=129948
(n,e)=(130733,43291)を公開する。
(c) d=1/e mod(f)となる整数dを計算する。
d=1/e=(43291)-1=105691 mod f
この計算はユークリッド互除法で行う。
2. RSA暗号化と復号化
(1) RSA暗号化
(a) 送信する文章を一定桁単位に数字(Mk), k=1,2,...に変換する。
(b) 数字の列(Mk)を下記で暗号化し数字の列Ckに変換。
Ck=Mke mod n
(c) 暗号変換後の数字の列Ck, k=1,2,...を送信する。
(2) RSA復号化
(a) 数字の列Ck, k=1,2,...を受信する。
(b) 数字の列(Ck)を下記で暗号化前の数字の列Mkに変換。
Mk=Ckd mod n
(c) 一定桁の数字の列(Mk), k=1,2,...を文字に逆変換する。
(3) RSA暗号変換例
(a) 鍵とメッセージ(文章)
公開暗号鍵:e=43291, n=130733
秘密復号鍵:d=105691
英数字変換:A=0, B=1,..., E=4, S=18, Y=24
メッセージ:YES <---> M1=24*262+4*26+18=16346
(b) 暗号化
C1=M1e=1634643291=49616 mod n
(c) 復号化
M1=C1d=49616105691=16346 mod n
3. 復号化の数学的理論
(1) オイラーの定理
n=p×qとMが互いに素ならオイラーの定理により下記が成立する。
M(p-1)(q-1)=1 mod n
(2) Cd mod nがMに戻る原理
ed=1 mod fのためed=af+1=a(p-1)(q-1)+1を使用すると下記が成立する。
Cd=(Me)d=Maf+1=(M(p-1)(q-1))
a×M=M mod n