web-dev-qa-db-ja.com

SSLがリプレイ攻撃を検出したとき?

攻撃者がSSLハンドシェイク(RSA一方向)のすべてのメッセージを記録し、リプレイ攻撃を開始するとします。サーバーはいつ(どのメッセージの後に)攻撃を検出できるのでしょうか?

次に、攻撃者が戦略を変更し、最初の3つのフェーズ(セッションキー交換まで)を送信し、このシーケンスを何度も送信するとします。なぜ攻撃者はこれを行うのですか?サーバーにどのような影響がありますか?

3
AlphaSnake

攻撃者が古いハンドシェイクメッセージを再生する場合、以前に記録されたメッセージは暗号化され、異なるキーでMAC処理され、その内容は次のいずれとも一致しないため、攻撃者からのFinishedメッセージでトリックが明らかになります。

  • マスターシークレット(RSAなどのキー交換メカニズムの結果)から対称暗号化およびMACキーへの派生には、client_randomおよびserver_random 2つの「hello」メッセージから。攻撃者はこれらの値の1つを再生しました(例:client_random攻撃者がclientメッセージを再生しているが、もう1つはピアからのものであり、記録されたものとは異なる場合。

  • Finishedメッセージの内容は、2つの「hello」メッセージを含む、以前のすべてのハンドシェイクメッセージに対して計算されたハッシュであるため、「ランダム」の1つが変更され、ハッシュは一致しません。

注:サーバーが証明書ベースのクライアント認証を必要とし、攻撃者が交換のクライアント部分を再生している場合、再生はより早く検出されます、 CertificateVerifyメッセージで:記録されたハンドシェイクメッセージは、2つの「ランダム」を含む以前のすべてのハンドシェイクメッセージのハッシュに対して計算された(正規のクライアントによる)署名です。ただし、クライアント証明書を要求するSSLサーバーは比較的まれです。


ハンドシェイクを開始したが終了しない攻撃者は Denial-of-Service attack を実行しており、サーバーにリソースを割り当てさせ、CPUサイクルを無駄に使わせています。通常、攻撃者はClientHelloを送信して、「DHE」暗号スイートのみのサポートを要求します。次に、サーバーは、新しく計算された署名を必ず含むServerKeyExchangeメッセージを含む一連のメッセージで応答する必要があります。攻撃者のCPUコストは最小限ですが(TCP接続を開いて数バイトを送信するだけの労力))サーバーは暗号化を行う必要があります。

この種のDoSでは実際にTCP接続を行う必要があるため、攻撃者のIPアドレスが明らかにされます。また、シグネチャは高価ではありません:PC 1秒あたり数千の署名を実行できるため、通常、SSLベースのDoSはボットネットによって行われます。

2
Tom Leek