公開鍵暗号方式を理解する

公開鍵暗号方式を理解する

AWSのKMSやCloudHSMとかを使うようになると公開鍵暗号とか共通鍵暗号とかの知識が必要になってきます。

公開鍵暗号方式というのは秘密鍵と公開鍵の2つのキーペアがセットです。

秘密鍵は秘密にしないといけないのでKMSとかを使って安全に保管する必要があります。

公開鍵は全員にばらまくので、特にセキュアである必要はありません。

opensslコマンドで公開鍵暗号方式に習うより慣れる

暗号化して復号化するとか、秘密鍵で公開鍵を作成してとか正直やってみないと理解ができません。

という事でopensslコマンドで実際に暗号化から復号化までを試してみたいと思います。

秘密鍵を作るにはgenrsa、2048bitで作成します。これがコマンドだと以下になります。

openssl genrsa 2048 > privatekey.pem

拡張子はpem派、key派で派閥があるようです。これはどっちも正しいので、とりあえずここではpemにしましょう。privatekey.pemという秘密鍵を作成しました。

プライベートキーから公開鍵を作成する

公開鍵はプライベートキー(ここではprivatekey.pem)から作成します。

openssl rsa -in privatekey.pem -pubout > publickey.pem

これで秘密鍵と公開鍵の作成が完了です。

中身にhello world.と書いているa.txtというファイルを作成します。

$ cat a.txt
hello world.

このファイルを公開鍵で暗号化してみます。

cat a.txt | openssl rsautl -encrypt -pubin -inkey publickey.pem > hello

出力されたhelloファイルを見てみます。

$ cat hello
\kɇaK?`C i$
a3d<y⠶QNZ;tZױ7u EE(ؗ;|t+\VKYVw#ƴ'ӱ{&v5^%JVS~weJI\Wg!:[8bQcP!~
ZMЮc̒]@$ݦ2b{L(_j8޳hÓ Rl(OFًj~5

暗号化されているのがわかると思います。

では次にhelloファイルを復号化してみます。

$ cat hello | openssl rsautl -decrypt -inkey privatekey.pem
hello world.

これで復号できました。

勘違いしていたのですが、秘密鍵で復号するんですね。。

公開鍵暗号 〜 復号化できるのは秘密鍵だけ 〜

コメント

株式会社CONFRAGE ITソリューション事業部をもっと見る

今すぐ購読し、続きを読んで、すべてのアーカイブにアクセスしましょう。

続きを読む

タイトルとURLをコピーしました