リプレイ攻撃を回避するにはHTTPSで十分ですか?


10

モバイルアプリ用のサーバーでいくつかのRESTメソッドを公開しています。

ユーザーが(モバイルアプリから)HTTPメソッドを構築する方法を傍受し、サーバーに再度送信することを避けたいと思います。例:

  • モバイルアプリがリクエストを送信する
  • ユーザーはプロキシを使用して、ネットワークで何が起こっているかを確認できます
  • ユーザーは、モバイルが送信したリクエストを確認して保存します
  • =>ユーザーがそのリクエストを手動で送信できないようにしたい

HTTPS経由でサーバーを保護するのに十分ですか?

回答:


7

サーバーがrfc2246セクションF.2に従ってTLSプロトコルのみを許可するように構成されている場合、HTTPSはサーバーをリプレイ攻撃(同じメッセージが2回送信される)から保護するのに十分です。

送信データは、送信前にMACで保護されます。メッセージの再生または変更攻撃を防ぐために、MACはMACシークレット、シーケンス番号から計算されます[...]


1
(ドラフト)TLS 1.3では、0-RTTチケットが有効になっている場合、これは当てはまりません。また、厳密には質問の範囲内ではありませんが、Webブラウザを使用している場合は、現在のTLSバージョンでもリプレイ攻撃を仕掛けることができます。
Alex Shpilkin、2018

9

HTTPSは、転送されるデータが暗号化され、クライアントとサーバーだけが暗号化を解除できることを意味します(理想的な世界では、MITM攻撃などについて話さない)。

そのため、プロトコルにはリプレイ攻撃の発生を止めるものはありません。

アプリケーションが再生攻撃に対して脆弱でないことを確認するために、何らかの種類の再生攻撃回避メカニズム(有効期限切れのトークン、またはプロセスの終了後に無効になるトークンなど)を組み込む必要があります。このメカニズムは、通常のHTTPで使用できます。


8
この答えは反対を示唆しているようです:stackoverflow.com/questions/2769992/… なぜ違いがわかるのですか?
ブライアンアームストロング

1
@BrianArmstrong問題は、Emirikolの回答で述べられているようにHTTPSの実装が異なることだと思います。一部のプロトコルはリプレイ攻撃を防止しますが、一部は防止しません。(これは、鍵交換を行うときに発生し、RSA鍵交換は阻止しますが、匿名鍵交換は阻止しません。reftools.ietf.org/html/draft-ietf-tls-ssl-version3-00#appendix-F)それがトークン( csrfなど)が重要です(参照シナリオはこちら:stackoverflow.com/a/2770135/4206925
MewX
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.