情報の森

見方をかえてみる 世界をかえてみる

RSA暗号とは

RSA暗号とは、素因数分解の難しさを利用した暗号アルゴリズムのこと。
名前は発明した3人の名前の頭文字に由来する。(R. L. Rivest、A. Shamir、L. Adleman)

●作成の手順①【公開鍵と秘密鍵を生成】(抽象)

異なる2つの素数「p」「q」を任意にとる(秘密鍵)
pq=nとする(公開鍵)
(p-1)(q-1)と互いに素な自然数eを任意にとる(公開鍵)
edを(p-1)(q-1)で割った余りが1となる自然数dを任意にとる(秘密鍵)

●作成の手順①【公開鍵と秘密鍵を生成】(具体)

p=7、q=5
n=7×5=35
(p-1)(q-1)=6×4=24より、e=5とする(24と互いに素ならば5以外でもOK)
d=5とすると、ed÷(p-1)(q-1)=1余り1

●作成の手順②【メッセージを暗号化】(抽象)

送りたいメッセージを自然数xとする。ただしx<nとする
xをe乗し、これをnで割った余りをyとする

●作成の手順②【メッセージを暗号化】(具体)

x=12とする。これはx<nを満たす(n=35)
12を5乗し、これを35で割ると余りy=17となる

●作成の手順③【メッセージを復号】(抽象)

yをd乗する
これをnで割った余りが平文xとなる

●作成の手順③【メッセージを復号】(具体)

17を5乗する
これを35で割った余りが平文12となる
 
 
 
 

RSA暗号の説明

暗号化:暗号文=平文^E modN
{E,N} のペアが公開鍵に相当します。
復号:平文=暗号文^D modN
{D,N} のペアが秘密鍵に相当します。
E,D,N を求めるには 2 つの素数を使います。※材料はこれらの素数のみ
N=p⋅q (p,q はそれぞれランダムで十分に大きい素数
L=lcm(p−1,q−1){L は前述の式には登場しない値ですが、残りの値を求めるために利用します。}
※lcm とは最小公倍数 (Least Common Multiple) 。
1<E<L
gcd(E,L)=1
※gcd とは最大公約数 (Greatest Common Divisor)。つまり E,Lは 互いに素 な任意の整数。
1<D<L
E⋅D=1 modL
つまり Dは Eとの積の余剰が 1 となる任意の整数です。
 
 
 
参考にさせていただいたサイト
文献
RSA暗号を可能にしたEulerの定理