DigestとBasic Authenticationの違いは何ですか?
ダイジェスト認証は、ハッシュ関数をユーザー名、パスワード、サーバーが提供するナンス値、HTTPメソッド、および要求されたURIに適用することにより、暗号化された形式で資格情報を通信します。
一方、基本認証は暗号化されていないbase64エンコードを使用します。
したがって、基本認証は通常、httpsなどのトランスポートレイヤーセキュリティが提供されている場合にのみ使用する必要があります。
すべての厄介な詳細については、 RFC-2617 を参照してください。
HTTP基本アクセス認証
基本認証は、base64エンコーディング(暗号化ではなく)を使用して、ユーザー名とパスワードの情報を含む暗号文字列を生成します。 HTTP BasicはSSLを介して実装する必要はありませんが、実装しない場合はまったく安全ではありません。だから、私はそれなしでそれを使用するというアイデアを楽しませるつもりはありません。
長所:
短所:
概要–クライアントを制御できる場合、またはクライアントがSSLを確実に使用できる場合は、HTTP Basicが適しています。 SSLの遅さは、リクエストを1つだけ行う速度でキャンセルできます。
基本認証の構文
Value = username:password
Encoded Value = base64(Value)
Authorization Value = Basic <Encoded Value>
//at last Authorization key/value map added to http header as follows
Authorization: <Authorization Value>
HTTPダイジェストアクセス認証
ダイジェストアクセス認証では、ハッシュ(つまり、ダイジェストは小さな断片に分割する)方法論を使用して暗号化結果を生成します。 HTTPダイジェストアクセス認証は、次のように機能する認証のより複雑な形式です。
長所:
短所:
概要では、HTTPダイジェストは本質的に少なくとも2つの攻撃に対して脆弱ですが、HTTP Basic over SSLでパスワードに強力な暗号化を使用するサーバーはこれらの脆弱性を共有する可能性が低いです。
ただし、クライアントを制御できない場合、クライアントはSSLなしで基本認証を実行しようとする可能性があります。これは、ダイジェストよりもはるかに安全性が低くなります。
RFC 2069ダイジェストアクセス認証の構文
Hash1=MD5(username:realm:password)
Hash2=MD5(method:digestURI)
response=MD5(Hash1:nonce:Hash2)
RFC 2617ダイジェストアクセス認証の構文
Hash1=MD5(username:realm:password)
Hash2=MD5(method:digestURI)
response=MD5(Hash1:nonce:nonceCount:cnonce:qop:Hash2)
//some additional parameters added
Postmanでは次のようになります。
注:
Wireshark
(送受信パケットを分析するツール)を使用した2つのHTTP認証の違いを見てみましょう。
1。 HTTP基本認証
クライアントがWebサーバーの要求に従って、正しいusername:passwordを入力するとすぐに、Webサーバーは資格情報が正しく、リソースへのアクセスを提供します。
パケットの送受信方法は次のとおりです。
最初のパケットで、クライアントはリソースでPOSTメソッドを使用して資格情報を入力します-lab/webapp/basicauth
http応答コード200 okで返信します。つまり、ユーザー名:パスワードは正しいです。
ここで、Authorization
ヘッダーでは、BasicAuthorizationの後にランダムな文字列が続くことが示されています。この文字列はエンコードされた(Base64)バージョンの資格情報admin:aadd
(コロンを含む)。
2。 HTTPダイジェスト認証(rfc 2069)
これまでのところ、基本認証がネットワーク上にプレーンテキストでusername:passwordを送信することがわかりましたが、ダイジェスト認証はハッシュハッシュアルゴリズムを使用したパスワード。
クライアントが行った要求とサーバーからの応答を示すパケットがここにあります。
クライアントがサーバーから要求された資格情報を入力するとすぐに、パスワードはアルゴリズムを使用してresponse
に変換され、サーバーに送信されます。 resource、それ以外の場合は401エラー.
上記のAuthorization
では、response
文字列は、画像に示すように、Username
、Realm
、Password
、http-method
、URI
およびNonce
の値を使用して計算されます。
したがって、ダイジェスト認証はハッシュ(MD5暗号化)を伴うため、より安全であることがわかります。したがって、パケット認証ツールは、基本認証ではWiresharkに正確なパスワードが表示されていても、パスワードを探知できません。
基本認証では、ユーザー名とパスワードの情報を含む暗号化文字列を生成するために、base 64 Encoding を使用します。
ダイジェストアクセス認証では、ハッシュ手法を使用して暗号化結果を生成します