[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3. 使い方

このライブラリーの最上位インタフェースはとても単純で、公開鍵による暗号の 操作のみを想定しています。

PGG を使うためには、アプリケーションプログラムの冒頭で次の S 式を評価し てください。

 
(require 'pgg)

実行時に pgg.el の存在を確認したいなら、上記の方法ではなく以下のように、 必要な機能の autoload を設定することもできます。

 
(autoload 'pgg-encrypt-region "pgg"
  "Encrypt the current region." t)
(autoload 'pgg-encrypt-symmetric-region "pgg"
  "Encrypt the current region with symmetric algorithm." t)
(autoload 'pgg-decrypt-region "pgg"
  "Decrypt the current region." t)
(autoload 'pgg-sign-region "pgg"
  "Sign the current region." t)
(autoload 'pgg-verify-region "pgg"
  "Verify the current region." t)
(autoload 'pgg-insert-key "pgg"
  "Insert the ASCII armored public key." t)
(autoload 'pgg-snarf-keys-region "pgg"
  "Import public keys in the current region." t)

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.1 ユーザーコマンド

この時点で、いくつかの暗号に関するコマンドを使うことができます。これらの コマンドの挙動は起動方法に依存します。これらのコマンドは、ライブラリー関 数として利用されることもあるからです。例えば、あなたがある署名者の公開鍵 を持っていないと pgg-verify-region という関数は即座に失敗しますが、 これが対話的に呼び出された場合には、サーバーから公開鍵をダウンロードする かどうかをあなたに尋ねます。

Command: pgg-encrypt-region start end recipients &optional sign passphrase

startend の間の領域を recipients 宛に送るものとし て暗号化します。対話的に呼ぶと、受信者を尋ねます。

暗号化に成功すると、現在の領域の内容を暗号化したデータで置き換えます。

オプション引数 signnil でなかったら、署名と暗号化を同時 に行ないます。現在この機能は GnuPG で動作することが確認されていますが、 PGP や PGP5 では動作しないかもしれません。

オプション引数 passphrasenil だったら、パスフレーズの キャッシュからか、またはユーザーに入力してもらうことによってパスフレーズ を得ます。

Command: pgg-encrypt-symmetric-region &optional start end passphrase

現在の startend の間の領域を、共通鍵暗号 (symmetric cipher) で暗号化します。呼び出した後でパスフレーズが尋ねられます。

オプション引数 passphrasenil だったら、パスフレーズの キャッシュからか、またはユーザーに入力してもらうことによってパスフレーズ を得ます。

共通鍵暗号による暗号化は、現在 GnuPG だけで実装されています。

Command: pgg-decrypt-region start end &optional passphrase

startend の間の領域を解読します。解読に成功すると、現在 の領域の内容を解読したデータで置き換えます。

オプション引数 passphrasenil だったら、パスフレーズの キャッシュからか、またはユーザーに入力してもらうことによってパスフレーズ を得ます。

Command: pgg-sign-region start end &optional cleartext passphrase

startend の間のテキストに署名します。三番目のオプション 引数 cleartextnil ではないか、あるいは対話的に呼ばれた 場合、分離された署名を作りません。そのような場合には、現在の領域の内容を 署名したデータで置き換えます。

オプション引数 passphrasenil だったら、パスフレーズの キャッシュからか、またはユーザーに入力してもらうことによってパスフレーズ を得ます。

Command: pgg-verify-region start end &optional signature fetch

startend の間の領域にある署名を検証します。三番目のオプ ション引数 signaturenil でなかったら、その引数は現在の 領域の分離された署名のファイルとして取り扱われます。

四番目のオプション引数 fetchnil ではないか、あるいは対 話的に呼ばれた場合、公開鍵をサーバーから取得します。

Command: pgg-insert-key

ユーザーの公開鍵を取得して、それを ASCII 装甲の形式で挿入します。

Command: pgg-snarf-keys-region start end

startend の間の領域にある公開鍵を集め、ユーザーの鍵 束 (keyring) に追加します。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.2 どの実装を使うか

PGP は歴史が長く、今では多くの実装を利用することができるので、それぞれが 持っている個々の機能がずいぶん異なっていることがあります。例え ば GnuPG を使っているのならば、暗号アルゴリズムとして 3DES や CAST5、 BLOWFISH などを選ぶことができますが、PGP のバージョン 2 は IDEA しかサポー トしていません。

どの実装を使うかは pgg-scheme 変数が制御します。nil だった ら (それがディフォルト)、代わりに pgg-default-scheme 変数の値を使 います。

Variable: pgg-scheme

どの PGP 実装を用いるかを強制します。設定できるのは gpgpgp および pgp5 のどれかです。ディフォルトは nil で す。

Variable: pgg-default-scheme

ディフォルトの PGP 実装です。値は gpgpgp およ び pgp5 のどれかでなければなりません。ディフォルト は gpg です。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.3 パスフレーズをキャッシュする

PGP 実装として GnuPG (gpg) を使うのであれば、パスフレーズの入力とキャッ シュ(1)するために gpg-agent というプログラムを使うことを推奨します。

Variable: pgg-gpg-use-agent

nil でない値では、可能な場合は常にいつでも gpg-agent を使 おうとします。ディフィフォルトは t です。gpg-agent が稼働 していないか、または GnuPG が現在の PGP 実装として選択されていない場合は、 PGG 自身が持っているパスフレーズをキャッシュする仕組みが使われます (下記 参照)。

PGG で gpg-agentを使うには、第一に gpg-agent が確実に稼働 しているようにしてください。例えば X Window System を走らせているのであ れば、以下の行をあなたの ‘.xsession’ ファイルに置くことによって、そ れを確実にすることができます:

 
eval "$(gpg-agent --daemon)"

gpg-agent の起動に関するさらに詳しいことは、See (gnupg)Invoking GPG-AGENT section ‘Invoking GPG-AGENT’ in Using the GNU Privacy Guard.

GnuPG のパスフレーズを必要とする PGG の機能を実行するときはいつも、 GnuPG は gpg-agent とやり取りを行ない、それはあなたにパスフレーズ を入力することを要求します。しかし gpg-agent がその結果を「キャッ シュ」するので、次回以降の実行では再びパスフレーズの入力は要りません。 (通常このキャッシュは一定時間経過後に期限切れ消去されます。これを変更す るには、gpg-agent を起動するときに --default-cache-ttl オ プションを使ってください。)

X Window System の環境では gpg-agent はパスフレーズの入力を要求す るためにグラフィックなウィンドウを開きます。しかし文字端末で Emacs を使っ ている場合は、gpg-agent は端末からの入力を受け取る上で問題があり ます。それが Emacs に送られてしまうからです。この問題に対処するための暫 定的な対策のひとつは、gpg-agent--keep-tty オプションと ともに Emacs とは別の端末で走らせることです。これは gpg-agent に、 パスフレーズの入力にそれ自身の端末を使うようにさせます。

gpg-agent を使わない場合、PGG は Emacs を介してパスフレーズの入力 を要求します。これにはパスフレーズをキャッシュする仕組みがあり、それは変 数 pgg-cache-passphrase で制御されます (下記参照)。

gpg-agent ではなく PGG でパスフレーズを扱う場合には安全上のリスク があります。Emacs の要求に従ってパスフレーズを入力すると、それは一時的 に Emacs が実行しているメモリーに cleartext 文字列として格納されます。も しそのメモリーがディスクとの間で swap されると、理論上 root ユーザーはパ スフレーズを swap ファイルから抽出することができます。その上、そのシステ ムが廃棄されたり盗難に会った後も、その cleartext のパスフレーズが含まれ ている swap ファイルはディスクに残っているかもしれないのです。 gpg-agent はメモリーを lock するような策をもって、この問題を回避 しています。それは Emacs には実装されていません。

Variable: pgg-cache-passphrase

nil でなければ、パスフレーズを保持します。初期値は t です。 しかし、あなたがセキュリティについて気掛かりなら、この変数 を nil に設定することによって、パスフレーズのキャッシュをやめさせ ることができます。

Variable: pgg-passphrase-cache-expiry

パスフレーズを保持しておく時間を秒で指定します。

パスフレーズが非-ASCII 文字を含んでいる場合は、それをエンコードするため の coding system を指定する必要があります。GnuPG はパスフレーズを文字列 としてではなく、バイト列として扱うからです。

Variable: pgg-passphrase-coding-system

パスフレーズをエンコードするための coding system です。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.4 ディフォルトのユーザー ID

通常 PGP の実装は、暗号化および復号化に使う適切な鍵を選ぶことができます が、あなたが一つ以上の鍵を持っている場合、用いる鍵の id を指定する必要が あります。

Variable: pgg-default-user-id

ディフォルトのユーザー ID です。指定しない場合 は ‘(user-login-name)’ の戻り値がディフォルトになります。この変数は カスタマイズ可能です。

Variable: pgg-gpg-user-id

GnuPG で使うディフォルトのユーザー ID です。ディフォルトは ‘nil’ で す。nil ではない値にすると、‘pgg-default-user-id’ より優先し て使われます。カスタマイズ可能です。

Variable: pgg-pgp-user-id

PGP 2.x/6.x で使うディフォルトのユーザー ID です。ディフォルト は ‘nil’ です。nil ではない値にすると、 ‘pgg-default-user-id’ より優先して使われます。カスタマイズ可能です。

Variable: pgg-pgp5-user-id

PGP 5.x で使うディフォルトのユーザ ID です。ディフォルトは ‘nil’ で す。nil ではない値にすると、‘pgg-default-user-id’ より優先し て使われます。カスタマイズ可能です。


[ << ] [ >> ]           [Top] [Contents] [Index] [ ? ]

This document was generated by Yasutaka SHINDOH on May 11, 2011 using texi2html 1.82.