表記法: 以下の資料で、ターミナルでの操作を四角で囲って表す。タイプする文字列は 赤色 で表記する。その際、行末では改行(エンター/リターンキー)を入力する。資料作成者のコメントは 青色 で表記する
gpg による暗号化と署名
この演習では、暗号化と署名のソフトウェアとして gpg を使う。以下の点で「情報」で扱うのに相応しいと判断した。
どの種類のファイル (画像, 文字列, Microsoft Word, PDF などなど) でも扱うことが出来る。 すなわち、一つ覚えれば、全てに応用可能。
実用に使うことができる
フリーソフトウェアなので、寿命が長いと期待できる。
暗号文や署名済ファイルの中身を、取り扱い可能。
c.f., 「電子メールを暗号化しますか? はい(Y)/いいえ(N)」とかクリックするよりは手順が面倒だが、暗号文と平文を直接確認することができる。
共通鍵暗号
-
暗号文の作成
-
(確認) 自分で復号する
-
友達にメールで送る
電子メールの添付ファイルの機能を利用して、himitsu.xxxx.txt.asc (暗号文)を送る。 -
(以下送られた立場にスイッチ) 送られたファイルを保存する。 以下、 MailSuite の場合:
添付ファイルをクリックする (この段階で、添付ファイルは「ダウンロード」フォルダに保存された。これを以下の操作で、ホームに移動する)
ブラウザ右上のダウンロードボタン(下向き矢印↓)をクリック
ダウンロードしたファイルの一覧があるので、送られてきたファイル名を探して、右クリックから「Finder で表示」を選択
Finder 上で、対象ファイルのアイコンをマウスでドラッグして、左カラムのホームフォルダのアイコン上で離す
-
送られたファイルを読む
鍵を友達から耳打ちで教えてもらう
-
送られたファイルを復号して読む
応用: 画像やPDFなども同様に暗号化して送ることが出来る。
公開鍵暗号
公開鍵暗号では、 公開鍵 と 秘密鍵 を使い分ける (教科書4.3節を参照)。
運用: 公開鍵は、広く配る。秘密鍵は秘密にする。
機能: 公開鍵で暗号化すると、秘密鍵を持っている人だけが読むことができる。
機能: 秘密鍵で署名すると、文章を書いた人が秘密鍵の所有者であることが保証される。
秘密鍵が盗まれると? .. 本人でなくても、本人宛の暗号文を読むことができる。本人でなくても、本人をなりすまして署名できる。
鍵ペア (秘密鍵, 公開鍵) の作成
まずは、秘密鍵と公開鍵のペアを各自で作成する。そのうち、公開鍵を友達に配ると、公開鍵暗号を使う準備が完了する。ステップごとに順次実習する。
秘密鍵はファイルとして保存される。そこで、このファイルが流出した場合(たとえばハードディスクが盗まれた場合など)に備えて、秘密鍵を共通鍵暗号で暗号化して保存する仕組みが設けられている。その鍵が、パスフレーズである。
ここで入力するパスフレーズは、秘密鍵を用いる際に毎回聞かれる (ので忘れないようにする)。 作成時にパスフレーズは2回聞かれる (打ち間違いの防止のため)。
暗号化と復号 (自分相手)
準備: 共有鍵で暗号化した himitsu-xxxx.txt.asc を消しておく。
(消し方: Finder で表示して、ゴミ箱に移動する。HWB の
14.3 Finder を使ったファイル操作,
14.3.8 ファイルの削除
を参照)
まずは、自分自身で暗号化と復号を試してみよう。
友達の公開鍵の登録
公開鍵暗号で友達に暗号文を送るには、受信者の公開鍵を知っている必要がある (通常の用途では、事前に安全な方法で配っておく)。今回は電子メールを信用することにして、公開鍵を送りあってみよう。
公開鍵をファイルに出力する
暗号文を送りたい人に xxxx-pub.txt を添付ファイルで添付して、電子メールで送る
(以下送られた立場にスイッチ) 受け取った電子メールに添付された、公開鍵のファイルを保存する
(MailSuiteで普通にダウンロードすると「ダウンロード」フォルダに保存されるので、「Finder」を用いて「ホーム」に移動する)受け取った公開鍵を登録する
現実世界では、うっかり偽の公開鍵をつかまされる危険があるため、慎重なス テップが用意されている。 この演習では、脅かされても “y”とタイプして良い。
暗号化と復号 (友達相手)
準備: 先ほど同様に、自分宛に暗号化した himitsu-xxxx.txt.asc を消しておく。
今度は友達相手に暗号文を送る
友達専用に暗号化する
公開鍵暗号で暗号化した場合、秘密鍵を持つもののみ復号できる。すなわち、 暗号文作成者であっても復号はできない。作成した、暗号文を友達に、電子メールで送付する
(これ以降送られた立場にスイッチして説明する)受信した電子メールの添付ファイルを保存する
(MailSuiteで普通にダウンロードすると「ダウンロード」フォルダに保存されるので、「Finder」を用いて「ホーム」に移動する)復号する
電子署名
練習用の別のファイルを用意する。ファイル名は、honmono-xxxx.txtとする。
自分が書いたという署名を加える
検証
「正しい署名」と出れば成功友人への送付: honmono-xxxx.txt.asc を (既に公開鍵を送っている) 友人に送付する。
(以下送られた立場にスイッチ) 受け取った電子メールの、電子署名付き文書を、上記の手順で検証する。改竄
途中で誰かが、 (あるいは受信者自身が) 内容を書き換えた状況をシミュレートする
テキストエディタなどで、honmono-xxxx.txt.asc を開き、本文の内容を書き換える (たとえば、 1000 円を 1000 万円に)。忘れずに、ファイルを保存する
その後、上記の検証を行うとどうなるか確かめる。 「正しい署名」と出るだろうか?
なお、この演習では、暗号化と署名は別々の概念であることが分かりやすいよう、暗号化と署名を別々に説明した。必要であれば、暗号化と署名を同時に行うことができる。 その際は、$ gpg -r (宛先) -eas (ファイル名) などとする。