MacOSXでGnuPGを使おう

公開日2003年4月10日 最終更新日2003年11月13日

はじめに

  1. GnuPGとは
  2. 本文書の趣旨
  3. 本文書の目的
  4. ソフトウェアのバージョン情報

GnuPGのインストールと設定

  1. GnuPGのインストール
  2. ターミナルの設定
  3. 公開鍵と秘密鍵の作成
  4. 自分の公開鍵をファイルに書き出す
  5. GPGMailのインストール

gpgコマンドによる操作

  1. 公開鍵の一覧を表示する
  2. 相手の公開鍵を取り込む
  3. 相手の公開鍵に署名する
  4. 公開鍵の指紋を表示する
  5. 相手の公開鍵を一覧から削除する
  6. ファイルを暗合化する
  7. ファイルを復号化する
  8. 廃棄証明書の作成
  9. 廃棄証明書の読み込み(鍵の廃棄)
  10. コマンドの一覧を表示する

参考Webサイト

  1. GnuPG関連
  2. プライバシー問題関連

はじめに

GnuPGとは

GnuPGは、悪意ある第三者や国家権力から個人情報を保護するために開発された暗合化ソフトPGPの代替手段で、米国などの輸出規制を受けず、特許に抵触する技術を使っていないため、制限なく使用する事ができます。

本文書の趣旨

MacOSXの場合に限った話ではありませんが、現状においてGnuPGを使うにはCUI環境から操作しなければいけません。そこで、本文書では必要最低限の情報と解説を紹介します。

これは、素人の素人による素人のためのマニュアルを意図したものだからです。玄人による啓蒙活動を否定する気はまったくありませんが、それには欠けている何かがあると思い、自分が知識を得ていった過程を公開する事で自分なりのマニュアルとします。

本文書の目的

日本国憲法第21条第2項には、次の様に記されています。

検閲は、これをしてはならない。通信の秘密は、これを侵してはならない。

しかし、近年の動向(盗聴法の成立など)を見ると、自分の身は自分で守らざるをえない状況であるといえ、その手段の一つがGnuPGあるいはPGPの導入です。

本文書やGnuPGの導入を通じてプライバシー問題などに関心をよせていただければ、それにまさる喜びはありません。

ソフトウェアのバージョン情報

筆者が使用したソフトウェアのバージョンは、MacOSXが10.2.4、GnuPGが1.2.1、GPGMailが0.5.4の場合、及び、MacOSXが10.3.1、GnuPGが1.2.3、GPGMailが1.0の場合です。ただし、筆者がその内容に完全な安全性を保証するものではありません。自己責任でお使い下さい。

GnuPGのインストールと設定

GnuPGのインストール

UNIXの流儀・伝統では、自分の環境でビルドしてインストールする方法がありますが、Mac GNU Privacy GuardでInstaller Packageが配付されているので、それを入手し、インストールするのが無難です。

この作業が終わりましたら、ターミナルの設定をした後に公開鍵と秘密鍵の作成をします。

ターミナルの設定

ターミナルの初期設定では、GnuPGを扱う時に文字化けしてしまうため、設定を変更する必要があります。

「アプリケーション」→「ユーティリティ」→「ターミナル」を起動。つづいて、「ファイル」メニューから「情報を見る」を選択し、ターミナルインスペクタを表示させます。

ターミナルインスペクタ

表示されたターミナルインスペクタのホップアップメニューから「ディスプレイ」を選択し、文字セットエンコーディングのホップアップメニューから「日本語(EUC)」を選択(上記ピクチャ参照)し、ターミナルインスペクタ・ウィンドウを閉じます。

これでターミナルの文字コードがEUCになりました。今後もターミナルでGnuPGのコマンドを入力する前はここを確認して下さい。

つづいて、公開鍵と秘密鍵の作成をします。

公開鍵と秘密鍵の作成

まず、辞書とオプションファイルを作成します。以下のコマンドを入力した後、[return]で実行してください。

gpg

反応があれば、パスが通っている証拠です。つづいて公開鍵と秘密鍵を作成します。以下のコマンドを入力した後、[return]で実行してください。

gpg --gen-key

鍵の作成を開始した後、作成する鍵のタイプを聞かれる。特別な理由が無い限り1と入力した後、[return]で実行してください。

