web-dev-qa-db-ja.com

TLS自転車攻撃-欠陥のない暗号は何ですか?

最近、TLSストリーム暗号に対する斬新な攻撃が Guido Vranken によって開発され、 Bicycle と呼ばれ、この Websenseのブログ投稿 で参照されています。

これは、ストリーム暗号の特性に基づいており、プレーンテキストの長さと暗号テキストの長さは1対1の関係にあり(同じではない場合もあります)、攻撃者が要求からの既知のデータを関連付けて長さを発見できるようにしますフィールドの(パスワードの長さなど)。ユーザーが8文字のパスフレーズを持っていることがわかっている場合は、総当たり攻撃から多くの作業を取り除き、数時間後にアクセスできる辞書を作成します。

完全な説明は、上記の最初のブログ投稿でホストされている [〜#〜] pdf [〜#〜] にあります。

基本的には、主にTLS 1.2でAEAD暗号スイートの一部として使用されるGalois Counter Mode(GCM)と呼ばれるすべてのストリーム暗号に影響します。他のAEAD暗号を簡単に検索すると、それらもストリーム暗号であるため、この問題に対して脆弱であることがわかります。または、すべてが影響を受けるわけではありませんか?

問題は、どの暗号を使用できるかということです。ブロック暗号はこの特定の問題の影響を受けませんが、それらのほとんどは独自の問題を抱えているため、解毒剤を持ち込むのではなく、「毒を拾う」という問題になります。 TLS 1.2で使用できる既知の暗号(NISTが推奨)を知っている人はいますか?

21
DarkLighting

記事のPDF は次で始まります:

通常、TLSでカプセル化されたHTTPトラフィックは、その部分の正確なサイズを明らかにしないと想定されています

これは私が言ったことではありません。むしろ、それは通常仮定されているとしましょうよりよく知らない人々によって。 TLSは暗号化であり、暗号化はデータ長ではなく、データコンテンツの非表示に適しています。これはまったく新しいものではありません。ただし、TLSが「すべてを隠す」という考え方は依然として広く普及していることは事実です(これは間違っていますが、常にそうでしたが、特に人々が教育を受けたくない場合は、教育が遅れています)。

長さがブロックサイズの倍数に埋め込まれるため、CBCベースの暗号スイートは暗号化されたデータ長の細かい部分を何らかの方法で隠す可能性があるとパディングを意味すると主張する人もいます。この「隠蔽効果」は実際には適用されないため、送信するデータの長さを隠蔽するのに役立つ暗号スイートはないと想定するのはより賢明です。

たとえば、ユーザーのパスワードの長さを本当に非表示にしたい場合は、送信前に送信者が固定長にパディングすることにより、適切に行う必要があります(これは、JavaScriptの数行で実行できます)。ただし、長さは依然として多くの場所でリークすることを考慮してください。悪名高いことに、長さはクライアントとサーバーの両方の処理時間に影響し、これを検出できます(少なくとも、そのようなサイドチャネルリークはラボの条件で実証されました)。また、ユーザーがパスワードを入力すると、イヤショット内の攻撃者はストロークを数え、同じ情報を取得できます(実際には、スマートフォンでノイズを記録し、後で低速で再生することで、攻撃者は実際の文字は、典型的なキーボードでははっきりと異音がするためです)。

現実的な答えは、パスワードの長さを漏らしてそれを破ることができる場合、これはそもそも不十分なパスワードであり、おそらくそれを修正する必要があることを指摘することです。長さは問題のほんの一部にすぎません。つまり、悪いパスワードは悪いことです。

46
Thomas Pornin