AndroidデバイスのSSLが弱くなっていますか?



黄色の見出しをおaびしますが、議論する価値があると思います。



そのため、Android 2.3以降のAPRSdroidアプリケーションの作成者によると、SSL接続を確立するときに、以前に使用された暗号化アルゴリズムとハッシュアルゴリズムAES256とSHA1の組み合わせの代わりに、RC4とMD5のはるかに弱い組み合わせが最初に提供されました。

リンクでこの発見の説明を含む投稿を読むことができます。

Android開発者がこれらのアルゴリズムを正確に優先順位付けする動機は別として、RC4が主要な暗号化方法としてなぜ悪いのか、SSLには何が含まれているのかを説明したいと思います。



RC4暗号の脆弱性



RC4は、内部状態が256要素のストリーム暗号です。 実際、RC4は2つの部分で構成されています。





続いて、生成されたガンマが2を法とするオープンデータと加算され、暗号文が取得されます。

ストリーム暗号の最も重要な条件は、生成されたPRNGガンマとバイトのランダムシーケンスの絶対的な区別がつかないことです。

問題は、RC4がこの条件を満たしていないことです。

RC4出力シーケンスの最初の256バイトのそれぞれは、ゼロである確率が1/256以外であることがわかりました。

これは次のことを意味します。 攻撃者が、さまざまなキーで暗号化された256バイト長の同じメッセージを十分に大量に収集できたとします。 なぜなら 暗号化に使用されるガンマの256バイトのそれぞれが平均1/256を超える0である確率、攻撃者は利用可能なすべての暗号文の各バイトをチェックし、成功の度合いが最も高い場合、最も一般的なバイトが元のバイトであると想定します。 バイトごとに開くことにより、攻撃者はメッセージ全体を開くことができます。



SSL記録プロトコル



次に、これがSSLにどの程度当てはまるかについて話しましょう。

そのため、ハンドシェイクプロトコルの結果としてセッションキーが生成された後、以降のすべてのトラフィックはRC4を使用して暗号化されます。

最初の暗号化されたRC4メッセージは、Finishedと呼ばれるデータブロックです。 Finishedは、通信の確立を確認するのに役立ちます。 新しい方法で毎回生成される36バイトで構成されます。 したがって、攻撃者にとって、このブロックの復号化は不可能です。

その結果、220バイトの有用な情報が残っており、この攻撃を使用して明らかにすることができます。 これは悪いニュースです。 これでパスワードまたはCookieを回復できます。



幸いなことに、良いものがあります。 これまでのところ、実際に攻撃を実装することは困難です。 すでに解剖のために書いたように、大量の同じ暗号化されたテキストを収集する必要があります。 この攻撃の作成者は、256から80バイトを回復するには26 26の暗号文が必要であると主張しています。 256バイトの長さでブロック全体を開くには、2 32が必要です。

2013年3月に初めて、この脆弱性に対する攻撃が成功しました。 したがって、これは非常に新しい非常に有望なタイプの攻撃であり、すぐに改善される可能性が非常に高いと言えます。



結論として、最近SSLプロトコルを中心に発展したこの全体の状況について、いくつかの言葉を追加したいと思います。 正直なところ、これはすべて私をいくらか驚かせます。 近年、暗号化は大きな進歩を遂げました。 新しいSHA-3標準は、ランダムオラクルと見分けがつきません。 量子コンピューターへの攻撃に耐性のある非対称暗号システムが開発されています。 認証とメッセージの機密性の両方を保証する暗号化モードが表示されます。 しかし、これらすべてで、私たちはまだ14年前のプロトコルを使用しています。 たぶん新しいものを試す時が来たのでしょうか? そうでなければ、誰かがどこかでSSLの脆弱なバージョンを使用しているという見出しに、私たちはますます「喜んで」います。



参照資料



攻撃の簡単な説明。

攻撃に関するブルース・シュナイアー。

詳細な説明(pdf)



All Articles