【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: