- blogs:
- cles::blog

openssl を使ってファイルを簡単に暗号化する

コマンドラインで openssl を使うのは SSL キーや CSR を作るときやデバッグするときだけでしたが、簡単なファイルの暗号化にも使えることが分かったのでメモ。
調べてみると、しっかりとマニュアルにかいてある*1*2内容でしたが、これまで全く使ったことがありませんでした。
オプションを工夫することで、単なるパスワードだけでなく鍵を使った暗号化もできるようです。
以下、作業メモ。
一通りの暗号化・復号化の流れを試してみました。
† テスト用平文データ
今回のテストにあたって、下記のような簡単なテキストファイルを用意しました。
† aes-256-cbc によるデータの暗号化 ( test.txt → test.aes )
まず、簡単な暗号化をやってみます。ファイルを AES-256-CBC モードで暗号化します。
暗号化の際にはパスワードが必要になりますので、画面の指示に従ってこれを2度入力します。
† aes-256-cbc によるデータの復号化 ( test.aes → test.txt(STDOUT) )
前述の手順の逆変換をして、データを平文に戻してみます。
パスワードは暗号化の際にいれたものと同じものを入力する必要があります。
† 秘密鍵の生成 ( φ → private.key )
次は RSA キーを使った暗号化をやってみましょう。
準備として、秘密鍵を新しく生成します。秘密鍵自身も AES256 で暗号化している*3ので、画面の指示に従って秘密鍵のパスワードを2度入力します。
† 公開鍵の生成 ( private.key → public.key )
次のステップで必要となる秘密鍵と対になる公開鍵を生成しておきます。
公開鍵は公開することが前提なので、それ自身を暗号化はしませんから新たなパスワードは必要ありません。
但し、秘密鍵から生成するので、画面の指示に従って前のステップで生成した秘密鍵のパスワードを入力する必要があります。
† 公開鍵による暗号化 ( test.txt, public.key → test.rsa )
公開鍵による暗号化をしてみます。
公開鍵は前述のとおりパスワードがありませんから、コマンドを入力するとすぐに暗号化が完了します。
† 秘密鍵による復号化 ( test.rsa, private.key → test.txt(STDOUT) )
公開鍵で暗号化したファイルを秘密鍵で元に戻します。
暗号化は公開鍵、復号化は秘密鍵と異なるのが RSA の特徴ですが、慣れないと分かりづらいので注意が必要です。
† 秘密鍵による署名 ( test.txt, private.key → test.sig )
次は秘密鍵による署名です。
こちらは秘密鍵を使うので、署名時に秘密鍵のパスワードが必要になります。
† 秘密鍵による署名検証 ( test.sig, private.key → test.txt(STDOUT) )
署名の検証はこちらも秘密鍵なので、秘密鍵のパスワードが必要になります。
- *1: OpenSSL: Documents, enc(1)
- *2: OpenSSL: Documents, rsautl(1)
- *3: 秘密鍵を暗号化しない場合はコマンドから -aes256 を除く。
このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/5490
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。
OpenID を使ってログインすることができます。
2 . 福岡銀がデマの投稿者への刑事告訴を検討中(112946)
3 . 年次の人間ドックへ(112372)
4 . 2023 年分の確定申告完了!(1つめ)(111941)
5 . 三菱鉛筆がラミーを買収(111815)