LoginSignup
6
3

More than 1 year has passed since last update.

opensslコマンドで共通鍵によるブルートフォースアタックに備えた暗号化を行う(復号も)

Last updated at Posted at 2018-10-02

概要

opensslコマンドを使ってサクッとファイルを暗号化するよ(zipパスワード暗号化よりもでもできるだけ安全にしたい場合などに使えるかなと・・・)

OpenSSL 1.1.0からブルートフォースアタックに有効な-iterオプションが使用可能になったみたいなので、
できるだけ新しいopensslコマンドを使いたい。
しかし、暗号化する場所と復号する場所の違いによりopensslコマンドが入っていな/バージョンが違うなどの問題が出ると面倒なので、docker-hubのイメージを利用することに。

なるべくメジャーで安全そうで小さくできるだけ新しいopensslコマンドが標準で入っているイメージを探したところ fedoraが見つかった。オフィシャルイメージであり比較的小さい方(87MB)

前提条件

  • dockerコマンドが実行できる環境
  • カレントディレクトリに以下のファイルを用意
    • pass.txt <- パスワードを記載した(せっかくなのでファイルにできるだけ長い方パスワードを記載するのが良さそうだけどMax 1024byte)
    • input.txt <- 暗号化したいファイル

手順

暗号化

パスワードファイルと暗号化したいファイルを用意したら以下のコマンドで暗号化する
以下の例では./encファイルが暗号化データが保存される

docker run -v $PWD:/work fedora:29 openssl aes-256-cbc -e -pass file:/work/pass.txt -in /work/input.txt -out /work/enc -iter 654321 -salt

オプションの -iter 654321 は暗号化を繰り返す(ストレッチング)回数でブルートフォースアタックに備えるため、ここでは654321回にしてみた
-salt で塩ふりかけも忘れずに(デフォルトぽいけど)

復号

復号する場合は暗号化で指定したパスワードファイルと-iterに回数654321を指定する
以下の例では./decに平文が保存される

docker run -v $PWD:/work fedora:29 openssl aes-256-cbc -d -pass file:/work/pass.txt -in /work/enc -out /work/dec -iter 654321

参考

6
3
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
6
3