# フォルダを圧縮
zip -r foo.zip foo
# 暗号化
gpg -e -o /tmp/encrypted.zip.gpg -r you@example.com foo.zip
# 復号
gpg -d -o /tmp/decrypted.zip /tmp/encrypted.zip.gpg
ロングオプション | ショートオプション | 説明 |
---|---|---|
--armor |
-a |
バイナリではなくアスキーデータで出力します |
--encrypt |
-e |
ファイルを暗号化します |
--output PATH |
-o PATH |
暗号化されたファイルの出力先を指定します |
--recipient KEY |
-r KEY |
使用する秘密鍵を選択します |
バイナリデータ | アスキーデータ | |
---|---|---|
利点 | • ファイルサイズが元のファイルと変わらない | • テキストエディタで開ける • 差分表示ができる |
欠点 | • テキストエディタでは開けない • 差分表示ができない |
• ファイルサイズが膨らむ |
拡張子 | .gpg |
.asc |
前回は OpenSSL を使ってファイルを暗号化する方法について紹介しました。
しかし openssl
コマンドによる暗号化だとオプションが複雑だったり、ファイルサイズが大きい場合に正しく暗号化できなかったりするデメリットがあります。
そこで今回は GPG を利用してファイル・フォルダを暗号化する方法について解説します。
gpg
コマンドはインストール済みであることフォルダを直接的に暗号化することはできませんので、まずはフォルダを圧縮して ZIP ファイルにまとめます。フォルダではなくファイルを暗号化する場合はこの手順はスキップしてください。
カレントディレクトリにある foo
というフォルダを圧縮するには以下のコマンドを実行します。
zip -r foo.zip foo
foo.zip
が生成されるはずです-r
を付け忘れないように注意しましょう
ここではコマンドラインで圧縮する方法を紹介しましたが、実際には OS のファイル管理アプリ(Mac なら Finder、Windows なら Explorer)のほうが間違いがなくて良いかもしれません。
ファイルを暗号化するには以下のコマンドを実行します。
gpg --encrypt --recipient you@example.com foo.zip
foo.zip.gpg
が生成されるはずです--encrypt
または -e
オプションをつけます--recipient
または -r
オプションを使用して、利用する秘密鍵に登録したメールアドレスを指定する必要があります
バイナリデータではなくアスキーデータ(テキストエディタで開ける形式)として保存したい場合は以下のように --armor
または -a
オプションを付与します。
gpg --armor --encrypt --recipient you@example.com foo.zip
foo.zip.asc
が生成されるはずです両者とも復号すれば全く同じファイルが生成されるため、基本的にはどちらでも良いと思います。主な違いは以下のとおりです。
バイナリデータ | アスキーデータ | |
---|---|---|
利点 | • ファイルサイズが元のファイルと変わらない | • テキストエディタで開ける • 差分表示ができる |
欠点 | • テキストエディタでは開けない • 差分表示ができない |
• ファイルサイズが膨らむ 1 |
拡張子 | .gpg |
.asc |
デフォルトでは、暗号化されたファイルの出力先は暗号化前のファイルと同じディレクトリです。出力先を変更する場合は --output
または -o
オプションを指定します。
gpg --encrypt --output /tmp/encrypted.zip.gpg --recipient you@example.com foo.zip
/tmp/encrypted.zip.gpg
が生成されるはずです上記で説明したよく使用するオプションの一覧を以下にまとめます。
ロングオプション | ショートオプション | 説明 |
---|---|---|
--armor |
-a |
バイナリではなくアスキーデータで出力します |
--encrypt |
-e |
ファイルを暗号化します |
--output PATH |
-o PATH |
暗号化されたファイルの出力先を指定します |
--recipient KEY |
-r KEY |
使用する秘密鍵を選択します |
暗号化したファイルを復号するには以下のコマンドを実行します。
gpg foo.zip.gpg
foo.zip
が生成されるはずです--output
または -o
オプションが利用可能です--decrypt
または -d
オプションを明示的に指定することもできます
--output
または -o
オプションを指定しないと、ファイルではなくターミナルに標準出力されてしまうのでご注意ください(下記コマンド参照)gpg --decrypt --output /tmp/decrypted.zip foo.zip.gpg
筆者の環境で 1.37 GB の ZIP ファイルをこの方法で暗号化したところ 1.85 GB になりました。 ↩