Symmetric Encryption

共通鍵暗号 #

準備 #

平文(ひらぶん)として,簡単な文を書いたテキストファイルを作成します.慣れたらPDF等でも良いですが,初めはテキストファイル (rtfではなく,純粋なテキストファイル)を使います.

mi (see HWB) を使って himitsu.txt を作成しましょう. 作成したら,中身を確認しましょう.以下の両方で確認すると良いです.

  • Finder でファイルを見つけて,Google Chrome などのウェブブラウザにドラッグアンドドロップする
  • ターミナルで,cat コマンドで内容を確認する.cat に続けて,空白とファイルパスをタイプしてエンターを押す.ホームディレクトリに作った場合は,cat himitsu.txt となる.他の場所や他の名前のファイルの場合は,パスを指定するか,ファインダでドラッグアンドドロップして入力する. (この説明で分からなかった場合は,HWB も参照)

以後のコマンドでは,cat の代わりに gpg などのコマンドを使います.操作対象のファイルを指定する方法は,cat の時と同じです.

暗号化 #

共通鍵暗号を用いて暗号化する手順は,gpg -ca ファイル名 です.

以下の例では,himitsu.txt という平文を gpg -ca というコマンドで暗号化して himitsu.txt.asc という暗号文ファイルを新たに作成しています.途中,「共通鍵」に相当する文字列を入力していますが,デモには録画されていません.ターミナルにタイプする際も表示されません.

暗号文を cat himitsu.txt.asc で表示すると,人には読めなさそうな雰囲気であることは分かります.

細かい解説

  • -cac は,共通鍵で暗号化するという意味です.a は ASCII armor の意味で,出力をASCIIとして読める形式に整えます.
  • ファイル名の末尾の .txt.asc は見慣れないかもしれませんが,拡張子 .txt の末尾に,新たな拡張子 .asc を追加して,元のファイルとの関係を明瞭に表現する意図です.なお asc は ASCII の頭文字ですが,内容を保証する者ではありません.

共通鍵の入力で何度も聞かれる場合は,8文字以上英数字記号を混ぜるなど複雑にすることで解決することがあります.あるいは,gpg -ca の代わりに gpg --pinentry-mode loopback -ca とオプションを追加して対応してください.(コマンド入力はコピーペーストでも良いです)

復号 #

暗号化されたファイルを復号するには,gpg -o himitsu.txt -d himitsu.txt.asc のように,gpg -d の後に対象ファイルを指定してください.

暗号化後に自分で復号する場合は,-o original.txt などと復号後に生成するファイル名を変更しましょう

パスフレーズを聞かれたら,暗号化の際に用いた文字列(共通鍵)を入れると復号できます.

例外として,暗号化直後に自分で復号した場合は,パスフレーズを聞かれません.gpg-agent という鍵を一時的に記憶する仕組みが働いているためです.ログアウト・ログインしなおしてから復号すると,パスフレーズを聞かれます.

暗号化で必要だった場合は,復号の際にも同様にgpg --pinentry-mode loopback -d とオプションを追加してください.

電子メールで友達に暗号化されたファイルを添付で送って復号してもらいましょう. 受け取った側は,添付ファイルを保存して,保存したファイルをファインダで開いてから,ターミナルにドラッグアンドドロップすると対象ファイルの指定を楽にできるでしょう.

応用 #

テキストファイルだけでなく,PDFなども暗号化・復号できます. その場合は,バイナリーファイルなので,cat による確認はできません.復号後に GUI アプリケーションで開くことはできます.

復号の際はgpg -d -o output.pdf などとと出力ファイル名の拡張子を,想定するものに指定 してください.