[mew-dist 26769] Re: 暗号ファイルのススメ

Kazu Yamamoto ( 山本和彦 ) kazu at example.com
2006年 1月 30日 (月) 11:06:26 JST


> > > 復号化された平文ファイルは一時的に、暗号ファイ
> > > ルと同じディレクトリに書き込まれる。残念ながら
> > > 作業をすべてメモリー上で済ませる方法は、著者の
> > > 知る限り存在しない。
> 
> gpg -d file で標準出力に吐くと思うけれど、
> emacs では一時ファイルを作らないと扱えないの?

とりあえず、ここだけ。

問題は複雑ですが、問題を簡単にするために、一旦パスワードのことは忘れま
す。GnuPG を同期プロセス、call-process-region で呼び出すことを考えてみ
ましょう。復号化の際は、標準出力に書き出された平文が直接バッファに入る
のように見えますが、一時ファイルが作られています。暗号化の際は、平文の
バッファは一旦一時ファイルに書き込まれ、プロセスに渡されます。なので、
この単純な例だけでも破綻します。

問題の本質は、パスワードをどう GnuPG に渡すかです。基本的に僕は、パスワー
ドは平文よりも重要であるという立場に立っています。これに同意できない人
には、以下の議論は無意味かもしれません。

GnuPG にパスワードを渡す方法は、以下の 4 つです。
      標準入力
      環境変数
      コマンド引数
      ファイル記述子

環境変数やコマンド引数は、ps で見えるので論外です。
ファイル記述子は、よい方法ですが、Emacs では取り扱えません。
そうなると、標準入力しかありません。

Emacs からメモリのデータを直接子プロセスに渡す方法は、子プロセスを非同
期にし(つまり call-process-region は使わない)、proces-send-string で標
準入力に書き込むことのみです。

標準入力がパスワードに取られる以上、平文/暗号文はファイルとして指定する
しかありません。

問題をもっともすっきり解決する方法は、libgcrypt を Emacs にリンクするこ
とですが、rms が同意するとも思えません。

--かず







Mew-dist メーリングリストの案内