つづいて、鍵の長さを768〜2048の範囲で指定します。1024が初期設定ですが、好きな値を入力した後、[return]で実行してください。

鍵の有効期限を指定します。初期設定は0(永久的)ですが、特に問題が無いので[return]で実行してください。

これでいいですか (y/n)?

確認を問われるのでyと入力した後、[return]で実行してください。

つづいて、名前・メールアドレス・コメントをそれぞれ入力します。項目ごとに半角英数で入力した後、[return]で実行してください。

最後にパスフレーズの設定をします。パスワードと同じものと考えても問題ありませんが、スペースを含む事も可能で長さも事実上制限がありません。パスフレーズを入力した後、[return]で実行してください。

パスフレーズの入力後に乱数の生成が始まります。この作業は自動で、終了した時点が鍵の作成の終了です。

乱数の生成が終わりましたら、つづいて自分の公開鍵をファイルに書き出しをします。

自分の公開鍵をファイルに書き出す

自分宛に暗合化されたメールを送ってもらうには、送信者に対して事前に自分の公開鍵を渡しておく必要がある。その渡す公開鍵のファイル(pubkey.txt)の作成します。以下のコマンドを入力した後、[return]で実行してください。なお「User-ID」の部分は、登録した自分のメールアドレスにかえてください。

gpg -a --export User-ID > pubkey.txt

自分のホーム直下に「pubkey.txt」というファイルが作成されていれば成功です。このファイルを送信者に渡しておきましょう。

つづいて、MacOSX標準メールクライアントのMail.appで暗号化メールの送受信をするためにGPGMailのインストールをします。

GPGMailのインストール

この作業を行う前に、Mail.appが起動していたら終了させてください。

GPGMailから「GPGMail-MOX-b.dmg」ダウンロードし、終了後その「GPGMail-MOX-b.dmg」をFinder上でダブルクリック。ディスクイメージをマウントする。

ホーム内「ライブラリ」→「Mail」フォルダ内に「Bundles」フォルダを作成。この「Bundles」フォルダ内にマウントしたディスクイメージから「GPGMail.mailbundle」をコピーする。

ターミナルで、以下のコマンドを入力した後、[return]で実行してください。

defaults write com.apple.mail EnableBundles YES

なお、MacOSX v10.3.x環境の場合は、続けて以下のコマンドを入力した後、[return]で実行してください。

defaults write com.apple.mail BundleCompatibilityVersion 1

コマンド実行後にMail.appを起動し、「メッセージ」メニューに「PGP」という項目が追加されていれば成功です。

Mail - 環境設定

また、「環境設定」の項目にもPGPに関する設定ができるようになっています。(上記ピクチャ参照)

これで、MacOSXでGnuPGを使うための準備は全部整いました。

gpgコマンドによる操作

公開鍵の一覧を表示する

現在、自分が保有している公開鍵の一覧を表示します。ターミナルで、以下のコマンドを入力した後、[return]で実行してください。

gpg --list-keys

ここで表示された一覧を参考に、一覧に無い鍵は取り込むとか、一覧にある鍵は編集や削除をするための判断に使うと良いでしょう。

相手の公開鍵を取り込む

通信相手の公開鍵を取り込みます。「filename.txt」の部分は取り込むファイル名に変更してターミナルで、以下のコマンドを入力した後、[return]で実行してください。

gpg --import filename.txt

なお、取り込んだ直後の公開鍵は信用度が不明な状態のため暗合化には使用できません。下記の相手の公開鍵に署名する事で暗号化に使用できます。

相手の公開鍵に署名する

通信相手の公開鍵を編集・署名します。「User-ID」の部分は編集・署名したい相手のメールアドレスに変更してターミナルで、以下のコマンドを入力した後、[return]で実行してください。

gpg --edit-key User-ID

さらにつづけて、ターミナルで、以下のコマンドを入力した後、[return]で実行してください。

trust

ここで、2〜5の4段階で信用度を入力し、[return]で実行してください。

決定の確認を聞かれるのでyと入力した後、[return]で実行してください。

つづいて、署名をするためにターミナルで、以下のコマンドを入力した後、[return]で実行してください。

sign

ここで、2または3を入力し、[return]で実行してください。

