0
0

はじめに

公開鍵暗号方式は言葉の意味としては知っていましたが、実際に流れを理解しながら実践したことがなかったので、今回やってみました。

公開鍵暗号方式とは

公開鍵暗号方式とは、公開鍵を暗号化に使用し、秘密鍵が復号に使用する暗号方式。
公開鍵を不特定多数の人に共有できるため、大人数のデータのやりとりに向いています。

公開鍵暗号方式を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

以上で、2つのファイルが作成されます。
image.png

データを暗号化する

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:

終わりに

公開鍵を用いて、暗号化し、秘密鍵を用いて複合する流れを実践しました。
どのように暗号化が行われているか流れがつかめました。
理解するには実際にやってみるのが近道ですね。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0