web-dev-qa-db-ja.com

TLS 1.0はTLS 1.2より安全ですか?

確認したいのですが、システム管理者から、TLS 1.0はTLS 1.2よりも安全で、TLS 1.0をそのまま使用する必要があると言われています...これは正確ですか?

彼は、TLS 1.2はより脆弱であり、TLS 1.0はより安全であると述べました。また、HeartbleedバグはTLS 1.1から最も脆弱です。 TLS 1.2ではなく、TLS 1.0から。

ありがとうございました!

18
olimits7

あなたの管理者はそれを理解しました本当に間違っています(またはいくつかの翻訳ミスがありました)。

TLS 1.1および1.2は、TLS 1.0のいくつかの問題(つまり、レコードのCBC暗号化のためのIVの予測可能性)を修正します。 TLS 1.0でこの問題を回避することは可能ですが、実装がどれだけ難しいかによって異なります。したがって、その意味では、TLS 1.1と1.2はTLS 1.0よりもより安全です。安全に実装する方が簡単だからです。

いわゆる「ハートブリード」はprotocolの欠陥ではありません。 実装のバグ一部の OpenSSL バージョンに存在します(OpenSSLはSSL/TLSの広範な実装ですが、唯一の実装ではありません)。 OpenSSLバージョンにそのバグがある場合、TLS 1.0を含むすべてのプロトコルバージョンにバグがあります。したがって、ハートブリードが適用される場合、TLS 1.0、TLS 1.1、およびTLS 1.2にも同様に適用されます。あてはまらないときは、あてはまらない。

混乱の原因は、管理者(または彼の情報源)がプロトコル実装の違いを理解または概念化していないように見えることです。 TLS 1.0とTLS 1.2はprotocolsで関連標準に記述されています( RFC 2246 および RFC 5246 )。プロトコルは、いつバイトを送信する必要があるかを示します。 実装は、プロトコルを実行するソフトウェアです。 OpenSSLは実装です。非常に古いOpenSSL実装では認識されていない比較的新しいプロトコル機能(「ハートビート拡張」)の実装で、「ハートブリード」バグが発生することがあります。したがって、非常に古いimplementationsのOpenSSLはハートブレッドの影響を受けません(非常に古いため、他にも深刻な問題があります)。同じ非常に古い実装では、TLS 1.1とTLS 1.2についてまったく認識されていません。したがって、管理者の頭の中で、2つの独立した事実は単一の(しかし欠陥のある)マントラに合体し、ハートブリードはTLS 1.1および1.2のセキュリティ問題であると誤って述べています。

48
Tom Leek

TLS 1.0

TLS 1.0はSSL 3.0からのアップグレードであり、その違いは劇的ではありませんでしたが、SSL 3.0とTLS 1.0が相互運用しないほど重要なものです。

SSL 3.0とTLS 1.0の主な違いは次のとおりです。

  • 主要な派生関数が異なります
  • MACは異なります-SSL 3.0は初期のHMACの変更を使用し、TLS 1.0はHMACを使用します。
  • 終了したメッセージは異なります
  • TLSにはより多くのアラートがあります
  • TLSにはDSS/DHサポートが必要です

TLS 1.1

TLS 1.1はTLS 1.0のアップデートです。

主な変更点は次のとおりです。

  • 暗黙の初期化ベクトル(IV)は、暗号ブロックチェーン(CBC)攻撃から保護するために、明示的なIVに置き換えられます。
  • 埋め込みエラーの処理が変更され、CBC攻撃から保護するために、decryption_failedアラートではなくbad_record_macアラートを使用するようになりました。
  • IANAレジストリーはプロトコル・パラメーター用に定義されています
  • 時期尚早のクローズによってセッションが再開不可能になることはなくなりました。

TLS 1.2

TLS 1.2はTLS 1.1に基づいており、柔軟性が向上しています。

主な違いは次のとおりです。

  • 疑似ランダム関数(PRF)のMD5/SHA-1の組み合わせは、暗号スイート指定のPRFに置き換えられました。
  • デジタル署名された要素のMD5/SHA-1の組み合わせは、単一のハッシュに置き換えられました。署名された要素には、使用されるハッシュアルゴリズムを明示的に指定するフィールドが含まれます。
  • クライアントおよびサーバーが受け入れるハッシュおよび署名アルゴリズムを指定する機能が大幅に整理されました。
  • 追加のデータモードでの認証済み暗号化のサポートの追加。
  • TLS拡張定義とAES暗号スイートが統合されました。
  • EncryptedPreMasterSecretのバージョン番号の厳密なチェック。
  • 要件の多くが強化されました
  • Verify_dataの長さは暗号スイートによって異なります
  • Bleichenbacher/Dlimaの攻撃防御の説明がクリーンアップされました。

この回答は次のソースに基づいています。

23
Ali

これを言った人はおそらくHeartbleedについて何も理解していません。それは実装固有の脆弱性(OpenSSLの一部のバージョン)であり、SSL/TLSのバージョンとは実際には関係ありません。

http://heartbleed.com/ から:

脆弱なバージョンは2年以上前から存在しており、最新のオペレーティングシステムに急速に採用されています。主要な要因は、TLSバージョン1.1および1.2が最初の脆弱なOpenSSLバージョン(1.0.1)で利用可能になり、セキュリティコミュニティがTLSに対する以前の攻撃(BEASTなど)によりTLS 1.2をプッシュしていることです。

これは、TLS 1.1および1.2が1.0よりも脆弱であることを決して意味しません。それは、OpenSSLの古いバージョンにはそのバグがなかったことを意味しますが、TLS 1.1および1.2もサポートしていませんでした。新しいバージョンのTLSをサポートするために新しいバージョンのOpenSSLにアップグレードするとき(古いバージョンのTLSに問題があるため)、そのバグの導入を含む他の変更がOpenSSLコードベースに加えられました。これは、TLSバージョンよりOpenSSLの開発タイムラインに関係しています。

その後、OpenSSLはこの特定の問題に対して修正されました(したがって、脆弱でないバージョンを使用することは明らかに推奨されます)。

一般に、新しいバージョンのTLSではセキュリティが強化されており、特にTLS 1.2では、より安全であると一般に考えられている暗号スイートがサポートされています。

5
Bruno

また、HeartbleedバグはTLS 1.1から最も脆弱です。 TLS 1.2ではなく、TLS 1.0から。

管理者がいくつかの事実を混同している可能性があります:確かに、HeartbleedはTLS 1.1およびTLS 1.2に接続されています。しかし、OpenSSLリリース1.0.1がTLS 1.1およびTLS 1.2のサポートを追加しただけでなく、Heartbeat拡張のサポートも導入したということだけが関係です。 Heartbleedバグは、この拡張機能の処理における実装エラーが原因でした。したがって、TLS 1.1およびTLS 1.2をサポートする新しいサーバーのみが問題の影響を受けます。

ハートブリードのバグは修正されましたが、TLS 1.1とTLS 1.2のサポート、およびハートビート拡張もまだ残っています。また、他のTLSスタックは、ハートビート拡張をまったくサポートせずに、新しいTLSバージョンをサポートしています。

3
Steffen Ullrich