GPGで暗号化/復号化

Gnu Privacy Guard (GPG) の一番お手軽な使い方として、ファイルをパスワードで暗号化/復号化する方法。
GPG本体をインストールしなくても、Windows版のGitをインストールしていればGPGの一部が含まれています(Git/bin/gpg.exe)。単純にファイルをパスワードで暗号化したいだけ、程度の用途であればこれで十分です。

  • ファイルを暗号化する
> gpg -c file.txt

暗号化時のパスフレーズは、ひらがなや漢字等も含めることができます。
なるべく長く、覚えやすいパスフレーズにしましょう。

これで file.txt.gpg という暗号化ファイルが作成されます。
-a オプションを追加して暗号化した場合は file.txt.asc という ASCII 形式の暗号化ファイルができます。

  • ファイルを復号化する
> gpg file.txt.gpg

これで file.txt という平文のファイルが出来上がります。

  • Emacsと連動させる

拡張子が .gpg のファイルは Emacs から透過的に扱えます。
ファイルを開く時にパスフレーズを入力すれば、自動的に復号化してくれます。

ちなみに、ASCII 形式の暗号化ファイルの場合は、全選択し、

M-x epa-decrypt-region

で復号化できます。

同様に、平文のファイルのある部分を選択し、

M-x epa-encrypt-region

とすれば、ファイルの一部分だけを暗号化できます。

  • 暗号化方式についての補足

上記で説明したGPGの共通鍵暗号は、デフォルトの暗号化方式としてCAST5が採用されています。
自分の利用しているPCの設定が知りたければ -v オプションを付加することで、以下のように暗号化方式が表示されます。

gpg: using cipher CAST5

暗号化方式を変更するには --cipher-algo オプションを利用します。
例えば AES256 で暗号化する場合は、

> gpg --cipher-algo AES256 -c -v file.txt

のようにします。

サポートされている暗号化方式はヘルプで見ることができます。
私の環境では下記の7種類がサポートされていました。

3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH

暗号化の基本的な理論は下記の書籍が参考になりました。
古代暗号の歴史から解説されていますが、第4章、第5章を読めば「共通鍵暗号」「公開鍵暗号」の基本的な仕組みが分かります。

暗号 情報セキュリティの技術と歴史 (講談社学術文庫)

暗号 情報セキュリティの技術と歴史 (講談社学術文庫)