サインつきアーカイブ

チェックサムの計算だけでは、作為的な悪意のある改懺からデータ を守ることはできない。チェックサムを計算する元データを変更して、そ れに対するチェックサムを計算し、元のファイルとそれぞれ置き換えれば チェックサムの妥当性検証をすり抜けることができる。これを防ぐために はアーカイブをサインつきとして設定する必要がある。サインつきアーカ イブのアイディアは非常に単純である。前節で説明したチェックサムファ イルに対してなんらかの暗号方式で署名するだけである。これで追加デー タを別の悪いあるもので置き換えたあとチェックサムを計算することはで きても、そのチェックサムに正しい署名をすることは本人にしかできない ので結果的にデータの改懺は不可能になる。

サインつきアーカイブを作るには、tla make-archive で --sign オプションをつけて作成するだけでよい。これはアーカイブをとにかくサ インつきとすることを指示するだけであって、具体的にどのような暗号方 式を利用するかを決めるものではない。具体的なサインの仕方は、

~/.arch-params/signing/アーカイブ名

というファイルに実際のサインの仕方を示す単一のシェルコマンド を指定する。典型的には、たとえば octopus@bluegate.org--2004 をサインつ きアーカイブとして作成したあと

~/.arch-params/signing/octopus@bluegate.org--2004

という通常のファイルを作り、その中に

gpg --clearsign

のように書く。gpg は GnuPG と呼ばれる pgp の実装である。gpg そのものの説明や設定方法はこのドキュメントの範囲を越えている。

http://www.gnupg.org/

のページなどを参考にしてほしい。主要な unix 系 os であれば パッケージに含まれていることが多いのでインストールは容易だと考えら れる。

指定するプログラムは標準入力からチェックサムファイルの内容を 受け取り、標準出力に対してサインした結果を返すような任意のプログラ ムを設定することができる。たとえば上の例では、gpg プログラムはパス フレーズと呼ばれるパスワードを起動のつど対話的に聞いてくる。つまり import, commit, tag, cacherev のようなコマンドを実行するたびにパス ワードを入力しなくてはならない。これは頻繁にコミットするような環境 では不便なので、パスワードをキャッシュするようなプログラムもある。 たとえば agpg と呼ばれるようなプログラムは一度だけパスフレーズを入 力するとそれ以降はメモリ中にその内容をキャッシュしておいてくれるも のだ。このようなプログラムを使う場合には、

~/.arch-params/signing/octopus@bluegate.org--2004

という通常のファイルの内容は

gpg --clearsign

のかわりに

agpg --clearsign

のような設定になる。こちらについても詳しい説明は agpg のサイ トを参照してほしい。