【HTTP】Digest認証の仕組み

投稿日: 更新日:

ざっくりとした流れ

サーバーはクライアントからのハッシュ値を使って認証します。
ハッシュ値を送信するので盗聴されても大丈夫そう!ってことです。

ざっくりとしたスライド

具体的な内容

手順【1】について

まずサーバーからnonceqoprealmなどのパラメーター送られてきます。重要なものだけまとめました。

用語意味
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:

書いた人

profile_image

お茶の葉

物理とプログラミングが好きな人