- - PR -
CRAM-MD5 認証におけるサーバ側の処理
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-07-02 02:56
CRAM-MD5 認証について以下を参照すると、http://vision.kuee.kyoto-u.ac.jp/~nob/doc/cram-md5/cram-md5.html
サーバがクライアントから受け取るパスワード情報は 以下までだと思います。 hmac-md5(challenge, password) ... (A) 一方、Dovecot のパスワード・データベースには HMAC-MD5 形式のパスワードを保存しています。 hmac-md5(password) ... (B) 当然 (A) と (B) は違うものだと思うし、 hmac-md5 は一方向ハッシュの一種だと思うので (A) や (B) から password を取り出せるとも思えません。 ですが、実際には認証できてしまいます。 いったいサーバはどうやって認証しているのでしょうか ? [ メッセージ編集済み 編集者: はしもと 編集日時 2006-07-02 03:23 ] | ||||
|
投稿日時: 2006-07-02 10:56
MD5 は多少知っていますが、CRAM-MD5 というものに関する知識はない者です。
その考えは正しいと思います。だから、前提が違っているのだと思います。 実際は、つぎのいずれかではないでしょうか? (1) サーバー側で password を生で保存している。 (2) MD5 のかけかたが、たとえば md5(md5(password) + challenge) みたいなやりかたをしている。 http://mobiquitous.com/programming/apop-imap.html によると (1) のように思えます。 -- unibon {B73D0144-CD2A-11DA-8E06-0050DA15BC86} | ||||
|
投稿日時: 2006-07-02 16:56
Dovecot 用に保存しているパスワードは dovecotpw -s HMAC-MD5 で 求めたもので、これは HMAC-MD5 値だと思っていましたが、 よく考えるとこの時点で Key を与えてないので、これは HMAC-MD5 値 では無いような気がしてきました。 ですが、CRAM-MD5 の良い点はネットワーク上を流れるパスワードと サーバに保存されるパスワードがハッシュ化できる所だと思うので、 Dovecot 用に保存しているパスワードは生パスワードでは無いと思うのです。 となると HMAC-MD5 アルゴリズムって (2) のような感じなのでしょうか。 [ メッセージ編集済み 編集者: はしもと 編集日時 2006-07-02 16:56 ] | ||||
|
投稿日時: 2006-07-04 01:48
ボケてました。パスワードが Key です。 http://www.ipa.go.jp/security/rfc/RFC2104JA.html によると、 HMAC-MD5 値だと思っていたパスワードは K XOR ipad と K XOR opad をそれぞれ MD5Update() した状態をくっつけた物の様です。 この値をリストアして HMAC-MD5 を続行できるので、 認証が可能なんですね。 この値 (MD5Final() する前の状態) の強度ってどうなのでしょうか。 [ メッセージ編集済み 編集者: はしもと 編集日時 2006-07-04 01:50 ] [ メッセージ編集済み 編集者: はしもと 編集日時 2006-07-04 01:51 ] |
1