本当に署名しますか?

確認を聞かれるのでyと入力した後、[return]で実行してください。

つづいて、パスフレーズの入力をして署名をします。

これで、編集・署名作業は終わりです。ターミナルで、以下のコマンドを入力した後、[return]で実行してください。

quit

変更を保存するか問われるので、yと入力し、[return]で実行してください。

公開鍵の指紋を表示する

公開鍵の指紋を表示させます。「User-ID」の部分を指紋を表示させたい相手のメールアドレスに変更してターミナルで、以下のコマンドを入力した後、[return]で実行してください。

gpg --fingerprint User-ID

相手が、Webサイトやメールにて公開鍵の指紋を公開していれば、コマンドの実行結果と比較して本物か否かの判断に使えます。

相手の公開鍵を一覧から削除する

通信相手の公開鍵を一覧から削除します。「User-ID」の部分を公開鍵を削除したい相手のメールアドレスに変更してターミナルで、以下のコマンドを入力した後、[return]で実行してください。

gpg --delete-key User-ID

鍵輪から削除するかをとわれるので、yと入力し、[return]で実行してください。

なお、公開鍵を削除する場合は一般に鍵の新調など非常に限られたケースに限定されると思われます。

ファイルを暗号化する

任意のファイルを暗号化します。「User-ID」を復号化する人のメールアドレスに、「filename.jpg」を任意のファイル名に変更してターミナルで、以下のコマンドを入力した後、[return]で実行してください。

gpg -r User-ID -e filename.jpg

なお、暗合化後のファイル名は元のファイル名に拡張子「.gpg」が付いたものになります。(上記の例文の場合は、「filename.jpg.gpg」となる。)

また、User-IDを自分のメールアドレスにした場合は、自分だけが復号化できるファイルとなります。

ファイルを復号化する

暗合化されたファイルを復号化します。「filename.jpg.gpg」の部分を復号化したい暗号化ファイル名に、「filename.jpg」の部分を復号後のファイル名に変更してターミナルで、以下のコマンドを入力した後、[return]で実行してください。

gpg -d filename.jpg.gpg > filename.jpg

なお、上記コマンドを実行するとパスフレーズの入力を求められる。

廃棄証明書の作成

秘密鍵が盗難にあった等の対策のため、あらかじめ廃棄証明書を作っておく必要がある。その廃棄証明書(revkey.txt)を作成します。ターミナルで、以下のコマンドを入力した後、[return]で実行してください。

gpg -o revkey.txt --gen-revoke User-ID

0〜3の選択肢で理由を聞かれるので、任意の番号を入力し、[return]で実行してください。

つづいて説明文を書きますが、ここは空白でもかまいません。[return]で次にすすんでください。

確認を聞かれますのでyと入力し、[return]で実行してください。

つづいて、パスフレーズの入力をして廃棄証明書を作成します。

自分のホーム直下に「revkey.txt」というファイルが作成されていれば成功です。 このファイルは、注意して保存しておいてください。

なお、GnuPGの場合、廃棄証明書の作成だけでは鍵は廃棄されません。廃棄証明書を読み込んだ時点で廃棄されることとなります。したがって、この廃棄証明書は不正に使用すると誰でも鍵を廃棄できることになります。取り扱いには注意してください。

廃棄証明書の読み込み(鍵の廃棄)

現在使用中の公開鍵・秘密鍵ペアを廃棄します。「revkey.txt」を読み込むファイル名に変更してターミナルで、以下のコマンドを入力した後、[return]で実行してください。

gpg --import revkey.txt

廃棄後は、新たに公開鍵・秘密鍵ペアを作成できることになります。

コマンドの一覧を表示する

上記以外の紹介していないコマンドを含め、コマンドの一覧を見るにはターミナルで、以下のコマンドを入力した後、[return]で実行してください。

gpg --help

参考Webサイト

GnuPG関連

筆者が本文書を作成する上で参考にしたサイト及びPGPやGnuPGの情報サイトです。本文書の内容より踏み出したい場合などには、大いに役に立つと思われます。

プライバシー問題関連

GnuPGとは直接の関係はありませんが、プライバシー問題を理解するのに役立つサイトです。

Copyright © El Pibe. All rights reserved.