公開鍵暗号方式を理解する
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+\VKYVw#ƴ'ӱ{&v5^%JVS~weJI\Wg!:[8bQcP!~ ZMЮc̒]@$ݦ2b{L(_j8hÓ Rl(OFًj~5
暗号化されているのがわかると思います。
では次にhelloファイルを復号化してみます。
$ cat hello | openssl rsautl -decrypt -inkey privatekey.pem hello world.
これで復号できました。
勘違いしていたのですが、秘密鍵で復号するんですね。。
KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^
コメント