セキュリティ

Digest認証とは

2019年7月23日

Digest認証(ダイジェスト認証)って何?

Digest認証(ダイジェスト認証)とは、HTTPで定義される認証方式の一つです。Basic認証の平文で「ユーザーID」と「パスワード」を送信してしまう欠点を改善した認証方式で、「ユーザーID」と「パスワード」をハッシュ化して送信します。

スポンサーリンク

ハッシュ化とは、ハッシュ関数と呼ばれる特殊な計算手順により元に戻すことができない文字列を生成することをいいます。そのため、仮にデータを盗聴されても元に戻すことができないので、パスワードを推測することが困難です。

ちなみにハッシュ化と暗号化の違いは、ハッシュ化は元に戻すことができない文字列を生成するのに対し、暗号化は元に戻すことが前提で、暗号鍵という鍵をつかって暗号そして復号する方式です。

ポイント

Digest認証は、Basic認証の欠点を改善した認証方式

データをハッシュ化して送る

Digest認証(ダイジェスト認証)の流れ

Digest認証とは

Digest認証の流れは以下の通り。

[手順1] サーバ側でランダムな文字列を生成する

フロント側(画面)は、バックエンド側(サーバ側)にランダムな文字列を要求します。要求を受けたバックエンド側(サーバ側)でランダムな文字列を生成して、フロント側(画面)に返却します。

[手順2] ユーザーにログインIDとパスワードを入力させる

バックエンド側(サーバ側)からランダムな文字列を受信した、フロント側(画面)はログイン画面を表示し、ユーザーに「ログインID」と「パスワード」を入力させます。

スポンサーリンク

[手順3] パスワードにランダムな文字列を付与後、ハッシュ化したデータを送信

ユーザーが入力した「パスワード」にバックエンド側(サーバ側)から受信したランダムな文字列を連結します。

そしてユーザーが入力した「ログインID」とランダムな文字列が付与された「パスワード」をハッシュ化し、データをバックエンド側(サーバ側)に送信します。

[手順4] 送信されたデータが正しいか確認する

バックエンド側(サーバ側)は、受信した「ログインID」「パスワード」「ランダムな文字列」が正しい内容であるか確認します。(サーバ側でも同じルールでハッシュ値を生成し、ハッシュ値同士を比較することで認証情報が正しいか判断する)

そして、正しい内容であれば認証OK、間違っている内容であれば認証NGと判断し結果を返却します。

Digest認証(ダイジェスト認証)の問題点

Digest認証はサーバが生成したランダムの文字列をパスワードに付与し、IDとパスワードをMD5でハッシュ化し送信します。そのため盗聴されてもパスワードの解析は困難です。

しかし、MD5はIPAが2008年7月に発表した調査結果(下記URL参照)にある通り、解析することが可能な古いハッシュアルゴリズムです。

参考URL:https://www.ipa.go.jp/files/000013897.pdf

また、SSL/TLSHTTPS)を使用すればBasic認証の平文でパスワードを送信する欠点を改善できるため、Digest認証は、HTTPS通信ができない環境で使われるHTTP認証方式といえます。

helpful