公開鍵技術の検証:鍵の生成と電子署名・暗号化
ひとまずopensslコマンドだけで一通り公開鍵技術を試すメモ。
公開鍵技術は暗号処理と電子署名に使うことが多い。まずはこの2つの違いを理解することが重要。
一般論として
- 暗号処理の場合、公開鍵で暗号化し、秘密鍵で複合する
- 電子署名の場合は秘密鍵で署名し、公開鍵で検証する(RSAは対称性があるため逆も可能:ただコマンドは違うみたい)
となる。理にかなってる。単純だが、思いついた人(RSAの皆さん)すごい。
□鍵の生成
まず、何は無くても秘密鍵を生成。これは人に教えたり、盗まれてはいけない。
秘密鍵生成
生成。2021年現在、標準ではrsa 2048bitで生成されるみたい。
openssl genrsa > ./private_key.pem
公開鍵生成
秘密鍵から公開鍵を生成する。これは人に教えたり、提供したりするものです。
openssl rsa -in ./private_key.pem -pubout > ./public_key.pem
□電子署名
個人的には電子署名に公開鍵技術を利用することの方が多いのでまずは署名から。
署名する(署名の対象となる)ファイルの生成
echo "test" > ./test.txt
(秘密鍵で)署名する(署名の生成)
署名を生成する。元のファイルがどうこうなるわけではなく、その情報をベースに署名ファイルが生成されるのがミソ。
openssl dgst -sha256 -sign ./private_key.pem ./test.txt | openssl base64 > ./test.sig
(公開鍵で)検証する
検証する人は「検証対象のファイル」、「署名ファイル」、「公開鍵」の3つが必要となります。
#前処理
openssl base64 -d -in ./test.sig > ./test.sha256
#検証
openssl dgst -sha256 -verify ./public_key.pem -signature ./test.sha256 ./test.txt
Verified OK
別件の個人的用途のためbase64 encode, decodeを挟んでます。すみません。
□暗号化(と複合)
暗号化
暗号化。
openssl rsautl -encrypt -pubin -inkey ./public_key.pem -in ./test.txt > ./test.encrypted
複合
複合。
openssl rsautl -decrypt -inkey ./private_key.pem -in test.encrypted
test
その他
関連?のメモ。
ハッシュ出力
ハッシュの出し方メモ。
echo "test" | openssl sha256
(stdin)= f2ca1bb6c7e907d06dafe4687e579fce76b37e4e93b7605022da52e6ccc26fd2
base64
encode
echo -n "hogehoge" | base64
aG9nZWhvZ2U=
-nは、改行を出力しないオプション。普通はいらない?{}のときだけ?
decode
echo -n "aG9nZWhvZ2U=" | base64 -d
Author And Source
この問題について(公開鍵技術の検証:鍵の生成と電子署名・暗号化), 我々は、より多くの情報をここで見つけました https://qiita.com/zaburo/items/dfd8a2fb90a174f237fc著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .