1. 目的

概要

この演習の概要は次のスライドのとおりです.GPG(GNU Privacy Guard)により,公開鍵に基づいた暗号や署名を試し,公開鍵暗号方式の暗号や署名についての理解を図ります.

概要

なおスライドはクリックすると拡大します(ほかのスライドも同様).

公開鍵暗号方式の前提環境

公開鍵暗号方式を利用する場合,参加者は自分自身の秘密鍵(通常1つ)と自分を含む参加者の公開鍵複数を持つことを前提としています.

前提環境

暗号化通信の基本

暗号による通信は,次のようなステップで実行されます.

  1. 暗号文の送信者は,受信者の公開鍵を用いて,暗号文を作成する.
  2. 暗号文の受信者は,自分自身の秘密鍵を用いて,暗号文を復号する.
秘密鍵を持つ受信者のみが復号できる」ことになります.

AからBへの暗号 BからAへの暗号

署名付通信の基本

署名付の通信は,次のようなステップで実行されます.

  1. 文書の署名者は,自分自身の秘密鍵を用いて,署名付文書を作成する.
  2. 他の参加者は,署名者の公開鍵を用いて,文書の署名を検証する.
秘密鍵を持つ署名者のみが署名できる」ことになります.

Aの署名付文書作成 署名付文書の検証

GPGの利用方法

参加者は「gpg --gen-key」コマンドで自分自身の公開鍵と秘密鍵のペアを作成します.このとき鍵の作成者を示す user-id として本名とメールアドレスを登録します.また他人から秘密鍵を守るためのパスフレーズ(パスワード)の入力を求められます.作成した公開鍵と秘密鍵は鍵束に登録されるので,公開鍵は「gpg --list-keys」,秘密鍵は「gpg --list-secret-keys」で確認できます.また,鍵束から鍵を削除する場合,公開鍵は「gpg --delete-key」,秘密鍵は「gpg --delete-secret-key」を利用します.鍵束の中から削除する鍵を特定するために,user-idを用います.

鍵ペアの作成

参加者間での公開鍵の交換には,公開鍵ファイルを利用します.まず鍵ペアの作者が,自分自身の公開鍵ファイルを「gpg --export」コマンドで作成します.通常,鍵束には複数の公開鍵が入っているので,書き出すべき(自分自身の)鍵を特定するために user-id を入力します.このとき「-ao」オプションによってASCII文字列(と言っても見た目は無意味です)の公開鍵ファイルのファイル名を指定します.公開鍵ファイルを受け取った人は「gpg --import」コマンドで(公開)鍵ファイル内の鍵を鍵束に取り込むことができます.

公開鍵の受渡し

GPGでの暗号化は「gpg -ea」コマンドで行います.このとき暗号受信者(鍵束内にある公開鍵)の user-id を「-r」オプションで指定します.平文のファイルが暗号化されて,.asc という拡張子のついた暗号文のファイルが作成されます.暗号の受信者は「gpg -d」コマンドで暗号文を復号します.

GPGによる暗号通信

GPGでの署名付加は「gpg --clearsign」コマンドで行います.秘密鍵が2つ以上ある場合には,「-u」オプションで署名の user-id を特定します.署名されたファイルを検証するには「gpg --verify」コマンドを利用します.このとき公開鍵の信頼度(本当にuser-idで示される人の公開鍵か否か)が問題になります.自分の持つ user-id の公開鍵に「gpg --lsign-key」コマンドで署名することによって,公開鍵の信頼度を上げることができます.

GPGによる署名と検証