【HTTP】Digest認証の仕組み
投稿日: 更新日:
ざっくりとした流れ
サーバーはクライアントからのハッシュ値を使って認証します。
ハッシュ値を送信するので盗聴されても大丈夫そう!ってことです。
具体的な内容
手順【1】について
まずサーバーからnonce
やqop
、realm
などのパラメーター送られてきます。重要なものだけまとめました。
用語 | 意味 |
---|---|
nonce | ランダムな文字列 |
qop | サポートされている認証方式 |
realm | ユーザーへの説明みたいなもの |
手順【2】について
MD5()は括弧の中身のMD5ハッシュ値を取るということです。
H1 = MD5(ユーザー名:
realm
:パスワード)
H2 = MD5(HTTPのメソッド:リクエストURI)
とします。
ここでconce
と呼ばれるランダムな文字列を生成します。
それぞれの値を代入して送るハッシュ値が得られます。
response = MD5(H1:
nonce
:nc
:conce
:qop
:H2)
このresponseをサーバーへ送ります。
用語 | 意味 |
---|---|
conce | クライアント側で生成するランラムな文字列 |
nc | 重複を防ぐための数字。リクエストごとに増える。 |
脆弱性
ダイジェスト認証は中間者攻撃に非常に弱いです。
クライアントとサーバーの間に中間者が入りヘッダー部分の認証をDigestからBasicに切り替えられるとユーザー名やパスワードが流出します。
まとめ
今回はDigest認証について説明していきました!おおよその仕組みと欠点が分かってもらえたら嬉しいです:smile: