- PR -

CRAM-MD5 認証におけるサーバ側の処理

1
投稿者投稿内容
はしもと
大ベテラン
会議室デビュー日: 2003/02/05
投稿数: 182
投稿日時: 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 ]
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2006-07-02 10:56
MD5 は多少知っていますが、CRAM-MD5 というものに関する知識はない者です。
引用:

はしもとさんの書き込み (2006-07-02 02:56) より:
当然 (A) と (B) は違うものだと思うし、
hmac-md5 は一方向ハッシュの一種だと思うので
(A) や (B) から password を取り出せるとも思えません。


その考えは正しいと思います。だから、前提が違っているのだと思います。
実際は、つぎのいずれかではないでしょうか?

(1) サーバー側で password を生で保存している。
(2) MD5 のかけかたが、たとえば md5(md5(password) + challenge) みたいなやりかたをしている。

http://mobiquitous.com/programming/apop-imap.html
によると (1) のように思えます。

--
unibon {B73D0144-CD2A-11DA-8E06-0050DA15BC86}
はしもと
大ベテラン
会議室デビュー日: 2003/02/05
投稿数: 182
投稿日時: 2006-07-02 16:56
引用:
unibonさんの書き込み (2006-07-02 10:56) より:
その考えは正しいと思います。だから、前提が違っているのだと思います。
実際は、つぎのいずれかではないでしょうか?

(1) サーバー側で password を生で保存している。
(2) MD5 のかけかたが、たとえば md5(md5(password) + challenge) みたいなやりかたをしている。

http://mobiquitous.com/programming/apop-imap.html
によると (1) のように思えます。



Dovecot 用に保存しているパスワードは dovecotpw -s HMAC-MD5 で
求めたもので、これは HMAC-MD5 値だと思っていましたが、
よく考えるとこの時点で Key を与えてないので、これは HMAC-MD5 値
では無いような気がしてきました。

ですが、CRAM-MD5 の良い点はネットワーク上を流れるパスワードと
サーバに保存されるパスワードがハッシュ化できる所だと思うので、
Dovecot 用に保存しているパスワードは生パスワードでは無いと思うのです。

となると HMAC-MD5 アルゴリズムって (2) のような感じなのでしょうか。


[ メッセージ編集済み 編集者: はしもと 編集日時 2006-07-02 16:56 ]
はしもと
大ベテラン
会議室デビュー日: 2003/02/05
投稿数: 182
投稿日時: 2006-07-04 01:48
引用:
はしもとさんの書き込み (2006-07-02 16:56) より:
Dovecot 用に保存しているパスワードは dovecotpw -s HMAC-MD5 で
求めたもので、これは HMAC-MD5 値だと思っていましたが、
よく考えるとこの時点で Key を与えてないので、これは HMAC-MD5 値
では無いような気がしてきました。



ボケてました。パスワードが 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

スキルアップ/キャリアアップ(JOB@IT)