web-dev-qa-db-ja.com

TLSを介したコンテンツのgzip圧縮は許可されますか?

だから私はnginxのhttpレベルでこれらのいくつかの圧縮ディレクティブを持っています:

gzip on;
gzip_http_version 1.1;
gzip_vary on;

CRIME/BREACH攻撃のため、これは回避する必要があると読みましたが、これは正しいですか?

17

CRIME/BREACH攻撃のため、これは回避する必要があると読みましたが、これは正しいですか?

場合によります。

CRIME攻撃は、TLS圧縮を使用せず、HTTP/2.0でコンテキストの特別な処理を行うという点で、現在のブラウザーで既に軽減されています。 BREACHは、次の2つの条件が同時に適用される場合(HTTP http://www.breachattack.com/ を引用する場合)、HTTPレベルの圧縮のコンテキストでのみ関連します。

  • ユーザー入力をHTTP応答本文に反映する
  • シークレット(CSRFトークンなど)をHTTP応答本文に反映する

これらのいずれにも当てはまらない場合、または1つだけが当てはまる場合は、BREACHの影響を受けずにgzipを使用できます。つまり、静的なページや、CSRFトークンなどのシークレット(攻撃者が抽出したいシークレット)が含まれていないページに安全に使用できます。

また、攻撃者は同じサイトへの複数のリクエストを必要とし、転送されたデータのサイズがどのように変化するかを確認できる必要があります。したがって、シークレットが常に変更されている場合、またはサイトが変更されている場合(ランダムなサイズのランダムパディングを追加するなど)、攻撃者はBREACHを使用できません。 BREACH攻撃に対する防御 も参照してください。

15
Steffen Ullrich

sSL暗号化データをgzip圧縮すると、SSLの利点がある程度失われます。はい、gzip圧縮[〜#〜] all [〜#〜]コンテンツにより、WebサイトがBREACHの脆弱性にさらされる可能性があります。

ただし、gzipするためにsomeリソースを追加できます。たとえば、公開画像は一般にgzipされたものや公開ドキュメントです。ただし、独自のSSL保護を「サボタート」するかどうかを慎重に検討する必要があります。

これも読む価値があるかもしれません: https://stackoverflow.com/questions/2767211/can-you-use-gzip-over-ssl-and-connection-keep-alive-headers

編集:追加したいのは、SPDYを使用すると、圧縮されたヘッダーとキーのネゴシエーション/再ネゴシエーションの短縮により、同様の圧縮を実現できることです。また、頻繁に使用するリソースを「事前」圧縮することもできます(ただし、SPDYに限定されません)。

2
Scrayos

SSL/TLSとGzippingの仕組みは、データをマップしてパケットのサイズを予測可能かつ繰り返し可能な方法で削減し、元に戻すことができることです。ページが静的であり、トークンやクッキーは一緒に送信されません。これは、サイトから要求されるデータが常に同じであり、パケットサイズが変化しないためです。ただし、動的ページでは、CSRFとユーザーデータの一部を除いて、コンテンツは常に変更されました。その情報を使用して、リクエストや本文にデータを挿入できます。 これにより、パケットの内容を変更し、圧縮がどのようにマップされるかを確認できるため、これが問題になります。最終的に、Cookie、パスワード、ユーザー情報、クロスサイトなど、パケット内の特定のものにアクセスできます。偽造トークンおよびその他の送信されたものを要求します。

このため、最終的にパケットが侵害される可能性があるため、機密データの動的データ圧縮にTLS/SSLを使用することは推奨されません。

0
Robert Mennell