crypt
' メカニズムを理解する
原作: Garrett Wollman
<wollman@FreeBSD.ORG>
24 September 1995.
訳: 花井浩之
<hanai@FreeBSD.ORG>
12 September 1996.
UN*X システムにおいてパスワードを保護し, 簡単に覗かれるのを防 ぐために, 従来パスワードはある方法によりスクランブルされてきました. ベル研の Unix 第7版に始まって以来, パスワードはセキュリティの専門家がい うところの「一方向ハッシュ関数」というものを用いることにより暗号化されるようになりました. つまり, 可能な限りのパスワード空間を検索するという強引な 方法以外にそのオリジナルを得ることができない, といった方法でパスワードは変換 されるのです. 不幸なことに, その当時 AT&T の研究者たちが手に入れることができ た唯一の暗号化方法は DES(Data Encryption Standard) に基づいたものでし た. これは営利企業にとっては大して問題ではありませんが, FreeBSDのよ うにすべてのソースコードが自由に手に入るオペレーティングシステムにとっ ては重大な問題となります. なぜなら, 多くの政府は DES やその他の暗号化ソフ トウェアが国境を越えることに制限をつけようとしているからです.
ここで, FreeBSD チームは一つのジレンマに直面しました. つまり, どうす
れば法に触れることなく国外にあるそれらの UNIX システムのすべてに互換性を持
たせることができるか, ということです. 私たちは ``dual track approach'' を
取ることに決めました. 規制されていないパスワードスクランブラのみを含む
配布用物件を作り, DES に基づいたパスワードハッシュを付加ライブラリ
として分けて供給するのです. パスワードをスクランブルさせる関数は, C ライブラリから
`libcrypt
' と呼ばれる(それを実行する C 関数が `crypt
' と
いう名前だからです)別のライブラリへ移されました. FreeBSD 1.x 及び
2.0 のリリース前のスナップショットでは, その規制されていないスクランブラは
Nate Williams によって書かれた安全でない関数を使っていますが, 次の
リリースでは RSA Data Security 社の一方向ハッシュ関数の MD5 を使う方法
に置き換えられました. これらの関数はどれも暗号化を含んでいないため,
合衆国から持ち出し, 他の多くの国へ持ち込めるものであるとされています.
一方, DES に基づいたパスワードハッシュ関数に関する作業もまた進行中
でした, まず, 合衆国及び他の国で書かれたコードの同期をとりながら,
合衆国の外で書かれた `crypt
' のあるバージョンが持ち込まれました.
そしてライブラリは修正され, 二つにわけられました. すなわち
DES `libcrypt
' は一方向パスワードハッシュをおこなうのに必要なコード
のみを含み, それとは別の `libcipher
' は実際に暗号化をおこなう
ためのエントリポイントとして生成されました. コンパイルされたライブラリに対
して国外に持ち出す許可を得るのを簡単にするために, コードはこのように分け
られたのです.
crypt
' メカニズムを理解するcrypt
' メカニズムを理解する