1

クライアントは SSL 経由で Web サービスを呼び出し、ユーザー名とパスワードで認証します。次に、サーバーが対称キーを生成し、それをクライアントに送り返します。

次に、クライアントはサーバーへの TCP 接続を確立し、ログイン メッセージを送信します。この時点で、クライアントを認証したいと思います。

私の考えは、クライアントによく知られた/静的なテキストを対称キーで暗号化し、これをキーを所有していることの証明として使用することです。

対称鍵はランダムに生成されるため、ここで静的なテキストを使用しても問題ありませんか?

任意の入力をいただければ幸いです。

4

2 に答える 2

2

SSLは、クライアントとサーバーの両方を認証するように構築されており、非対称暗号化は、このシナリオで使用できる最も安全なプリミティブです。 対称暗号は、CBC-MACモードとも呼ばれる暗号ブロック連鎖メッセージ認証コードを使用して認証に使用でき ます。CBC-MACの使用は、HMACと同様の保護を備えていますが、メッセージダイジェスト機能の代わりに対称暗号を使用します。CBC-MACモードは、ワイヤレスネットワークを保護するためにWPAによって使用されます。

于 2010-06-30T16:15:42.350 に答える
2

あなたのアイデアはリプレイ攻撃の対象となります - 誰かがログインしているユーザーを観察した場合、彼らは static-text-encrypted-with-symmetric-key を保存し、後でそれを使用して自分自身を認証することができます.

これを行う一般的な方法は、チャレンジ/レスポンスです。クライアントが接続し、サーバーがランダムなチャレンジを生成してクライアントに送信し、クライアントが暗号化されたバージョンのチャレンジで応答します (ただし、ここでは実際にはブロック暗号ではなく HMAC を使用する必要があります。ワンブロック復号オラクル!)。また、暗号化用と認証用に 1 つずつ、2 つの異なるランダム キー (Web サービスを介して同時に提供される) を使用する方が安全です。

ただし、このスキームは、書かれているように、依然として中間者攻撃の影響を受けやすいことに注意してください。The Rookが示唆しているように、SSL を使用する方が確実に優れています。これには、クライアントが公開鍵を生成して Web サービスに送信する必要があります。Web サービスは、DN フィールドにクライアントの一意の識別子 (ユーザー名など) と共にクライアントの公開鍵を含む署名付き証明書で応答します。別の接続上のサーバーは、使用されているクライアント証明書を検証し (Web サービスによって署名されていることを確認)、証明書のクライアント識別子が接続を要求しているクライアントと一致することを検証します。

于 2010-07-01T01:15:41.397 に答える