RSA鍵の生成アルゴリズムと暗号化
RSAに必要な値の定義
value | name |
---|---|
n | modulus(法) |
e | public exponent(公開指数) |
d | private exponent(秘密指数) |
$ n=p \times q $
$ \Phi= (p-1) \times (q-1) $
公開指数eは $ 1<e<\Phi $ であり$GCD(e,\Phi)=1$を満たす
秘密指数dは $ 1<d<\Phi $ であり$e \times d \equiv 1 \quad mod \Phi$を満たす
※GCD:greatest common divisor 最大公約数
RSA鍵
公開鍵は(n,e)を、秘密鍵は(n,d)をテキスト形式にエンコードをしてファイルにしている
暗号化・複合化
$ c=m^e \quad mod(n) $
$ m=c^d \quad mod(n) $
元のデータをm、暗号化したデータをcとする。公開鍵で暗号化して、秘密鍵で複合化する。
署名・署名認証
$ c=m^d \quad mod(n) $
$ m=c^e \quad mod(n) $
署名の場合は逆に秘密鍵で暗号化して、公開鍵で複合化する。
OpenSSLで鍵の内容を確認できる
openssl genrsa 512 | openssl rsa -text