概要
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