15.4. DES, MD5 と Crypt

改訂: Swingle Bill [FAMILY Given].

訳: 花井 浩之 , 12 September 1996.

訳改訂: 日野 浩志 , 12 March 2001.

Unix システムにおけるすべてのユーザは、そのアカウントに対応し た一つのパスワードを持っています。それらのパスワードはユーザ本人 と本当のオペレーティングシステムのみが知っているべきであるという ことは明らかでしょう。それらのパスワードを秘密に保っておくために、 パスワードは一方向ハッシュとして知られる方式で暗 号化されます。一方向ハッシュとは、簡単に暗号化はできるが解読は難 しいという方法です。言葉を換えると、先ほど明らかであると書いたの は実は正しくないのです: オペレーティングシステム自身は 本当はパスワードを知らないのです。その代わりに 暗号化された形でのみパスワードを知っていま す。素のテキストとしてパスワードを得る唯一の方法は、 可能な限りのパスワード空間を検索するという力任せの方法です。

不幸なことに、Unix が生まれようとしているときにパスワードを 安全な形で暗号化できる方式は DES (Data Encryption Standard) に基づいたものだけでした。このことは米国に住んでいるユーザにとって は大して問題ではありませんでしたが、DES のソースコードを米国外に 輸出することはできないという問題がありました。そのために、 FreeBSD は、米国の法律を守ることと、未だに DES を使っていた他の Unix 一族との互換性を保つこととを両立する方法を探し出す必要がありました。

その解決方法は、米国のユーザは DES のライブラリをインストー ルして DES を使用できるが、米国外のユーザは国外に輸出可能な他の ひとつの暗号化方式を使用することができる、というように暗号化ライ ブラリを分割することでした。これが FreeBSD がデフォルトの暗号化 方式として MD5 を使うようになったいきさつです。MD5 は DES よりも より安全であると考えられているため、DES をインストールする一番の 理由は互換性を保つためといえます。

15.4.1. 暗号化機構を理解する

FreeBSD 4.4 の前までは、libcrypt.a は暗号化に使われるライブラリへのシンボリックリンクでした。 FreeBSD 4.4 で libcrypt.a は設定可能なパスワード認証ハッシュライブラリを提供するようになりました。 現在のところ、このライブラリは DES, MD5 および Blowfish ハッシュ関数に対応しています。デフォルトでは、FreeBSD はパスワードの暗号化に MD5 を利用します。

FreeBSD がどの暗号化方式を使うようにセットアップされている かを判断するのは簡単です。 /etc/master.passwd ファイルの中の暗号化さ れたパスワードを調べてみるのが一つの方法です。MD5 ハッシュで暗 号化されたパスワードは、DES ハッシュで暗号化されたパスワードよ りも長く、$1$ という文字で始まるという特徴を持っています。 $2$ で始まるパスワードは、Blowfish ハッシュ関数で暗号化されています。 DES のパスワードはこ れといって識別可能な特徴は持っていませんが、MD5 のパスワードよ りは短く、そして $ という文字を含ま ない 64 文字のアルファベットを使って表現されているので、比較的 短い文字列でドル記号で始まっていないものはおそらく DES のパス ワードでしょう。

新規パスワードがどちらのパスワード形式になるかは、 /etc/login.conf の中の passwd_format ログインケーパビリティによって制御されます。 その値としては、desmd5 または blf を設定することができます。 ログインケーパビリティに関するより詳細な情報は、 login.conf(5) マニュアルページをご覧ください。

本文書、および他の文書は ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/ からダウンロードできます。

FreeBSD に関する質問がある場合には、 ドキュメント を読んだ上で <questions@FreeBSD.org> まで (英語で) 連絡してください。

本文書に関する質問については、 <doc@FreeBSD.org> まで電子メールを (英語で) 送ってください。