RSA
ロナルド・リベスト (Ron Rivest) 、
アディ・シャミア (Adi Shamir) 、
レオナルド・エーデルマン (Len Adleman)
の各姓から取った頭字語
フェルマーの小定理
素数Nを法(標数)とすると、任意の整数Mに関して、
M^N≡M mod N
N=K1×K2 とすると、
M^N=(M^K1)^K2
そこで、
C=M^K1 (暗号)
M=C^K2 (復号)
ただし、この方法では、K2=N÷K1 ですぐ判る。
RSA
p、qは二つの素数である。
N=p×q を暗号化と復号のための法Nとする(標数)。
(p-1)×(q-1)を鍵生成用の法Lとする。
Lと互いに素な数を公開鍵K1とする。
Lと互いに素、かつK1と互いに素のK2であってかつ、
K1×K2=1 となるものを秘密鍵K2とする。
プログラム試作
FILESソリューションのRSAプロジェクト
法を有する乗算、べき乗の演算
秘密鍵から公開鍵の生成。
https
https には、RSAアルゴリズムが用いられている。
クライアントが公開鍵で暗号化し、サーバーは秘密鍵で復号する。
デジタル署名
サーバーが秘密鍵で暗号化する。
クライアントは公開鍵で復号する。
復号できれば、署名を確認したことになる。
楕円曲線暗号(1985)
Elliptic Curve Cryptography, ECC
電子署名には、より高度な楕円曲線が用いられている。
y2=x3+ax+b
で表される楕円曲線上の基準点Gからn個の関係点(巡回群)を求める。
関係点から基準点を求めることは難しい。
平面に無限遠点Oを足した空間は透視図の空間と似ている。
https://qiita.com/sh-miyoshi/items/7479f6e647a324638b9a
点P(xp,yp)と点Q(xq,yq)の加算は
楕円曲線の上の直線PQと楕円曲線の交点のx軸に関する対称点。