はじめに
公開鍵暗号方式は言葉の意味としては知っていましたが、実際に流れを理解しながら実践したことがなかったので、今回やってみました。
公開鍵暗号方式とは
公開鍵暗号方式とは、公開鍵を暗号化に使用し、秘密鍵が復号に使用する暗号方式。
公開鍵を不特定多数の人に共有できるため、大人数のデータのやりとりに向いています。
公開鍵暗号方式をCLIで実践
鍵ペアの作成
- 秘密鍵の作成
OpenSSLを使用してRSAアルゴリズムによる秘密鍵を生成し、AES256で暗号化して private_key.pem というファイルに保存します。
pass phraseが求められるので任意の文字を入力します。あとで、複合する際に使用します。
$ openssl genpkey -algorithm RSA -out private_key.pem -aes256
..+.+..+......................+...+..+.+.....+......+....+......+.....+...+......+......+.+..+...+..........+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*......+.+......+.........+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*...+......+.........+.+.....+........................+......+....+............+...+........+.......+..+...............+......+.......+.....+............+....+..............+.+.........+........+....+..............+........................+...+...+....+.....+...+...+......+.+...+............+...+.........+...+.....+......................+......+...........+......+.......+.....+.......+.....+...+.+............+..+.+..+...+....+.....+..................+...+.......+...+..+.............+..+....+...........+.........+...............+...+.+.....+............+.........+.+.....+.......+..+...+.......+.....+....+.....+.+......+..+......+....+...+...+.....+......+...+.+......+...+............+...+..+.........................+...........+...+.......+.....+....+...+.....+.+...........+......+....+.....+......+.......+........+.............+.........+......+.....+....+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
.....+...+...............+...........+....+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*.......+...+..+...+......+......+.............+.....+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*..+.....+.+..+...+...+.+......+.....+.............+.....+.........+.+......+...+..+...+.+.................+.......+...+...+...........+.+........+.+.....+.+.....+....+......+.....+..........+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Enter PEM pass phrase:
Error writing key
- 公開鍵の作成
作成したRSA秘密鍵から対応する公開鍵を抽出し、公開鍵をファイルに保存します。
openssl rsa -pubout -in private_key.pem -out public_key.pem
データを暗号化する
sample.txt
ファイルを作成し、公開鍵で暗号化を行います。そして、.bin
ファイルでバイナリ形式のデータとして保存します。
echo "This is sample" > sample.txt
openssl pkeyutl -encrypt -in sample.txt -pubin -inkey public_key.pem -out encrypted_sample.bin
データを複合する
秘密鍵を用いて、encrypted_message.bin
ファイルを複合し、decrypted_sampleに保存します。
設定したpass phraseを入力します。
$ openssl pkeyutl -decrypt -inkey private_key.pem -in encrypted_sample.bin -out decrypted_sample.txt
Enter pass phrase for private_key.pem:
終わりに
公開鍵を用いて、暗号化し、秘密鍵を用いて複合する流れを実践しました。
どのように暗号化が行われているか流れがつかめました。
理解するには実際にやってみるのが近道ですね。