ようこそ!
答えてねっと for Businessは、
マイクロソフトが運営する
ビジネスで使うパソコンや
ITに関するQ&Aサイトです。

質問

パスワードの暗号化について

製品名:デスクトップ OS、サーバー OS/Windows Server 2003

現象:したい/その他

懸賞ポイントが設定されています。 100

この質問は未解決で締め切られています

環境:
クライアントOS:XP(SP2,SP3)
サーバーOS:WIN2003R2
ADにて認証を行っている

この環境で、クライアントのログイン画面で入力するパスワード(ユーザー名も)は、ADサーバーに届くまでの間は、暗号化されているのでしょうか。
暗号化されているのであれば、どのような仕組み(名前?)の暗号化ですか。

よろしくおねがいいたします。

回答1 (この回答は質問に対する回答です)

  • 投稿ID:A2008051255
  • 投稿日時:2008/08/05 17:12

Windows 2000以降のサーバではkerberos認証が行われます。

http://ja.wikipedia.org/wiki/Kerberosマイクロソフト以外のサイトへ移動する

ご参考まで。

  •  

回答2 (この回答は回答1に対する回答です)

  • 投稿ID:A2008051256
  • 投稿日時:2008/08/05 17:13

補足でくっつけちゃいます。みるくごまさんすみません。

下記、MSのページに説明がありました。
http://www.microsoft.com/japan/windowsserver2003/technologies/directory/activedirectory/guide/advantages01.mspx


  •  

回答3 (この回答は質問に対する回答です)

  • 投稿ID:A2008051261
  • 投稿日時:2008/08/05 18:08

はじめまして。

クライアント〜AD間の認証で使われる方式は
・Kerberos認証
・NTLM認証
の二つです。

WindowsNTの時代はNTLM認証が使われていましたが、
Windows2000からKerberos認証が使われるようになりました。
ただし、Windows9XやNTではKerberos認証が使えないため、
それらが残っているところもあります。(はやあんBさんの環境では
Kerberosだと思いますが。)


Kerberos認証は秘密鍵暗号方式で、暗号化にはDESが使われているようですね。

NTLMではチャレンジ・レスポンス方式で、MD4/MD5でハッシュをかけ比較、という方式ですね。
厳密に言うと、NTLM認証ではユーザIDは平文で、パスワードはハッシュがかかったものが
クライアント〜サーバ間で流れるということになりそうです。

NTLM認証については、こちらを参照してください。
http://itpro.nikkeibp.co.jp/article/Keyword/20070209/261733/マイクロソフト以外のサイトへ移動する
http://www012.upp.so-net.ne.jp/cool_r32/myserver/tips03.htmlマイクロソフト以外のサイトへ移動する

上の方とかぶってしまいますが、二つの違いはこちらが参考になるかと思います。
http://www.microsoft.com/japan/windowsserver2003/technologies/directory/activedirectory/guide/advantages01.mspx

私自身もそれほど詳しくないのですが、参考にしていただけると幸いです。

  •  

回答4 (この回答は質問に対する回答です)

  • 投稿ID:A2008051294
  • 投稿日時:2008/08/06 10:42

チャブーンです。

ええと、おそらく はやあんB さんは "クライアントで入力したパスワードをサーバがどう認識しているのか" を知りたいのですよね?

まず、Windows ではパスワード情報(文字列)そのものがシステムに保存されているわけではありません。なので、パスワード文字列そのものがネットワーク内を流れることは、リクツ上あり得ません。

Windows では、パスワード文字列をハッシュ値と呼ばれる "元に戻せない別の文字列" に関数を使って変換し、これを特殊なデータベースに保存しています。Windows のシステムは最終的にはこのハッシュ値をチェックして、パスワードの正否を判定しています。

ところで、このハッシュ値もかなり重要な秘密情報なので、そのままネットワークに流れてしまうとやっぱり困ります。そこで、普通の Windows 認証 (NTLM) では、チャレンジ=レスポンス という別のしくみを使って、入力したパスワードが正しいかどうか、判定を行う実装となっています。

これは、クライアントが認証を要求すると、サーバからチャレンジ文字列が送信され、それに対してパスワード情報を使って変換されたレスポンス文字列をサーバに送りかえすことでパスワードが正しいかどうか確認する、といった方法です。チャレンジ文字列は毎回変わるので、ネットワーク上に流れても、危険度は下がります。

一方 Active Directory で使われる kerberos 認証ですが、サーバとクライアントでやり取りするのは "チケット" という認証のための割り符となり、パスワード情報をやりとりすることは基本的にありません。パスワード情報をどこで使うのか、ですが、チケット要求やチケット自体をネットワークに流すとき、それらは暗号化されるのですが、暗号化キーにパスワードの情報が使われているのです。つまり、サーバとクライアントがそれぞれ正しいパスワード情報を持っていないと、くチケットなどを正しく暗号化/復号することができず、認証に失敗します。

これらについては、MS によい資料があるので、したに書いておきますね。あと、kerberos の細かい挙動については、Windows 2000 Server リソースキット 3 巻を読むと、きっと勉強になるでしょう。ちょっと難しいですが、がんばってください。

http://www.microsoft.com/japan/msdn/thisweek/comsecurity/comsecurity1.aspx
http://www.microsoft.com/japan/technet/community/columns/secmgmt/sm1005.mspx

  •