26.8.2. 共通鍵暗号
公開鍵暗号に比べて簡単に使える,共通鍵暗号を使ってみましょう.
平文 (ひらぶん) himitsu.txt を暗号化して, 暗号文 himitsu.txt.asc を作ります.
暗号文を復号して平文を得ます.
このとき,同じ鍵で暗号化と復号ができる対称性から,対称鍵暗号とも言います.
準備 #
平文(ひらぶん)として,簡単な文を書いたテキストファイルを作成します.慣れたらPDF等でも良いですが,初めはテキストファイル (rtfではなく,純粋なテキストファイル)を使います.
テキストエディタをつかって himitsu.txt を作成しましょう.
作成したら,中身を確認しましょう.CUIとGUIの両方で確認すると良いです.
- ファイルブラウザで でファイルを見つけて,ダブルクリック (colab) または Google Chrome などの適切なアプリケーションににドラッグアンドドロップする
- ターミナルで,
catコマンドで内容を確認する.catに続けて,空白とファイルパスをタイプしてエンターを押す.ホームディレクトリに作った場合は,cat himitsu.txtとなる.
以後のコマンドでは,cat の代わりに gpg などのコマンドを使います.操作対象のファイルを指定する方法は,cat の時と同じです.
暗号化 #
-caのcは,共通鍵で暗号化するという意味です.aは ASCII armor の意味で,出力をASCIIとして読める形式に整えます.- ファイル名の末尾の
.txt.ascは見慣れないかもしれませんが,拡張子.txtの末尾に,新たな拡張子.ascを追加して,元のファイルとの関係を明瞭に表現する意図です.なおascは ASCII の頭文字ですが,内容を保証する者ではありません.
Colab セルでは,共通鍵のキーボード入力が難しいのであらかじめファイルに保存しておいて,それを使うよう指示します.
--batch --passphrase-file weak-passphrase.txt が追加部分で,weak-passphrase.txt がパスフレーズを書いたファイル名です.
どのような場合でも,操作対象のファイルである himitsu.txt は最後に配置します.ターミナルでの実行例
暗号文を cat himitsu.txt.asc で表示すると,人には読めなさそうな雰囲気であることは分かります.
復号 #
himitsu.txt.asc を復号した内容を画面に表示します.このとき,暗号化で使われた共通鍵をキーボードから入力します.
colab で行うには,暗号化の時と同じであらかじめ鍵をファイルに保存しておいて,それを使って復号するよう指示します.
--batch --passphrase-file weak-passphrase.txt が追加部分でした.
復号した内容を保存する場合は,-o decoded.txt などと復号後に生成するファイル名を変更しましょうパスフレーズを聞かれたら,暗号化の際に用いた文字列(共通鍵)を入れると復号できます.
例外として,暗号化直後に自分で復号した場合は,パスフレーズを聞かれません.gpg-agent という鍵を一時的に記憶する仕組みが働いているためです.ログアウト・ログインしなおしてから復号すると,パスフレーズを聞かれます.暗号化で必要だった場合は,復号の際にも同様にgpg --pinentry-mode loopback -d とオプションを追加してください.教員の指示に従って,指定のパスフレーズで暗号化したファイルを,UTOLに添付しましょう. ダウンロードしたファイルを,復号してみましょう.
応用 #
テキストファイルだけでなく,PDFなども暗号化・復号できます.
その場合は,バイナリーファイルなので,cat による確認はできません.復号後に GUI アプリケーションで開くことはできます.
復号の際はgpg -d -o output.pdf などとと出力ファイル名の拡張子を,想定するものに指定
してください.