わさっきhb

大学(教育研究)とか ,親馬鹿とか,和歌山とか,とか,とか.

PGPかSubversionか

組織内で,安全にファイルやメッセージをやりとりする方法として,今月に入ってPGPを調査してきましたが,メールとは異なる方法で,有望な手段があります.Subversionです.私自身もだいぶ前から使っていて,「研究室 Subversion」で雑記内を検索すると,出る出る….
Subversionを使う場合,プロトコル,言い換えるとリポジトリURLの先頭はfile://,svn+ssh://,http(s)://などが選べますが,今回はhttps://とします.通信としては,HTTP over SSL/TLSを使用することになります.
安全性の比較において,ファイルなどの作者や受信者が悪意を持って漏洩することはないと仮定します.

先に,比較結果

不等号の大きいほうが「良い」ことを表します.

セットアップ:(引き分け)

PGPを使うには,各人がGnuPGほかのソフトウェアをインストールし,鍵ペアを生成して,公開鍵を皆で共有する必要があります.
鍵ペアを誰かが作ってそれぞれに配布するという手段も考えられますが,作成はスクリプトを書けばいいとして,配布の手間はかかります.秘密鍵を含むファイルをやりとりするのが,厄介です.
一方,Subversionではまず,サーバを用意する必要があります.そしてIPアドレスを割り当てます.(Subversionのクライアントと,PGPを使うPCは,IPアドレス可変でもいいし,ときにはネット接続しないというのでもかまいません.)
Apache + SSL + WebDAV + Subversionのインストール方法は,少し調べれば分かります.と言いたかったのですが,http://studio-fun.net/2009/04/04/424/http://hiruandon.net/article.php?story=20070108191759906http://saikyoline.jp/wiki/index.php?%A5%E1%A5%E2%2FWebDAV%A4%C7Subversion#aa2183dbあたりが良さそうです.クライアントは,WindowsならTortoiseSVNを入れればおしまいです.あ,これもサーバ側の作業として,アカウント(ユーザ名と暗号化パスワード)を設定する必要はあるなあ.
セットアップについて,あえて大小関係をつけるなら,利用者(クライアント)側の手間だけだと「PGPSubversion」ですが,Subversionではサーバ設置というコストがかかるため,そこのところで不等号の向きが変わり得ます.とりあえず,「引き分け」としておきます.

ファイル送付:PGPSubversion

セットアップをきちんとしていれば,PGPでは受信者(複数可)の公開鍵で暗号化するだけです.
Subversionでは,ファイルを適切な場所に置いてから,コミットするという手順を踏みます.コミットの際にファイルの衝突が起こったら,その対処に追われます.

ファイル受け取り:PGPSubversion

PGPは復号をするだけですが,パスフレーズを忘れてしまうとどうしようもありません.ファイルサイズが大きいと,メールの受信や,復号に,時間がかかってしまいます.
Subversionでは,HTTP(S)でファイルをダウンロードするだけなので,手軽ですし,エンコードによってメッセージ量が多くなるということもありません.受け取りに限れば,ブラウザのみでできるのも,利点と言っていいでしょう.

ファイル更新:PGPSubversion

あるファイルの内容を書き換えて関係者に伝えるとき,PGPでは送り直しです.前のは古いメールだから捨ててねとアナウンスしないといけません.どこかでフィルタリングされてしまい,最新のファイルを持たない人が,古いファイルを読んで,どうも周囲と話が合わないなあと思う,なんてことも考えられます.
Subversionでクライアントからサーバにアクセスすれば,最新ファイルが取得できますし,日時(正確には,リビジョン番号)を指定して,過去の内容を得ることもできます.ここはSubversionとして譲れないところでしょう.

情報漏洩の起こりにくさ:PGPSubversion

PGPでは,「秘密鍵を含むファイルが漏洩する」と「その秘密鍵を使用するためのパスフレーズが知られてしまう」の2点を満たすときに,鍵が知られてしまい,そこから,過去のメールが復号されてしまう可能性があります.Linuxなどで~/.gnupgを他の利用者は読んだり実行したりできないのは,前者への配慮ですし,後者に関しては,安全なパスフレーズを選ぶよう指導することや,パスフレーズを変更することで,危険性を減らせます.
Subversionについては,組織で共通,またはユーザごとに異なるアカウント情報を通知します.この認証用の情報(BASIC認証なら,ユーザ名とパスワードです)が漏洩すると,保護すべきだった情報が,日本中そして世界中に駆け巡ると言ってもいいでしょう.それと,パスワードをいったん決めると,クライアント側からのコマンドなどの変更で変更するのが容易ではありません.
Subversionについては,HTTPサーバのアクセスログをもとに,どこのIPアドレスから(悪意があると思われる)アクセスが分かるようにできます.例えば,許可していないところからのチェックアウトがあれば,サーバの裏方の部分で補修することになります.PGPでは,どこが発端で情報漏洩したかが分かりにくい,とも言えます*1

結論

情報セキュリティの三大要素の筆頭,機密性を実現するにあたり,採用する暗号アルゴリズムやソフトウェアそのものの安全性だけでなく,利用する当事者それぞれが漏洩をしないよう,日々,配慮しているものとします.
この意味の機密性で,PGPSubversionのどちらが良いかというと,PGPに軍配が上がります.
Subversionについて本日書いた中で,「ファイル更新」のメリットを生かすなら,出席の記録や,テスト問題の維持管理に有用と言えます.

*1:ただしこの点については,比較の前に除外した,当事者の(暗号化されていない)ファイルからというのが,情報漏洩の可能性として最も高いと考えられるので,そこを考慮せずに比較してもなあという思いはあります.