Hedgehog
[ English | Japanese ]
Notice
Hedgehog 0.99はベータ版ソフトウェアです。 重要な暗号化ファイルを編集する際には、 必ずバックアップをとるようにしてください。
Hedgehog 0.99.5以前のバージョンをお使いのかたは、 すぐに0.99.6以降に更新してください。 0.99.5以前のバージョンには、 ファイルの内容を破壊してしまう潜在的な危険性があります。
News
2007/01/30
- Hedgehog 0.99.6を公開しました。
- ファイルの内容を破壊してしまう可能性のある、 致命的な不具合を修正しました。
2006/09/17
- Hedgehog 0.99.5を公開しました。
- Emacs 21系で、 暗号化/復号化の際にゴミが紛れ込む現象を修正しました(たぶん)。
2006/03/27
- Hedgehog 0.99.4を公開しました。
- Cygwin由来などのGnuPGをMeadowで利用できるようになりました (たぶん)。あまり試験できていません。 動作レポート、バグレポートなどお待ちしています (3/31追記:一応動作確認しました。)。
2006/03/25
- Hedgehog 0.99.3を公開しました。
- パスフレーズのキャッシュを破棄する際、 確実にメモリから消えるようにしました。
2006/03/17
- Hedgehog 0.99.2を公開しました。
- call-process-regionは一時ファイルを利用するため、 完全に排除しました。
- MeadowとGnuPG for Windowsの組み合わせに対するサポートが向上しました。
2006/03/16
- Hedgehog 0.99.1を公開しました。
- GnuPGの出力する警告を処理するようになりました。
- Emacs 21をサポートしました。
2006/03/14
- Hedgehog 0.99.0を公開しました。
Introduction
インターネットが一般生活の基盤となったこと、 および、デバイスの小型化が進んだことなどにより、 ラップトップ・コンピュータを持ち歩く人が増えています。 電車の中でラップトップを広げていると、 一昔前は怪訝そうな目で見られたものですが、 最近ではすっかり「よくある風景」になりました。
携帯端末の普及ともに、その盗難が問題になっています。 特に近年の個人情報保護に対する注目の高さから、 携帯端末に保存する情報を暗号化することが求められるようになりました。 たとえば、MacOS XのFileVault、WindowsのEFS (Encrypting File System)、 NetBSDのcgd (cryptographic disk driver)など、 主なオペレーティング・システムでは、 暗号化ファイル・システムや暗号化ディスク・ドライバが提供されるようになりました。
このような仕組みでは、 ユーザ空間から見て完全透過的に暗号化と復号化がおこなわれるため、 アプリケーションを選ばないという特徴があります。 その一方、 必要のないファイルまで暗号化してしまうために動作が遅くなったり、 利用するオペレーティング・システムに依存してしまう、 などと云った問題もあります。
Hedgehogは、 Emacsから暗号化したファイルへのアクセスを支援するためのソフトウェアです。 暗号化には定番ソフトウェアであるGnuPGを利用しています。 暗号化と復号化はユーザに対して完全透過的におこなわれ、 パスフレーズを入力する以外に特別な操作は必要ありません。 たとえば、Wanderlustが利用するアドレス帳を暗号化しておきたい場合でも、 次のようにアドレス帳のファイル名を指定するだけです。
(setq wl-address-file "~/.addresses.gpg")
違うのは、ファイル名の最後に.gpgという拡張子をつけることだけ。 あとはHedgehogがパスフレーズを訊いてきたら、 それに応えればいいのです。
Emacsは多種多様なプラットフォームで動作可能なエディタですから、 環境が変わったときにも安心して利用できます。 また、 ファイルの拡張子を指定することで、 利用者が必要なときに必要なファイルだけを選択的に暗号化できます。 さらに、 trampと組み合わせることで遠隔ホストにあるファイルも扱えますから、 利用する計算機の数だけ機密ファイルをコピーしたりする必要もありません。
Features
Hedgehogは以下のような特徴を持っています。
- 通常のファイルを扱うかのような、透過的なインタフェイス
- 平文の一時ファイルを完全に排除
- パスフレーズの有効期限付きキャッシュ
- trampとの組み合わせによる、 遠隔ホスト上の暗号化ファイルに対する透過的な操作
- 単一ファイルをロードするだけで簡単動作
Environment
Hedgehogの動作が確認されているEmacsenとGnuPGは以下のものです。
Emacsen
- GNU Emacs 22.0.50 (各種UNIX)
- GNU Emacs 21.3.1 (各種UNIX)
- Meadow 3.00-dev (Windows/GNU Emacs 22.0.50)
XEmacsでは動作しません。
GnuPG
- GnuPG 1.4.6
- GnuPG 1.4.2.2 for Windows (distributed by gnupg.org)
- GnuPG 1.4.2.2 for Windows (compiled for cygwin)
GnuPG 2系は未検証ですが、 少なくともlibgcrypt 1.2.3を使っている場合は、 そこに含まれる不具合のため動作しません。
なお、gnupg.org由来のGnuPG for Windowsを利用する場合は、 以下のどちらかを満たしている必要があります。
- Meadow 3.00-devを利用していること (Meadow2でも動作するかもしれませんが未確認)
- GnuPGのインストール時に選択した言語環境が英語であること (後からでもレジストリで変更できます)
Instructions
Installation
hedgehog.elをload-pathの通ったところに置き、 以下の行をEmacsの設定ファイルに追加します。
(load "hedgehog" nil t)
byte-compileしたい場合は、 以下のようにしてできたhedgehog.elcを一緒に上記の場所に置けばいいでしょう。
emacs -q -batch -f batch-byte-compile hedgehog.el
Encryption/Decryption
Hedgehogは完全透過的に動作するので、 暗号化と復号化のために特別な操作をする必要はありません。 ただ、".gpg"という拡張子のついたファイルを操作するだけです。
Hedgehogは必要に応じて、 ファイルを暗号化・復号化するためのパスフレーズを訊いてきます。 また、可能な場合は入力したパスフレーズをキャッシュし、 同時にパスフレーズを破棄するためのタイマを開始します。 これにより一定時間経過すると、 パスフレーズのキャッシュは安全のため自動的に削除されます。 このタイマはキャッシュを使った場合にリセットされます。 たとえば、バッファを保存するした場合は、 そのときから数えて指定時間後に破棄されるようになります。
Hedgehogは暗号化・復号化の過程において、 平文の一時ファイルを一切生成しません。 一瞬であっても平文のファイルが存在するのは気分のよくないものです。 特に、NFSのようなファイルシステムは、 誰でも他人のファイルを覗き見ることができるので大変危険です。 Hedgehogではそのような危険をできる限り排除しています。
Configuration
以下の項目を設定することで、Hedgehogの挙動を変えることができます。 お好みに応じてEmacsの設定ファイルに追加してください。
- hedgehog-gnupg-program-name
- GnuPGの実行可能ファイル名を指定します。デフォルトは"gpg"です。
- hedgehog-cipher-algo
- 暗号化に利用するアルゴリズムを指定します。 GnuPGに"--version"オプションをつけて実行すると、 サポートしているアルゴリズムの一覧が表示されるので、 好みのものを選びます。デフォルトは"AES"です。
- hedgehog-gnupg-file-name-regexp
- 自動的に暗号化・復号化をおこなう対象とする、 ファイルの正規表現です。デフォルトでは"\\.gpg\\'"、 すなわち、.gpgという拡張子を持つファイルを対象とします。
- hedgehog-passphrase-cache-hold-time
- 入力したパスフレーズのキャッシュを保持する時間を指定します。 正確には、最後にキャッシュを利用したときから指定された秒数後に、 キャッシュを破棄します。 また、値にはbooleanを指定することもできます。 tはキャッシュを破棄しないことを、 nilはパスフレーズを全くキャッシュしないことを表します。 デフォルトは300秒です。
なお上記の項目は、M-x customize-group RET hedgehog RETでも設定できます。
Download
最新版は0.99.6です。 ダウンロードは こちら。