トランスポート層のセキュリティ

ウィキペディアから、無料の百科事典
ナビゲーションにジャンプ 検索にジャンプ

現在廃止されているSecureSockets LayerSSLの後継であるTransport Layer SecurityTLS )は、コンピューターネットワークを介した通信セキュリティを提供するために設計された暗号化プロトコルです。このプロトコルは、電子メールインスタントメッセージングVoice over IPなどのアプリケーションで広く使用されていますが、 HTTPSの保護での使用は依然として最も一般的に知られています。

TLSプロトコルは、主に、2つ以上の通信するコンピューターアプリケーション間で、プライバシー(機密性)、整合性、および証明書の使用による信頼性を含む暗号化を提供することを目的としています。これはアプリケーション層で実行され、それ自体がTLSレコードとTLSハンドシェイクプロトコルの2つの層で構成されます

TLSは、1999年に最初に定義された提案されたインターネットエンジニアリングタスクフォース(IETF)標準であり、現在のバージョンは2018年8月に定義されたTLS 1.3です。TLSは、Netscape Communicationsによって開発された以前のSSL仕様(1994、1995、1996)に基づいていますナビゲーターWebブラウザー へのHTTPSプロトコル。

説明

クライアント/サーバーアプリケーションは、TLSプロトコルを使用して、盗聴や改ざんを防ぐように設計された方法でネットワークを介して通信します

アプリケーションはTLS(またはSSL)の有無にかかわらず通信できるため、クライアントはサーバーにTLS接続のセットアップを要求する必要があります。[2]これを実現する主な方法の1つは、 TLS接続に異なるポート番号を使用することです。たとえば、ポート80は通常、暗号化されていないHTTPトラフィックに使用されますが、ポート443は暗号化されたHTTPSトラフィックに使用される一般的なポートです。もう1つのメカニズムは、クライアントがサーバーに対してプロトコル固有の要求を行って、接続をTLSに切り替えることです。たとえば、メールおよびニュースプロトコル を使用するときにSTARTTLS要求を行うことによって。

クライアントとサーバーがTLSの使用に同意すると、ハンドシェイク手順を使用してステートフル接続をネゴシエートします。[3]プロトコルは、非対称暗号を使用したハンドシェイクを使用して、暗号設定だけでなく、対称暗号を使用してさらなる通信を暗号化するセッション固有の共有キーも確立します。このハンドシェイク中に、クライアントとサーバーは、接続のセキュリティを確立するために使用されるさまざまなパラメーターについて合意します。

  • ハンドシェイクは、クライアントがTLS対応サーバーに接続して安全な接続を要求し、クライアントがサポートされている暗号スイート暗号およびハッシュ関数)のリストを提示したときに開始されます。
  • このリストから、サーバーはサポートしている暗号化およびハッシュ関数を選択し、クライアントに決定を通知します。
  • サーバーは通常、デジタル証明書の形式でIDを提供します。証明書には、サーバー名、証明書の信頼性を保証する信頼できる認証局(CA)、およびサーバーの公開暗号化キーが含まれています。
  • クライアントは、続行する前に証明書の有効性を確認します。
  • 安全な接続に使用されるセッションキーを生成するには、クライアントは次のいずれかを実行します。
    • 乱数PreMasterSecret )をサーバーの公開鍵で暗号化し、結果をサーバーに送信します(サーバーのみが秘密鍵で復号化できる必要があります)。次に、両方の当事者が乱数を使用して、セッション中のデータの後続の暗号化と復号化のために一意のセッションキーを生成します
    • Diffie–Hellman鍵交換を使用して、暗号化および復号化用のランダムで一意のセッション鍵を安全に生成します。これには、転送秘密の追加プロパティがあります。サーバーの秘密鍵が将来開示される場合、現在のセッションを復号化するために使用することはできません。セッションはサードパーティによって傍受され、記録されます。

これでハンドシェイクが終了し、セキュリティで保護された接続が開始されます。この接続は、接続が閉じるまでセッションキーで暗号化および復号化されます。上記の手順のいずれかが失敗した場合、TLSハンドシェイクは失敗し、接続は作成されません。

TLSとSSLは、 OSIモデルまたはTCP / IPモデルの単一層にうまく適合しません[4] [5] TLSは、「信頼できるトランスポートプロトコル(TCPなど)の上で」実行されます[6]。これは、トランスポート層の上にあることを意味します。これは、通常はプレゼンテーション層の機能である上位層への暗号化を提供します。ただし、TLSを使用するアプリケーションは、 TLSハンドシェイクの開始と交換された認証証明書の処理をアクティブに制御する必要がありますが、アプリケーションは通常、TLSをトランスポート層であるかのように使用します[4] [5] 。[6]

TLSで保護されている場合、クライアント(Webブラウザーなど)とサーバー(wikipedia.orgなど)間の接続には、次の1つ以上のプロパティが必要です。

  • 送信されるデータの暗号化に対称鍵アルゴリズムが使用されるため、接続はプライベート(またはセキュア)です。この対称暗号化のキーは、接続ごとに一意に生成され、セッションの開始時にネゴシエートされた共有シークレットに基づいています。サーバーとクライアントは、データの最初のバイトが送信される前に、使用する暗号化アルゴリズムと暗号化キーの詳細をネゴシエートします(以下を参照)。共有シークレットのネゴシエーションは、安全であり(ネゴシエートされたシークレットは盗聴者が利用できず、接続の途中にいる攻撃者でも取得できません)、信頼性があります(攻撃者は、ネゴシエーション中に通信を変更できません。検出されました)。
  • 通信する当事者の身元は、公開鍵暗号を使用して認証できますこの認証はサーバーには必須であり、クライアントにはオプションです。[7]
  • 送信される各メッセージには、送信中のデータの検出されない損失や変更を防ぐためのメッセージ認証コードを使用したメッセージ整合性チェックが含まれているため、接続は信頼できます。[8] :3 

上記に加えて、TLSを注意深く構成すると、転送秘密などのプライバシー関連のプロパティを追加できるため、暗号化キーの将来の開示を使用して、過去に記録されたTLS通信を復号化できなくなります。

TLSは、キーの交換、データの暗号化、およびメッセージの整合性の認証のためのさまざまな方法をサポートしています。その結果、TLSの安全な構成には多くの構成可能なパラメーターが含まれ、すべての選択肢が上記のリストに記載されているプラ​​イバシー関連のプロパティのすべてを提供するわけではありません(以下の表を参照してください§鍵交換§暗号セキュリティ、および§データ整合性)。

TLSが提供しようとしている通信セキュリティの側面を覆す試みがなされており、これらのセキュリティの脅威に対処するためにプロトコルが数回改訂されています。Webブラウザーの開発者は、潜在的なセキュリティの弱点が発見された後、それらを防ぐために製品を繰り返し改訂してきました(WebブラウザーのTLS / SSLサポート履歴を参照)。

歴史と発展

SSLおよびTLSプロトコル
プロトコル 公開済み スターテス
SSL 1.0 未発表 未発表
SSL 2.0 1995年 2011年に非推奨(RFC  6176
SSL 3.0 1996年 2015年に非推奨(RFC  7568
TLS 1.0 1999年 2020年に非推奨(RFC  8996[9] [10] [11]
TLS 1.1 2006年 2020年に非推奨(RFC  8996[9] [10] [11]
TLS 1.2 2008年
TLS 1.3 2018年

安全なデータネットワークシステム

Transport Layer Security Protocol(TLS)は、他のいくつかの基本的なネットワークセキュリティプラットフォームとともに、1986年8月に開始された、国家安全保障局、国家標準局、防衛通信局、および12の通信とSecure Data Network System(SDNS)と呼ばれる特別なプロジェクトを開始したコンピューター企業。[12]このプログラムは、1987年9月の第10回全国コンピュータセキュリティ会議で、膨大な数の出版された論文で説明されました。革新的な研究プログラムは、パブリックおよびプライベートインターネット上のアプリケーションに実装される次世代の安全なコンピュータ通信ネットワークと製品仕様の設計に焦点を合わせました。これは、米国政府のGOSIPプロファイルと国際的なITU-ISO JTC1インターネットの巨大な取り組みの両方で前進している、急速に出現している新しいOSIインターネット標準を補完することを目的としていました。当初はSP4プロトコルとして知られていましたが、TLSに名前が変更され、1995年に国際標準ITU-TX.274として公開されました| ISO / IEC 10736:1995。

セキュアネットワークプログラミング

トランスポート層のセキュリティに向けた初期の研究努力には、セキュリティを備えた既存のネットワークアプリケーションの改造を容易にするために、1993年にバークレーソケットに非常に似た安全なトランスポート層APIを持つアプローチを調査したSecure Network Programming(SNP)アプリケーションプログラミングインターフェイス(API)が含まれていました。対策。[13]

SSL 1.0、2.0、および3.0

Netscapeは独自のSSLプロトコルを開発し、1995年から1998年までNetscapeCommunicationsのチーフサイエンティストであるTaherElgamalは「SSLの父」と呼ばれています。[14] [15] [16] [17]プロトコルに重大なセキュリティ上の欠陥があるため、SSLバージョン1.0が公開されることはありませんでした。バージョン2.0は、1995年2月にリリースされた後、すぐに多くのセキュリティとユーザビリティの欠陥が含まれていることが発見されました。メッセージの認証と暗号化に同じ暗号化キーを使用しました。秘密のプレフィックスを持つMD5ハッシュ関数を使用する弱いMAC構造を持っていたため、長さ拡張攻撃に対して脆弱になりました。また、オープニングハンドシェイクまたは明示的なメッセージクローズのいずれも保護されませんでした。これは、中間者攻撃が検出されない可能性があることを意味します。さらに、SSL 2.0は、単一のサービスと固定ドメイン証明書を想定しており、Webサーバーで広く使用されている仮想ホスティングの機能と競合するため、ほとんどのWebサイトはSSLの使用を効果的に妨げられていました。

これらの欠陥により、プロトコルをSSLバージョン3.0に完全に再設計する必要がありました。[18] [16] 1996年にリリースされ、NetscapeのエンジニアであるPhilKarltonとAlanFreierと協力してPaulKocherが作成し、コンセンサス開発のChristopherAllenとTimDierksがリファレンス実装を行いました。新しいバージョンのSSL / TLSは、SSL3.0に基づいています。SSL 3.0の1996年のドラフトは、 RFC6101の歴史的文書としてIETFによって公開されまし 

SSL 2.0は、RFC6176によって2011年に非推奨になりまし2014年、SSL 3.0は、SSL内のすべてのブロック暗号に影響を与えるPOODLE攻撃に対して脆弱であることが判明しましたSSL 3.0でサポートされている唯一の非ブロック暗号であるRC4も、SSL3.0で使用されているように破壊される可能性があります。[19] SSL 3.0は、RFC7568によって2015年6月に非推奨になりまし  

TLS 1.0

TLS 1.0は、1999年1月にRFC 2246でSSLバージョン3.0のアップグレードとして最初に定義され、コンセンサス開発のChristopherAllenとTimDierksによって作成されました。RFCで述べられているように、「このプロトコルとSSL 3.0の違いは劇的ではありませんが、TLS1.0とSSL3.0の間の相互運用性を排除するのに十分なほど重要です」。Tim Dierksは後に、これらの変更と「SSL」から「TLS」への名前変更は、Microsoftにとっては面倒なジェスチャーであり、「IETFがNetscapeのプロトコルにゴム印を付けているようには見えない」と書いています。[20] 

PCI評議会は、組織が2018年6月30日までにTLS1.0からTLS1.1以降に移行することを提案しました。[ 21] [22] 2018年10月、AppleGoogleMicrosoftMozillaは共同で、3月にTLS1.0と1.1を廃止すると発表しました。 2020年。[9]

TLS 1.1

TLS 1.1は、2006年4月にRFC4346で定義されました。 [23]これはTLSバージョン1.0からのアップデートです。このバージョンの重要な違いは次のとおりです。  

TLSバージョン1.0および1.1のサポートは、2020年頃にWebサイトによって広く廃止され、24より前のFirefoxバージョンおよび29より前のChromiumベースのブラウザーへのアクセスが無効になりました。[25] [26] [27]

TLS 1.2

TLS 1.2は、2008年8月にRFC5246で定義されました。これは以前のTLS1.1仕様に基づいています。主な違いは次のとおりです。  

すべてのTLSバージョンは2011年3月にRFC6176でさらに改良され、 SSLとの下位互換性が削除され、TLSセッションがSecure Sockets Layer(SSL)バージョン2.0の使用をネゴシエートしないようになりました。  

TLS 1.3

TLS 1.3は、2018年8月にRFC8446で定義されまし。これは以前のTLS1.2仕様に基づいています。TLS1.2との主な違いは次のとおりです。[29] 

  • キー合意と認証アルゴリズムを暗号スイートから分離する
  • 弱くてあまり使用されていない名前付き楕円曲線のサポートを削除する
  • MD5およびSHA-224暗号化ハッシュ関数のサポートを削除します
  • 以前の構成が使用されている場合でもデジタル署名が必要
  • HKDFとセミエフェメラルDH提案の統合
  • 再開をPSKとチケットに置き換える
  • 1- RTTハンドシェイクのサポートと0- RTTの初期サポート
  • (EC)DHキー合意中にエフェメラルキーを使用することにより、完全転送秘密を義務付ける
  • 圧縮、再ネゴシエーション、非AEAD暗号、非PFSキー交換(静的RSAおよび静的DHキー交換など)、カスタムDHEグループ、ECポイント形式ネゴシエーション、暗号仕様の変更プロトコルなど、多くの安全でない機能または廃止された機能のサポートを終了します。こんにちはメッセージUNIX時間、およびAEAD暗号への長さフィールドAD入力
  • 下位互換性のためにSSLまたはRC4ネゴシエーションを禁止する
  • セッションハッシュの使用の統合
  • レコードレイヤーのバージョン番号の使用を廃止し、下位互換性を向上させるために番号を凍結します
  • セキュリティ関連のアルゴリズムの詳細を付録から仕様に移動し、ClientKeyShareを付録に委任する
  • Poly1305メッセージ認証コードを使用したChaCha20ストリーム暗号の追加
  • Ed25519およびEd448デジタル署名アルゴリズムの追加
  • x25519およびx448キー交換プロトコルの追加
  • 複数のOCSP応答を送信するためのサポートの追加
  • ServerHello後のすべてのハンドシェイクメッセージの暗号化

Mozillaによって開発され、そのWebブラウザFirefoxによって使用される暗号化ライブラリであるNetwork Security Services(NSS)は、2017年2月にデフォルトでTLS1.3を有効にしまし。ユーザー、自動的に有効化されない[31] — 2017年3月にリリースされたFirefox52.0へ。TLS1.3は、 Firefox60.0のリリースにより2018年5月にデフォルトで有効化されました[32]

Google Chromeは、2017年にTLS 1.3をデフォルトバージョンとして短期間設定しました。その後、Blue Coat Webプロキシなどの互換性のないミドルボックスのため、TLS1.3をデフォルトとして削除しました。[33]

2017年にシンガポールで開催されたIETF100ハッカソンの期間中、TLSグループはオープンソースアプリケーションをTLS1.3を使用するように適合させることに取り組みました。[34] [35] TLSグループは、cyberstorm.muチームを介して、日本、英国、モーリシャスの個人で構成されていました。[35]この作業は、ロンドンのIETF101ハッカソン[36]およびモントリオールのIETF102ハッカソンで継続されました。[37]

wolfSSLは、2017年5月にリリースされたバージョン3.11.1の時点でTLS1.3の使用を有効にしました。[38]最初の商用TLS1.3実装として、wolfSSL 3.11.1はドラフト18をサポートし、現在はドラフト28をサポートしています。多くの古いバージョンと同様に。TLS1.2と1.3のパフォーマンスの違いに関する一連のブログが公開されました。[40]

、人気のあるOpenSSLプロジェクトは、そのライブラリのバージョン1.1.1をリリースしました。このバージョンでは、TLS1.3のサポートが「ヘッドラインの新機能」でした。[41]

TLS 1.3のサポートは、Windows11およびWindowsServer2022でSChannelに最初に追加されました。[42]

エンタープライズトランスポートセキュリティ

Electronic FrontierFoundationはTLS1.3を賞賛し、TLS1.3の重要なセキュリティ対策を意図的に無効にするバリアントプロトコルEnterpriseTransport Security(ETS)について懸念を表明しました。[43]元々はEnterpriseTLS(eTLS)と呼ばれていたETSは、「ETSI TS103523-3」、「Middlebox Security Protocol、Part3:EnterpriseTransportSecurity」として知られる公開された標準です。これは、銀行システムなどの独自のネットワーク内で完全に使用することを目的としています。ETSは、独自のネットワークに接続しているサードパーティ組織がマルウェアの検出のためにネットワークトラフィックを監視し、監査を容易にするために秘密鍵を使用できるようにするために、ForwardSecrecyをサポートしていません。[44] [45]主張されている利点にもかかわらず、EFFは、前方秘訣が失われると、トラフィックを分析するためのより良い方法があると述べながら、データの公開が容易になる可能性があると警告しました。

デジタル証明書

デジタル証明書を使用したWebサイトの例

デジタル証明書は、証明書の指定されたサブジェクトによって公開鍵の所有権を証明し、その鍵の特定の予想される使用法を示します。これにより、他のユーザー(依存関係者)は、認証された公開鍵に対応する秘密鍵によって作成された署名またはアサーションに依存できます。キーストアとトラストストアは、.pem、.crt、.pfx、.jksなどのさまざまな形式にすることができます。

認証局

TLSは通常、信頼できるサードパーティの認証局のセットに依存して、証明書の信頼性を確立します。信頼は通常、ユーザーエージェントソフトウェア[46]とともに配布される証明書のリストに固定されており、証明書利用者が変更できます。

アクティブなTLS証明書を監視するNetcraftによると、市場をリードする認証局(CA)は、調査の開始以来、Symantec (または、認証サービスビジネスユニットがSymantecに購入される前のVeriSign )でした。2015年の時点で、ノートンライフロックはすべての証明書の3分の1弱を占め、Netcraftでカウントすると、最もビジーな100万のWebサイトで使用される有効な証明書の44%を占めています。[47] 2017年、SymantecはTLS / SSLビジネスをDigiCertに売却しました。[48]更新されたレポートでは、IdenTrustDigiCert、およびSectigoが、2019年5月以降の市場シェアで上位3つの認証局であることが示されました。[49]

X.509証明書を選択した結果として、認証局と公開鍵インフラストラクチャは、証明書とその所有者との関係を検証し、証明書の有効性を生成、署名、および管理するために必要です。これは信頼の網を介して身元を確認するよりも便利ですが2013年の大量監視の開示により、認証局はセキュリティの観点から弱点であり、中間者攻撃(MITM)が可能であることが広く知られるようになりました。認証局が協力する(または侵害される)場合。[50] [51]

アルゴリズム

鍵交換または鍵共有

クライアントとサーバーがTLSで保護された情報の交換を開始する前に、データを暗号化するときに使用する暗号化キーと暗号を安全に交換または合意する必要があります(§暗号を参照)。キー交換/合意に使用される方法には、RSA(TLSハンドシェイクプロトコルではTLS_RSAと表記)、Diffie–Hellman(TLS_DH)、一時的なDiffie–Hellman(TLS_DHE)、楕円曲線Diffie–Hellman( TLS_DHE)で生成された公開鍵と秘密鍵があります。 TLS_ECDH)、一時的な楕円曲線のDiffie–Hellman(TLS_ECDHE)、匿名のDiffie–Hellman(TLS_DH_anon)、[8] 事前共有キー(TLS_PSK)[52]、およびSecure Remote Password(TLS_SRP)。[53]

TLS_DH_anonおよびTLS_ECDH_anon鍵共有方式は、サーバーまたはユーザーを認証しないため、man-in-the-middle攻撃に対して脆弱であるため、ほとんど使用されません。TLS_DHEとTLS_ECDHEのみが転送秘密を提供します。

交換/契約中に使用される公開鍵証明書は、交換中に使用される公開/秘密暗号化鍵のサイズも異なり、したがって、提供されるセキュリティの堅牢性も異なります。2013年7月、Googleは、1024ビットの公開鍵を使用せず、代わりに2048ビットの鍵に切り替えて、ユーザーに提供するTLS暗号化のセキュリティを強化することを発表しました。これは、暗号化の強度が鍵のサイズに直接関係しているためです。 。[54] [55]

鍵交換/合意と認証
アルゴリズム SSL 2.0 SSL 3.0 TLS 1.0 TLS 1.1 TLS 1.2 TLS 1.3 スターテス
RSA はい はい はい はい はい 番号 RFCでTLS1.2用に定義されています
DH - RSA 番号 はい はい はい はい 番号
DHE - RSA転送秘密 番号 はい はい はい はい はい
ECDH - RSA 番号 番号 はい はい はい 番号
ECDHE - RSA(転送秘密) 番号 番号 はい はい はい はい
DH - DSS 番号 はい はい はい はい 番号
DHE - DSS(転送秘密) 番号 はい はい はい はい いいえ[56]
ECDH - ECDSA 番号 番号 はい はい はい 番号
ECDHE - ECDSA(転送秘密) 番号 番号 はい はい はい はい
ECDH - EdDSA 番号 番号 はい はい はい 番号
ECDHE - EdDSA(転送秘密)[57] 番号 番号 はい はい はい はい
PSK 番号 番号 はい はい はい
PSK - RSA 番号 番号 はい はい はい
DHE - PSK(転送秘密) 番号 番号 はい はい はい はい
ECDHE - PSK(転送秘密) 番号 番号 はい はい はい はい
SRP 番号 番号 はい はい はい
SRP - DSS 番号 番号 はい はい はい
SRP - RSA 番号 番号 はい はい はい
Kerberos 番号 番号 はい はい はい
DH -ANON(安全ではない) 番号 はい はい はい はい
ECDH -ANON(安全でない) 番号 番号 はい はい はい
GOST R 34.10-94 / 34.10-2001 [58] 番号 番号 はい はい はい RFCドラフトで提案

暗号

公に知られている実行可能な攻撃に対する 暗号のセキュリティ
暗号 プロトコルバージョン スターテス
タイプ アルゴリズム 公称強度(ビット) SSL 2.0 SSL 3.0
[n 1] [n 2] [n 3] [n 4]
TLS 1.0
[n 1] [n 3]
TLS 1.1
[n 1]
TLS 1.2
[n 1]
TLS 1.3
動作モードで
暗号をブロックする
AES GCM [59] [n 5] 256、128 該当なし 該当なし 該当なし 該当なし 安全 安全 RFCでTLS1.2用に定義されています
AES CCM [60] [n 5] 該当なし 該当なし 該当なし 該当なし 安全 安全
AES CBC [n 6] 該当なし 安全でない 緩和策に依存します 緩和策に依存します 緩和策に依存します 該当なし
椿 GCM [61] [n 5] 256、128 該当なし 該当なし 該当なし 該当なし 安全 該当なし
椿 CBC [62] [n 6] 該当なし 安全でない 緩和策に依存します 緩和策に依存します 緩和策に依存します 該当なし
ARIA GCM [63] [n 5] 256、128 該当なし 該当なし 該当なし 該当なし 安全 該当なし
ARIA CBC [63] [n 6] 該当なし 該当なし 緩和策に依存します 緩和策に依存します 緩和策に依存します 該当なし
シード CBC [64] [n 6] 128 該当なし 安全でない 緩和策に依存します 緩和策に依存します 緩和策に依存します 該当なし
3DES EDE CBC [n 6] [n 7] 112 [n 8] 安全でない 安全でない 安全でない 安全でない 安全でない 該当なし
GOST 28147-89 CNT [58] [n 7] 256 該当なし 該当なし 安全でない 安全でない 安全でない 該当なし RFC4357で定義されています 
IDEA CBC [n 6] [n 7] [n 9] 128 安全でない 安全でない 安全でない 安全でない 該当なし 該当なし TLS1.2から削除されました
DES CBC [n 6] [n 7] [n 9] 0 56 安全でない 安全でない 安全でない 安全でない 該当なし 該当なし
0 40 [n 10] 安全でない 安全でない 安全でない 該当なし 該当なし 該当なし TLS1.1以降では禁止されています
RC2 CBC [n 6] [n 7] 0 40 [n 10] 安全でない 安全でない 安全でない 該当なし 該当なし 該当なし
ストリーム暗号 ChaCha20 - Poly1305 [69] [n 5] 256 該当なし 該当なし 該当なし 該当なし 安全 安全 RFCでTLS1.2用に定義されています
RC4 [n 11] 128 安全でない 安全でない 安全でない 安全でない 安全でない 該当なし RFC7465によってTLSのすべてのバージョンで禁止されています 
0 40 [n 10] 安全でない 安全でない 安全でない 該当なし 該当なし 該当なし
なし ヌル[n12] 安全でない 安全でない 安全でない 安全でない 安全でない 該当なし RFCでTLS1.2用に定義されています
ノート
  1. ^ a b c d RFC 5746を実装して、このプロトコルを破壊する再ネゴシエーションの欠陥を修正する必要があります。 
  2. ^ ライブラリがRFC5746にリストされている修正を実装している場合これはSSL 3.0仕様に違反します。これは、TLSとは異なりIETFが変更できないものです。現在のほとんどのライブラリは修正を実装し、これが引き起こす違反を無視します。 
  3. ^ a b BEAST攻撃は、クライアントやサーバーによって軽減されない限り、SSL3.0およびTLS1.0で使用されるすべてのブロック暗号(CBC暗号)を破壊します。§Webブラウザを参照してください
  4. ^ POODLE攻撃は、クライアントやサーバーによって軽減されない限り、SSL 3.0で使用されるすべてのブロック暗号(CBC暗号)を破壊します。§Webブラウザを参照してください
  5. ^ a b c d e AEAD暗号(GCMCCMなど)は、TLS1.2以降でのみ使用できます。
  6. ^ a b c d e f g h ライブラリがタイミングサイドチャネルを排除するように注意深く作成されていない場合、CBC暗号はラッキーサーティーン攻撃で攻撃される可能性があります。
  7. ^ a b c d e Sweet32攻撃は、64ビットのブロックサイズのブロック暗号を破ります。[65]
  8. ^ 3DESのキー長は168ビットですが、3DESの有効なセキュリティ強度はわずか112ビットであり、 [66]推奨される最小の128ビットを下回っています。[67]
  9. ^ a bIDEA とDESはTLS1.2から削除されました。[68]
  10. ^ a b c 40ビット強度の暗号スイートは、特定の強力な暗号化アルゴリズムを含む暗号化ソフトウェアのエクスポートを禁止する米国の規制に準拠するために、キーの長さを短くして意図的に設計されました(米国からの暗号化のエクスポートを参照)。これらの弱いスイートは、TLS1.1以降では禁止されています。
  11. ^ TLSのすべてのバージョンでのRC4の使用は、 RFC 7465で禁止されてい RC4攻撃はSSL / TLSで使用されるRC4を弱めるか、壊すため)。 
  12. ^ 認証のみ、暗号化なし。

データの整合性

メッセージ認証コード(MAC)は、データの整合性のために使用されますHMACは、ブロック暗号のCBCモードに使用されます。GCMモードCCMモードなどの認証付き暗号化(AEAD)は、AEAD統合MACを使用し、 HMACを使用しません[70] HMACベースのPRF、またはHKDFがTLSハンドシェイクに使用されます。

データの整合性
アルゴリズム SSL 2.0 SSL 3.0 TLS 1.0 TLS 1.1 TLS 1.2 TLS 1.3 スターテス
HMAC - MD5 はい はい はい はい はい 番号 RFCでTLS1.2用に定義されています
HMAC - SHA1 番号 はい はい はい はい 番号
HMAC - SHA256 / 384 番号 番号 番号 番号 はい 番号
AEAD 番号 番号 番号 番号 はい はい
GOST 28147-89 IMIT [58] 番号 番号 はい はい はい RFCドラフトで提案
GOST R 34.11-94 [58] 番号 番号 はい はい はい

アプリケーションと採用

アプリケーション設計では、TLSは通常、トランスポート層プロトコルの上に実装され、 HTTPFTPSMTPNNTPXMPPなどのプロトコルのプロトコル関連データをすべて暗号化します

歴史的に、TLSは主に伝送制御プロトコル(TCP)などの信頼性の高いトランスポートプロトコルで使用されてきました。ただし、 User Datagram Protocol(UDP)やDatagram Congestion Control Protocol (DCCP)などのデータグラム指向のトランスポートプロトコルでも実装されており、その使用法はDatagram Transport Layer Security(DTLS)という用語を使用して個別に標準化されています。

ウェブサイト

TLSの主な用途は、WebサイトとHTTPプロトコルでエンコードされたWebブラウザとの間のワールドワイドウェブトラフィックを保護することです。HTTPトラフィックを保護するためのTLSのこの使用は、HTTPSプロトコルを構成します。[71]

ウェブサイトプロトコルのサポート(2021年10月)
プロトコル
バージョン
ウェブサイトの
サポート[72]
セキュリティ[72] [73]
SSL 2.0 0.4% 安全でない
SSL 3.0 3.0% 安全でない[74]
TLS 1.0 43.8% 非推奨[9] [10] [11]
TLS 1.1 47.8% 非推奨[9] [10] [11]
TLS 1.2 99.6% 暗号[n1]とクライアントの軽減[n2 ]に依存します
TLS 1.3 49.7% 安全
ノート
  1. ^ 上記の§暗号を参照してください
  2. ^ §Webブラウザおよび§TLS/ SSLセクション参照してください

Webブラウザ

2016年4月の時点で、すべての主要なWebブラウザーの最新バージョンはTLS 1.0、1.1、および1.2をサポートしており、デフォルトで有効になっています。ただし、サポートされているすべてのMicrosoftオペレーティングシステムが最新バージョンのIEをサポートしているわけではありません。さらに、多くのMicrosoftオペレーティングシステムは現在IEの複数のバージョンをサポートしていますが、これはMicrosoftのInternetExplorerサポートライフサイクルポリシーFAQに従って変更されています、「2016年1月12日以降、サポートされているオペレーティングシステムで利用可能な最新バージョンのInternet Explorerのみが、テクニカルサポートとセキュリティアップデートを受け取ります。」次に、このページには、各オペレーティングシステムでその日付にサポートされている最新のIEのバージョンが一覧表示されます。次の重要な日付は、オペレーティングシステムがライフステージの終わりに達したときです。これは、MicrosoftのWindowsライフサイクルファクトシートにあります。

既知の攻撃に対する緩和策はまだ十分ではありません。

  • POODLE攻撃に対する緩和策:一部のブラウザはすでにSSL3.0へのフォールバックを防止しています。ただし、この緩和策は、クライアントだけでなくサーバーでもサポートされる必要があります。SSL 3.0自体を無効にする、「プードル防止レコード分割」を実装する、またはSSL3.0でCBC暗号を拒否する必要があります。
    • Google Chrome:完了(TLS_FALLBACK_SCSVはバージョン33以降で実装され、SSL 3.0へのフォールバックはバージョン39以降無効になり、SSL 3.0自体はバージョン40以降デフォルトで無効になります。SSL3.0自体のサポートはバージョン44以降廃止されました。)
    • Mozilla Firefox:完了(バージョン39以降SSL 3.0自体のサポートは廃止されました。SSL3.0自体はデフォルトで無効になり、バージョン34以降はSSL 3.0へのフォールバックが無効になります。バージョン35以降、TLS_FALLBACK_SCSVが実装されます。ESRでは、SSL3.0自体はによって無効になります。デフォルトで、TLS_FALLBACK_SCSVはESR 31.3以降に実装されています。)
    • Internet Explorer:部分的(バージョン11でのみ、SSL 3.0は2015年4月以降デフォルトで無効になっています。バージョン10以前はPOODLEに対して引き続き脆弱です。)
    • Opera:complete(TLS_FALLBACK_SCSVはバージョン20以降に実装され、クライアント側の実装でのみ有効な「anti-POODLEレコード分割」はバージョン25以降に実装され、SSL3.0自体はバージョン27以降デフォルトで無効になっています。SSL3.0のサポートバージョン31以降、それ自体は削除されます。)
    • Safari:完了(OS X10.8以降およびiOS8でのみ、SSL 3.0へのフォールバック中のCBC暗号は拒否されますが、これはRC4を使用することを意味します。これも推奨されません。SSL3.0自体のサポートはOSXでは削除されます。 10.11以降およびiOS9。)
  • RC4攻撃に対する軽減
    • Google Chromeは、バージョン43以降のフォールバックを除いてRC4を無効にしました。RC4はChrome48以降無効になっています。
    • Firefoxはバージョン36以降のフォールバックを除いてRC4を無効にしました。Firefox44はデフォルトでRC4を無効にしました。
    • Operaはバージョン30以降のフォールバックを除いてRC4を無効にしました。RC4はOpera35以降無効になっています。
    • Internet Explorer for Windows 7 / Server 2008R2およびWindows8 / Server 2012は、RC4の優先度を最低に設定しており、レジストリ設定によるフォールバックを除いて、RC4を無効にすることもできます。Internet Explorer 11 Mobile 11 for Windows Phone 8.1は、他の有効なアルゴリズムが機能しない場合のフォールバックを除いて、RC4を無効にします。EdgeとIE11は、2016年8月にRC4を完全に無効にします。
  • FREAK攻撃に対する緩和策
    • Android4.0以前に含まれているAndroidブラウザは依然としてFREAK攻撃に対して脆弱です。
    • Internet Explorer 11 Mobileは、依然としてFREAK攻撃に対して脆弱です。
    • Google Chrome、Internet Explorer(デスクトップ)、Safari(デスクトップとモバイル)、およびOpera(モバイル)では、FREAKの緩和策が実施されています。
    • すべてのプラットフォーム上のMozillaFirefoxおよびWindows上のGoogleChromeは、FREAKの影響を受けませんでした。
WebブラウザのTLS / SSLサポート履歴
ブラウザ バージョン プラットフォーム SSLプロトコル TLSプロトコル 証明書のサポート 修正された脆弱性[n1] ユーザーによるプロトコルの選択
[n2]
SSL 2.0(安全ではない) SSL 3.0(安全ではない) TLS 1.0(非推奨) TLS 1.1(非推奨) TLS 1.2 TLS 1.3 EV
[n 3] [75]
SHA-2
[76]
ECDSA
[77]
ビースト[n4] 犯罪[ n5 ] プードル(SSLv3)[n 6] RC4 [n 7] フリーク[78] [79] Logjam
Google Chrome
Chrome for Android
[n 8]
[n 9]
1〜9 Windows  (7+)
macOS  (10.11+)
Linux
Android  (5.0+)
iOS  (12.2 +)
Chrome OS
デフォルトでは無効 デフォルトで有効 はい 番号 番号 番号 はい
(デスクトップのみ)
SHA-2互換OSが必要[76] ECC互換OSが必要[77] 影響を受けない
[84]
脆弱性
(HTTPS)
脆弱 脆弱 脆弱性
(Windowsを除く)
脆弱 はい[n10]
10〜20 いいえ[85] デフォルトで有効 はい 番号 番号 番号 はい
(デスクトップのみ)
SHA-2互換OSが必要[76] ECC互換OSが必要[77] 影響を受けません 脆弱性
(HTTPS / SPDY)
脆弱 脆弱 脆弱性
(Windowsを除く)
脆弱 はい[n10]
21 番号 デフォルトで有効 はい 番号 番号 番号 はい
(デスクトップのみ)
SHA-2互換OSが必要[76] ECC互換OSが必要[77] 影響を受けません 軽減
[86]
脆弱 脆弱 脆弱性
(Windowsを除く)
脆弱 はい[n10]
22〜29 番号 デフォルトで有効 はい はい[87] いいえ[87] [88] [89] [90] 番号 はい
(デスクトップのみ)
SHA-2互換OSが必要[76] ECC互換OSが必要[77] 影響を受けません 軽減 脆弱 脆弱 脆弱性
(Windowsを除く)
脆弱 一時的
[n11]
30〜32 番号 デフォルトで有効 はい はい はい[88] [89] [90] 番号 はい
(デスクトップのみ)
SHA-2互換OSが必要[76] ECC互換OSが必要[77] 影響を受けません 軽減 脆弱 脆弱 脆弱性
(Windowsを除く)
脆弱 一時的
[n11]
33〜37 番号 デフォルトで有効 はい はい はい 番号 はい
(デスクトップのみ)
SHA-2互換OSが必要[76] ECC互換OSが必要[77] 影響を受けません 軽減 部分的に軽減
[n12]
最低優先度
[93] [94] [95]
脆弱性
(Windowsを除く)
脆弱 一時的
[n11]
38、39 番号 デフォルトで有効 はい はい はい 番号 はい
(デスクトップのみ)
はい ECC互換OSが必要[77] 影響を受けません 軽減 部分的に軽減 優先度が最も低い 脆弱性
(Windowsを除く)
脆弱 一時的
[n11]
40 番号 デフォルトでは無効[92] [96] はい はい はい 番号 はい
(デスクトップのみ)
はい ECC互換OSが必要[77] 影響を受けません 軽減 軽減[ n13
]
優先度が最も低い 脆弱性
(Windowsを除く)
脆弱 はい[n14]
41、42 番号 デフォルトでは無効 はい はい はい 番号 はい
(デスクトップのみ)
はい ECC互換OSが必要[77] 影響を受けません 軽減 軽減 優先度が最も低い 軽減 脆弱 はい[n14]
43 番号 デフォルトでは無効 はい はい はい 番号 はい
(デスクトップのみ)
はい ECC互換OSが必要[77] 影響を受けません 軽減 軽減 フォールバックとしてのみ[n15
] [97]
軽減 脆弱 はい[n14]
44–47 番号 いいえ[98] はい はい はい 番号 はい
(デスクトップのみ)
はい ECC互換OSが必要[77] 影響を受けません 軽減 影響を受けません フォールバックとしてのみ
[n15]
軽減 軽減[99] 一時的
[n11]
48、49 番号 番号 はい はい はい 番号 はい
(デスクトップのみ)
はい ECC互換OSが必要[77] 影響を受けません 軽減 影響を受けません デフォルトでは無効[n16] [100] [101] 軽減 軽減 一時的
[n11]
50〜53 番号 番号 はい はい はい 番号 はい
(デスクトップのみ)
はい はい 影響を受けません 軽減 影響を受けません デフォルトでは無効[n16] [100] [101] 軽減 軽減 一時的
[n11]
54〜66 番号 番号 はい はい はい デフォルトでは無効
(ドラフトバージョン)
はい
(デスクトップのみ)
はい はい 影響を受けません 軽減 影響を受けません デフォルトでは無効[n16] [100] [101] 軽減 軽減 一時的
[n11]
67〜69 番号 番号 はい はい はい はい
(ドラフト版)
はい
(デスクトップのみ)
はい はい 影響を受けません 軽減 影響を受けません デフォルトでは無効[n16] [100] [101] 軽減 軽減 一時的
[n11]
70〜83 番号 番号 はい はい はい はい はい
(デスクトップのみ)
はい はい 影響を受けません 軽減 影響を受けません デフォルトでは無効[n16] [100] [101] 軽減 軽減 一時的
[n11]
84〜90 番号 番号 デフォルトで警告 デフォルトで警告 はい はい はい
(デスクトップのみ)
はい はい 影響を受けません 軽減 影響を受けません デフォルトでは無効[n16] [100] [101] 軽減 軽減 一時的
[n11]
91〜97 番号 番号 いいえ[102] いいえ[102] はい はい はい
(デスクトップのみ)
はい はい 影響を受けません 軽減 影響を受けません デフォルトでは無効[n16] [100] [101] 軽減 軽減 一時的
[n11]
ESC 98 98
ブラウザ バージョン プラットフォーム SSL 2.0(安全ではない) SSL 3.0(安全ではない) TLS 1.0(非推奨) TLS 1.1(非推奨) TLS 1.2 TLS 1.3 EV証明書 SHA-2証明書 ECDSA証明書 犯罪 プードル(SSLv3) RC4 FREAK Logjam ユーザーによるプロトコルの選択
Microsoft Edge
(Chromiumベース)
OSに依存しない
79〜83 Windows  (7+)
macOS  (10.12+)
Linux 
Android  (4.4+)
iOS  (11.0+)
番号 番号 はい はい はい はい はい はい はい 軽減 影響を受けません 影響を受けません デフォルトでは無効 軽減 軽減 はい[n10]
84〜90 番号 番号 デフォルトで警告 デフォルトで警告 はい はい はい はい はい 軽減 影響を受けません 影響を受けません デフォルトでは無効 軽減 軽減 はい[n10]
91-97 番号 番号 いいえ[103] いいえ[103] はい はい はい はい はい 軽減 影響を受けません 影響を受けません デフォルトでは無効 軽減 軽減 はい[n10]
ESC 98 98
ブラウザ バージョン プラットフォーム SSL 2.0(安全ではない) SSL 3.0(安全ではない) TLS 1.0(非推奨) TLS 1.1(非推奨) TLS 1.2 TLS 1.3 EV証明書 SHA-2証明書 ECDSA証明書 犯罪 プードル(SSLv3) RC4 FREAK Logjam ユーザーによるプロトコルの選択
Mozilla Firefox
モバイル用Firefox
[n 17]
1.0、1.5 Windows  (7+)
macOS  (10.12+)
Linux
Android  (5.0+)
iOS (11.4+)
Firefox OS
Maemo

ESRのみ:
Windows  (7+)
macOS  (10.12+)
Linux
デフォルトで有効
[104]
デフォルトで有効
[104]
はい[104] 番号 番号 番号 番号 はい[76] 番号 影響を受けない
[105]
影響を受けません 脆弱 脆弱 影響を受けません 脆弱 はい[n10]
2 デフォルトでは無効
[104] [106]
デフォルトで有効 はい 番号 番号 番号 番号 はい はい[77] 影響を受けません 影響を受けません 脆弱 脆弱 影響を受けません 脆弱 はい[n10]
3–7 デフォルトでは無効 デフォルトで有効 はい 番号 番号 番号 はい はい はい 影響を受けません 影響を受けません 脆弱 脆弱 影響を受けません 脆弱 はい[n10]
8〜10
ESR 10
いいえ[106] デフォルトで有効 はい 番号 番号 番号 はい はい はい 影響を受けません 影響を受けません 脆弱 脆弱 影響を受けません 脆弱 はい[n10]
11–14 番号 デフォルトで有効 はい 番号 番号 番号 はい はい はい 影響を受けません 脆弱性
(SPDY)[86]
脆弱 脆弱 影響を受けません 脆弱 はい[n10]
15–22
ESR 17.0–17.0.10
番号 デフォルトで有効 はい 番号 番号 番号 はい はい はい 影響を受けません 軽減 脆弱 脆弱 影響を受けません 脆弱 はい[n10]
ESR 17.0.11 番号 デフォルトで有効 はい 番号 番号 番号 はい はい はい 影響を受けません 軽減 脆弱 最低優先度
[107] [108]
影響を受けません 脆弱 はい[n10]
23 番号 デフォルトで有効 はい デフォルトでは無効
[109]
番号 番号 はい はい はい 影響を受けません 軽減 脆弱 脆弱 影響を受けません 脆弱 はい[n18]
24、25.0.0
ESR 24.0–24.1.0
番号 デフォルトで有効 はい デフォルトでは無効 デフォルトでは無効
[110]
番号 はい はい はい 影響を受けません 軽減 脆弱 脆弱 影響を受けません 脆弱 はい[n18]
25.0.1、26
ESR 24.1.1
番号 デフォルトで有効 はい デフォルトでは無効 デフォルトでは無効 番号 はい はい はい 影響を受けません 軽減 脆弱 最低優先度
[107] [108]
影響を受けません 脆弱 はい[n18]
27–33
ESR 31.0–31.2
番号 デフォルトで有効 はい はい[111] [112] はい[113] [112] 番号 はい はい はい 影響を受けません 軽減 脆弱 優先度が最も低い 影響を受けません 脆弱 はい[n18]
34、35
ESR 31.3–31.7
番号 デフォルトでは無効
[114] [115]
はい はい はい 番号 はい はい はい 影響を受けません 軽減 軽減[ n19
]
優先度が最も低い 影響を受けません 脆弱 はい[n18]
ESR 31.8 番号 デフォルトでは無効 はい はい はい 番号 はい はい はい 影響を受けません 軽減 軽減 優先度が最も低い 影響を受けません 軽減[118] はい[n18]
36〜38
ESR 38.0
番号 デフォルトでは無効 はい はい はい 番号 はい はい はい 影響を受けません 軽減 軽減 フォールバックとしてのみ[n15
] [119]
影響を受けません 脆弱 はい[n18]
ESR 38.1–38.8 番号 デフォルトでは無効 はい はい はい 番号 はい はい はい 影響を受けません 軽減 軽減 フォールバックとしてのみ
[n15]
影響を受けません 軽減[118] はい[n18]
39–43 番号 いいえ[120] はい はい はい 番号 はい はい はい 影響を受けません 軽減 影響を受けません フォールバックとしてのみ
[n15]
影響を受けません 軽減[118] はい[n18]
44〜48
ESR 45
番号 番号 はい はい はい 番号 はい はい はい 影響を受けません 軽減 影響を受けません デフォルトでは無効[n16 ] [121] [122] [123] [124] 影響を受けません 軽減 はい[n18]
49〜59
ESR 52
番号 番号 はい はい はい デフォルトでは無効
(ドラフトバージョン)[125]
はい はい はい 影響を受けません 軽減 影響を受けません デフォルトでは無効[n16] 影響を受けません 軽減 はい[n18]
60〜62
ESR 60
番号 番号 はい はい はい はい
(ドラフト版)
はい はい はい 影響を受けません 軽減 影響を受けません デフォルトでは無効[n16] 影響を受けません 軽減 はい[n18]
63〜77
ESR 68
番号 番号 はい はい はい はい はい はい はい 影響を受けません 軽減 影響を受けません デフォルトでは無効[n16] 影響を受けません 軽減 はい[n18]
78–96
ESR 78.0
ESR 91.0–91.5
番号 番号 デフォルトでは無効[126] デフォルトでは無効[126] はい はい はい はい はい 影響を受けません 軽減 影響を受けません デフォルトでは無効[n16] 影響を受けません 軽減 はい[n18]
ESR 91.6 97
ブラウザ バージョン プラットフォーム SSL 2.0(安全ではない) SSL 3.0(安全ではない) TLS 1.0(非推奨) TLS 1.1(非推奨) TLS 1.2 TLS 1.3 EV証明書 SHA-2証明書 ECDSA証明書 犯罪 プードル(SSLv3) RC4 FREAK Logjam ユーザーによるプロトコルの選択
Microsoft Internet Explorer
(1–10)
[n 20]
1.x Windows 3.1、95NT[ n 21] [ n 22 ] Mac OS 7、8
SSL / TLSサポートなし
2 はい 番号 番号 番号 番号 番号 番号 番号 番号 SSL3.0またはTLSのサポートなし 脆弱 脆弱 脆弱 該当なし
3 はい はい[129] 番号 番号 番号 番号 番号 番号 番号 脆弱 影響を受けません 脆弱 脆弱 脆弱 脆弱 未知の
4、5、6 _ _ _ _ Windows 3.1、95、98NT2000 [ n 21] [ n 22 ] Mac OS 7.1、8XSolarisHP - UX

デフォルトで有効 デフォルトで有効 デフォルトでは無効
[129]
番号 番号 番号 番号 番号 番号 脆弱 影響を受けません 脆弱 脆弱 脆弱 脆弱 はい[n10]
6 Windows XP [n 22] デフォルトで有効 デフォルトで有効 デフォルトでは無効 番号 番号 番号 番号 はい
(SP3以降)
[n 23] [130]
番号 軽減 影響を受けません 脆弱 脆弱 脆弱 脆弱 はい[n10]
7、8 _ _ デフォルトでは無効
[131]
デフォルトで有効 はい[131] 番号 番号 番号 はい はい
(SP3以降)
[n 23] [130]
番号 軽減 影響を受けません 脆弱 脆弱 脆弱 脆弱 はい[n10]
6 Server 2003 [n 22] デフォルトで有効 デフォルトで有効 デフォルトでは無効 番号 番号 番号 番号 はい
(KB938397 + KB968730)
[n 23] [130]
番号 軽減 影響を受けません 脆弱 脆弱 軽減
[134]
軽減
[135]
はい[n10]
7、8 _ _ デフォルトでは無効
[131]
デフォルトで有効 はい[131] 番号 番号 番号 はい はい
(KB938397 + KB968730)
[n 23] [130]
番号 軽減 影響を受けません 脆弱 脆弱 軽減
[134]
軽減
[135]
はい[n10]
7、8、9 _ _ _ _ Windows Vista デフォルトでは無効 デフォルトで有効 はい 番号 番号 番号 はい はい はい[77] 軽減 影響を受けません 脆弱 脆弱 軽減
[134]
軽減
[135]
はい[n10]
7、8、9 _ _ _ _ Server 2008 デフォルトでは無効 デフォルトで有効 はい デフォルトで無効[136]
(KB4019276)
デフォルトで無効[136]
(KB4019276)
番号 はい はい はい[77] 軽減 影響を受けません 脆弱 脆弱 軽減
[134]
軽減
[135]
はい[n10]
8、9、10 _ _ _ _ Windows 7/8 Server 2008 R2 / 2012 _
デフォルトでは無効 デフォルトで有効 はい デフォルトでは無効
[137]
デフォルトでは無効
[137]
番号 はい はい はい 軽減 影響を受けません 脆弱 最低優先度
[138] [n 24]
軽減
[134]
軽減
[135]
はい[n10]
Internet Explorer 11
[n 20]
11 Windows 7
Server 2008 R2
デフォルトでは無効 デフォルトでは無効
[n25]
はい はい[140] はい[140] 番号 はい はい はい 軽減 影響を受けません 軽減[ n25
]
デフォルトでは無効[144] 軽減
[134]
軽減
[135]
はい[n10]
11 [145] Windows 8.1 デフォルトでは無効 デフォルトでは無効
[n25]
はい はい[140] はい[140] 番号 はい はい はい 軽減 影響を受けません 軽減[ n25
]
デフォルトでは無効[n16] 軽減
[134]
軽減
[135]
はい[n10]
サーバー2012
サーバー2012R2
ブラウザ バージョン プラットフォーム SSL 2.0(安全ではない) SSL 3.0(安全ではない) TLS 1.0(非推奨) TLS 1.1(非推奨) TLS 1.2 TLS 1.3 EV証明書 SHA-2証明書 ECDSA証明書 犯罪 プードル(SSLv3) RC4 FREAK Logjam ユーザーによるプロトコルの選択
Microsoft Edge
(12–18)
(EdgeHTMLベース)
クライアントのみ


Internet Explorer 11
[n 20]
11 12〜13 Windows 10
1507〜1511
デフォルトでは無効 デフォルトでは無効 はい はい はい 番号 はい はい はい 軽減 影響を受けません 軽減 デフォルトでは無効[n16] 軽減 軽減 はい[n10]
11 14〜18
(クライアントのみ)
Windows 10
1607–2004
Windows Server(SAC)
1709–2004
いいえ[146] デフォルトでは無効 はい はい はい 番号 はい はい はい 軽減 影響を受けません 軽減 デフォルトでは無効[n16] 軽減 軽減 はい[n10]
Internet Explorer 11
[n 20]
11 Windows 10
20H2
Windows Server(SAC) 20H2
番号 デフォルトでは無効 はい はい はい 番号 はい はい はい 軽減 影響を受けません 軽減 デフォルトでは無効[n16] 軽減 軽減 はい[n10]
11 Windows 10
21H1
番号 デフォルトでは無効 はい はい はい 番号 はい はい はい 軽減 影響を受けません 軽減 デフォルトでは無効[n16] 軽減 軽減 はい[n10]
11 Windows 10
21H2
番号 デフォルトでは無効 はい はい はい 番号 はい はい はい 軽減 影響を受けません 軽減 デフォルトでは無効[n16] 軽減 軽減 はい[n10]
11 Windows 11 番号 デフォルトでは無効 はい はい はい はい[147] はい はい はい 軽減 影響を受けません 軽減 デフォルトでは無効[n16] 軽減 軽減 はい[n10]
Internet Explorer 11
[n 20]
LTSCバージョン
11 Windows 10
LTSB 2015(1507)
デフォルトでは無効 デフォルトでは無効 はい はい はい 番号 はい はい はい 軽減 影響を受けません 軽減 デフォルトでは無効[n16] 軽減 軽減 はい[n10]
11 Windows 10
LTSB 2016(1607)
いいえ[146] デフォルトでは無効 はい はい はい 番号 はい はい はい 軽減 影響を受けません 軽減 デフォルトでは無効[n16] 軽減 軽減 はい[n10]
11 Windows Server 2016
(LTSB / 1607)
いいえ[146] デフォルトでは無効 はい はい はい 番号 はい はい はい 軽減 影響を受けません 軽減 デフォルトでは無効[n16] 軽減 軽減 はい[n10]
11 Windows 10
LTSC 2019(1809)
Windows Server 2019
(LTSC / 1809)
番号 デフォルトでは無効 はい はい はい 番号 はい はい はい 軽減 影響を受けません 軽減 デフォルトでは無効[n16] 軽減 軽減 はい[n10]
11 Windows 10
LTSC 2021(21H2)
番号 デフォルトでは無効 はい はい はい 番号 はい はい はい 軽減 影響を受けません 軽減 デフォルトでは無効[n16] 軽減 軽減 はい[n10]
11 Windows Server 2022
(LTSC)
番号 デフォルトでは無効 はい はい はい はい[147] はい はい はい 軽減 影響を受けません 軽減 デフォルトでは無効[n16] 軽減 軽減 はい[n10]
ブラウザ バージョン プラットフォーム SSL 2.0(安全ではない) SSL 3.0(安全ではない) TLS 1.0(非推奨) TLS 1.1(非推奨) TLS 1.2 TLS 1.3 EV証明書 SHA-2証明書 ECDSA証明書 犯罪 プードル(SSLv3) RC4 FREAK Logjam ユーザーによるプロトコルの選択
Microsoft Internet Explorer Mobile
[n 20]
7、9 Windows Phone 7、7.5、7.8 デフォルトでは無効
[131]
デフォルトで有効 はい [引用は必要ありません]
[引用は必要ありません]
番号 [引用は必要ありません]
はい はい[148] 未知の 影響を受けません 脆弱 脆弱 脆弱 脆弱 サードパーティツールのみ[n26]
10 Windows Phone 8 デフォルトでは無効 デフォルトで有効 はい デフォルトでは無効
[150]
デフォルトでは無効
[150]
番号 [引用は必要ありません]
はい はい[151] 軽減 影響を受けません 脆弱 脆弱 脆弱 脆弱 サードパーティツールのみ[n26]
11 Windows Phone 8.1 デフォルトでは無効 デフォルトで有効 はい はい[152] はい[152] 番号 [引用は必要ありません]
はい はい 軽減 影響を受けません 脆弱 フォールバックとしてのみ[n15
] [153] [154]
脆弱 脆弱 サードパーティツールのみ[n26]
Microsoft Edge
(13–15)
(EdgeHTMLベース)
[n 27]
13 Windows 10 Mobile
1511
デフォルトでは無効 デフォルトでは無効 はい はい はい 番号 はい はい はい 軽減 影響を受けません 軽減 デフォルトでは無効[n16] 軽減 軽減 番号
14、15 Windows 10 Mobile
1607–1709
いいえ[146] デフォルトでは無効 はい はい はい 番号 はい はい はい 軽減 影響を受けません 軽減 デフォルトでは無効[n16] 軽減 軽減 番号
ブラウザ バージョン プラットフォーム SSL 2.0(安全ではない) SSL 3.0(安全ではない) TLS 1.0(非推奨) TLS 1.1(非推奨) TLS 1.2 TLS 1.3 EV証明書 SHA-2証明書 ECDSA証明書 犯罪 プードル(SSLv3) RC4 FREAK Logjam ユーザーによるプロトコルの選択
Apple Safari
[n 28]
1 Mac OS X 10.2、10.3 いいえ[159] はい はい 番号 番号 番号 番号 番号 番号 脆弱 影響を受けません 脆弱 脆弱 脆弱 脆弱 番号
2–5 Mac OS X 10.4、10.5Win XP 番号 はい はい 番号 番号 番号 v3.2以降 番号 番号 脆弱 影響を受けません 脆弱 脆弱 脆弱 脆弱 番号
3–5 VistaWin 7 番号 はい はい 番号 番号 番号 v3.2以降 番号 はい[148] 脆弱 影響を受けません 脆弱 脆弱 脆弱 脆弱 番号
4–6 Mac OS X 10.6、10.7 番号 はい はい 番号 番号 番号 はい はい[76] はい[77] 脆弱 影響を受けません 脆弱 脆弱 脆弱 脆弱 番号
6 OS X 10.8 番号 はい はい 番号 番号 番号 はい はい はい[77] 軽減[ n29
]
影響を受けません 軽減[ n30
]
脆弱性
[n30]
軽減
[165]
脆弱 番号
7、9 OS X 10.9 番号 はい はい はい[166] はい[166] 番号 はい はい はい 軽減
[161]
影響を受けません 軽減[ n30
]
脆弱性
[n30]
軽減
[165]
脆弱 番号
8〜10 OS X 10.10 番号 はい はい はい はい 番号 はい はい はい 軽減 影響を受けません 軽減[ n30
]
最低優先度
[167] [n 30]
軽減
[165]
軽減
[168]
番号
9–11 OS X 10.11 番号 番号 はい はい はい 番号 はい はい はい 軽減 影響を受けません 影響を受けません 優先度が最も低い 軽減 軽減 番号
10〜13 macOS 10.12、10.13 _ _ 番号 番号 はい はい はい 番号 はい はい はい 軽減 影響を受けません 影響を受けません デフォルトでは無効[n16] 軽減 軽減 番号
12–14 macOS 10.14 番号 番号 はい はい はい はい(macOS 10.14.4以降)[169] はい はい はい 軽減 影響を受けません 影響を受けません デフォルトでは無効[n16] 軽減 軽減 番号
13、14 15 macOS 10.15 番号 番号 はい はい はい はい はい はい はい 軽減 影響を受けません 影響を受けません デフォルトでは無効[n16] 軽減 軽減 番号
14 15 macOS 11 番号 番号 はい はい はい はい はい はい はい 軽減 影響を受けません 影響を受けません デフォルトでは無効[n16] 軽減 軽減 番号
15 macOS 12 番号 番号 はい はい はい はい はい はい はい 軽減 影響を受けません 影響を受けません デフォルトでは無効[n16] 軽減 軽減 番号
ブラウザ バージョン プラットフォーム SSL 2.0(安全ではない) SSL 3.0(安全ではない) TLS 1.0(非推奨) TLS 1.1(非推奨) TLS 1.2 TLS 1.3 EV証明書 SHA-2証明書 ECDSA証明書 犯罪 プードル(SSLv3) RC4 FREAK Logjam ユーザーによるプロトコルの選択
Apple Safari
(モバイル)
[n 31]
3 iPhone OS 1、2 _ いいえ[173] はい はい 番号 番号 番号 番号 番号 番号 脆弱 影響を受けません 脆弱 脆弱 脆弱 脆弱 番号
4、5 iPhone OS 3iOS 4 番号 はい はい 番号 番号 番号 はい[174] はい iOS4以降[148] 脆弱 影響を受けません 脆弱 脆弱 脆弱 脆弱 番号
5、6 iOS 5、6 _ _ 番号 はい はい はい[170] はい[170] 番号 はい はい はい 脆弱 影響を受けません 脆弱 脆弱 脆弱 脆弱 番号
7 iOS 7 番号 はい はい はい はい 番号 はい はい はい[175] 軽減
[176]
影響を受けません 脆弱 脆弱 脆弱 脆弱 番号
8 iOS 8 番号 はい はい はい はい 番号 はい はい はい 軽減 影響を受けません 軽減[ n30
]
最低優先度
[177] [n 30]
軽減
[178]
軽減
[179]
番号
9 iOS 9 番号 番号 はい はい はい 番号 はい はい はい 軽減 影響を受けません 影響を受けません 優先度が最も低い 軽減 軽減 番号
10、11 iOS 10、11 _ _ 番号 番号 はい はい はい 番号 はい はい はい 軽減 影響を受けません 影響を受けません デフォルトでは無効[n16] 軽減 軽減 番号
12 iOS 12 番号 番号 はい はい はい はい(iOS 12.2以降)[169] はい はい はい 軽減 影響を受けません 影響を受けません デフォルトでは無効[n16] 軽減 軽減 番号
13、14 iOS 13、14 _ _ 番号 番号 はい はい はい はい はい はい はい 軽減 影響を受けません 影響を受けません デフォルトでは無効[n16] 軽減 軽減 番号
iPadOS 13、14
15 iOS 15 番号 番号 はい はい はい はい はい はい はい 軽減 影響を受けません 影響を受けません デフォルトでは無効[n16] 軽減 軽減 番号
iPadOS 15
ブラウザ バージョン プラットフォーム SSL 2.0(安全ではない) SSL 3.0(安全ではない) TLS 1.0(非推奨) TLS 1.1(非推奨) TLS 1.2 TLS 1.3 EV
[n 3]
SHA-2 ECDSA ビースト[n4] 犯罪[ n5 ] プードル(SSLv3)[n 6] RC4 [n 7] フリーク[78] [79] Logjam ユーザーによるプロトコルの選択
Google Android OS
[180]
Android 1.0–4.0.4 番号 デフォルトで有効 はい 番号 番号 番号 未知の はい[76] 3.0以降[148] [77] 未知の 未知の 脆弱 脆弱 脆弱 脆弱 番号
Android 4.1–4.4.4 番号 デフォルトで有効 はい デフォルトでは無効[181] デフォルトでは無効[181] 番号 未知の はい はい 未知の 未知の 脆弱 脆弱 脆弱 脆弱 番号
Android 5.0–5.0.2 番号 デフォルトで有効 はい はい[181] [182] はい[181] [182] 番号 未知の はい はい 未知の 未知の 脆弱 脆弱 脆弱 脆弱 番号
Android 5.1–5.1.1 番号 デフォルトでは無効
[要出典]
はい はい はい 番号 未知の はい はい 未知の 未知の 影響を受けません フォールバックとしてのみ
[n15]
軽減 軽減 番号
Android 6.07.1.2 番号 デフォルトでは無効
[要出典]
はい はい はい 番号 未知の はい はい 未知の 未知の 影響を受けません デフォルトでは無効 軽減 軽減 番号
Android 8.0–8.1 番号 いいえ
[183]
はい はい はい 番号 未知の はい はい 未知の 未知の 影響を受けません デフォルトでは無効 軽減 軽減 番号
Android 9 番号 番号 はい はい はい 番号 未知の はい はい 未知の 未知の 影響を受けません デフォルトでは無効 軽減 軽減 番号
Android 10 番号 番号 はい はい はい はい 未知の はい はい 未知の 未知の 影響を受けません デフォルトでは無効 軽減 軽減 番号
Android 11 番号 番号 はい はい はい はい 未知の はい はい 未知の 未知の 影響を受けません デフォルトでは無効 軽減 軽減 番号
Android 12 番号 番号 未知の 未知の はい はい 未知の はい はい 未知の 未知の 影響を受けません デフォルトでは無効 軽減 軽減 番号
ブラウザ バージョン プラットフォーム SSL 2.0(安全ではない) SSL 3.0(安全ではない) TLS 1.0(非推奨) TLS 1.1(非推奨) TLS 1.2 TLS 1.3 EV証明書 SHA-2証明書 ECDSA証明書 犯罪 プードル(SSLv3) RC4 FREAK Logjam ユーザーによるプロトコルの選択
色またはメモ 意義
ブラウザバージョン プラットホーム
ブラウザバージョン オペレーティング・システム 将来のリリース; 開発中で
ブラウザバージョン オペレーティング・システム 現在の最新リリース
ブラウザバージョン オペレーティング・システム 以前のリリース。まだサポートされています
ブラウザバージョン オペレーティング・システム 以前のリリース。長期サポートは引き続き有効ですが、12か月以内に終了します
ブラウザバージョン オペレーティング・システム 以前のリリース。サポートされなくなりました
該当なし オペレーティング・システム 混合/詳細不明
オペレーティングシステム(バージョン+) 最低限必要なオペレーティングシステムのバージョン(サポートされているバージョンのブラウザの場合)
オペレーティング・システム このオペレーティングシステムではサポートされなくなりました
ノート
  1. ^ ブラウザには緩和策がありますか、それとも既知の攻撃に対して脆弱ではありませんか。実際のセキュリティは、ネゴシエートされた暗号、暗号化強度などの他の要因に依存することに注意してください( §暗号表を参照)。
  2. ^ ユーザーまたは管理者が使用するプロトコルを選択できるかどうか。はいの場合、BEAST(SSL3.0およびTLS1.0で脆弱)やPOODLE(SSL 3.0で脆弱)などのいくつかの攻撃を回避できます。
  3. ^ a b EVSSLとDVSSL(通常のSSL)をインジケーター(緑色のロックアイコン、緑色のアドレスバーなど)で区別できるかどうか。
  4. ^ a b 例:1 / n-1レコード分割。
  5. ^ a b 例:HTTPS / SPDYでヘッダー圧縮を無効にします。
  6. ^ a b
    • 完全な緩和; SSL 3.0自体を無効にする、「アンチプードルレコード分割」。「Anti-POODLEレコード分割」は、クライアント側の実装でのみ有効であり、SSL 3.0仕様に従って有効ですが、サーバー側の実装の問題により互換性の問題が発生する可能性もあります。
    • 部分的な緩和; SSL 3.0、TLS_FALLBACK_SCSVへのフォールバックを無効にし、CBC動作モードで暗号スイートを無効にします。サーバーがTLS_FALLBACK_SCSVもサポートしている場合、POODLE攻撃はサーバーとブラウザーのこの組み合わせに対して失敗しますが、サーバーがTLS_FALLBACK_SCSVをサポートせず、SSL3.0をサポートしている接続は依然として脆弱です。SSL 3.0でCBC動作モードの暗号スイートを無効にすると、RC4の暗号スイートのみが使用可能になり、RC4攻撃が容易になります。
    • SSL 3.0を手動で無効にすると、POODLE攻撃は失敗します。
  7. ^ a b
    • 完全な緩和; RC4で暗号スイートを無効にします。
    • 古いシステムとの互換性を維持するための部分的な緩和。RC4の優先度を低く設定します。
  8. ^ Google Chrome(およびChromium)は、バージョン22のTLS 1.0およびTLS 1.1をサポートしています(追加され、バージョン21から削除されました)。TLS 1.2のサポートが追加され、Chrome29から削除されました。 [80] [81] [82]
  9. ^ Android、OS X、およびWindowsの場合はBoringSSL [83]、Linuxの場合はNSSによって提供されるTLS実装を使用しますGoogleは、Chromeで使用されているTLSライブラリをNSSからBoringSSLに完全に切り替えています。
  10. ^ a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai 設定/オプション(メニュー名ブラウザに依存します)
  11. ^ a b c d e f g h i j k l コマンドラインオプションを使用して、有効化プロトコルの最大バージョンと最小バージョンを構成します
  12. ^ TLS_FALLBACK_SCSVが実装されています。[91]バージョン39以降、SSL3.0へのフォールバックは無効になっています。[92]
  13. ^ TLS_FALLBACK_SCSVとSSL3.0へのフォールバックの無効化に加えて、SSL3.0自体はデフォルトで無効になっています。[92]
  14. ^ a b c chrome:// flags [96]を介して有効化プロトコルの最小バージョンを構成します(最大バージョンはコマンドラインオプションで構成できます)
  15. ^ a b c d e f g RC4以外の暗号スイートが利用できない場合にのみ、RC4の暗号スイートがフォールバックとして使用されます。
  16. ^ a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah aiaj すべてのRC4暗号スイートはデフォルトで無効になっています
  17. ^ NSSによって提供されるTLS実装を使用しますFirefox 22の時点では、バンドルされたNSSがTLS 1.1をサポートしているにもかかわらず、FirefoxはTLS1.0のみをサポートしています。Firefox 23以降、TLS 1.1を有効にできますが、問題のためにデフォルトでは有効になりませんでした。Firefox 24では、デフォルトでTLS1.2サポートが無効になっています。Firefox27リリースではTLS1.1およびTLS1.2がデフォルトで有効になっています。
  18. ^ a b c d e f g h i j k l m n about:configを介して有効化プロトコルの最大バージョンと最小バージョンを構成します
  19. ^ SSL3.0自体はデフォルトで無効になっています。[114]さらに、SSL 3.0へのフォールバックはバージョン34以降無効になっており、 [116]およびTLS_FALLBACK_SCSVは35.0およびESR31.3以降実装されています。[114] [117]
  20. ^ a b c d e f IEは、 SChannelセキュリティサポートプロバイダーによって提供されるMicrosoftWindowsオペレーティングシステムのTLS実装を使用します。TLS 1.1および1.2は、IE11までデフォルトで無効になっています。[127] [128]
  21. ^ a b Windows NT3.1はIE1–2をサポートし、Windows NT3.5はIE1–3をサポートし、Windows NT 3.51およびWindowsNT4.0はIE1–6をサポートします
  22. ^ a b c d WindowsXPおよびServer2003以前は、すぐに使用できる3DESやRC4などの弱い暗号のみをサポートします。[132]これらのSChannelバージョンの弱い暗号は、IEだけでなく、OfficeやWindowsUpdateなどのこのOSで実行されている他のMicrosoft製品にも使用されます。KB948963 [133]によるAES暗号をサポートするための手動更新を取得できるのはWindowsServer2003のみです。
  23. ^ a b c d MS13-095またはMS14-049(Windows Server 2003、Windows XP x64、およびWindows XP SP3(32ビット)用)
  24. ^ RC4は、フォールバックとして以外は無効にできます(RC4以外の暗号スイートが使用できない場合にのみ、RC4の暗号スイートがフォールバックとして使用されます。) [139]
  25. ^ a b c d SSL 3.0へのフォールバックは、保護モードのInternet Explorer11でデフォルトでブロックされているサイトです。[141] [142] 2015年4月以降、Internet Explorer11ではSSL3.0がデフォルトで無効になっています。[143]
  26. ^ a b c レジストリの編集によって無効にすることができますが、これを行うにはサードパーティのツールが必要です。[149]
  27. ^ Edge(以前はProject Spartanと呼ばれていました)は、Internet Explorer11レンダリングエンジンのフォークに基づいています。
  28. ^ SafariはMacOS X、Windows(XP、Vista、7) [155]でオペレーティングシステムの実装を使用し、バージョンは不明です。 [156] Safari5はWindowsで利用可能な最後のバージョンです。OS X 10.8は、TLS1.1および1.2のSecureTransportをサポートしています[157] Qualys SSLレポートは、1.1または1.2ではなくTLS1.0と接続するSafari5.1.9をシミュレートします[158]
  29. ^ 2013年9月、AppleはOS X 10.8 (Mountain Lion)でBEAST緩和策をしましたが、デフォルトではオンになっていないため、SafariはそのプラットフォームでのBEAST攻撃に対して理論的に脆弱です。[160] [161] 2014年2月に更新されたOSX 10.8.5から、BEASTの軽減がデフォルトで有効になっています。 [162]
  30. ^ a b c d e f g hApple はPOODLEを軽減するためにSSL3.0のすべてのCBCプロトコルのサポートを削除したため、[163] [164]これはRC4のみを残し、SSL3.0のRC4攻撃によって完全に破壊されます。
  31. ^ システムUIWebViewライブラリを利用するモバイルSafariおよびサードパーティソフトウェアは、の時点でTLS1.2をサポートするiOSオペレーティングシステムの実装を使用します。[170] [171] [172]

ライブラリ

ほとんどのSSLおよびTLSプログラミングライブラリは、無料のオープンソースソフトウェアです。

TLS / SSLのライブラリサポート
実装 SSL 2.0(安全ではない) SSL 3.0(安全ではない) TLS 1.0 TLS 1.1 TLS 1.2 TLS 1.3
ボタン 番号 いいえ[185] はい はい はい
BSAFE Micro Edition Suite 番号 デフォルトでは無効 はい はい はい 開発中
BSAFE SSL-J 番号 デフォルトでは無効 はい はい はい はい
cryptlib 番号 コンパイル時にデフォルトで無効になっています はい はい はい
GnuTLS いいえ[a] デフォルトでは無効[186] はい はい はい はい[187]
JSSE いいえ[a] デフォルトでは無効[188] デフォルトでは無効[189] デフォルトでは無効[189] はい はい
LibreSSL いいえ[190] いいえ[191] はい はい はい バージョン3.2.2以降[192] [193]
MatrixSSL 番号 コンパイル時にデフォルトで無効になっています[194] はい はい はい はい
(ドラフトバージョン)
mbed TLS(以前のPolarSSL) 番号 デフォルトでは無効[195] はい はい はい
ネットワークセキュリティサービス いいえ[b] デフォルトでは無効[196] はい はい[197] はい[198] はい[199]
OpenSSL いいえ[200] デフォルトで有効 はい はい[201] はい[201] はい[202]
SChannel XP / 2003 [203] MSIE7ではデフォルトで無効になっています デフォルトで有効 MSIE7ではデフォルトで有効になっています 番号 番号 番号
SChannel Vista [204] デフォルトでは無効 デフォルトで有効 はい 番号 番号 番号
SChannel 2008 [204] デフォルトでは無効 デフォルトで有効 はい デフォルトでは無効(KB4019276)[136] デフォルトでは無効(KB4019276)[136] 番号
SChannel 7/2008 R2 [205] デフォルトでは無効 MSIE11ではデフォルトで無効になっています はい MSIE11でデフォルトで有効になっています MSIE11でデフォルトで有効になっています 番号
SChannel 8/2012 [205] デフォルトでは無効 デフォルトで有効 はい デフォルトでは無効 デフォルトでは無効 番号
SChannel 8.1 / 2012 R2、10 v1507&v1511 [205] デフォルトでは無効 MSIE11ではデフォルトで無効になっています はい はい はい 番号
SChannel 10 v1607 / 2016 [146] 番号 デフォルトでは無効 はい はい はい 番号
SChannel 10 v1903 [206] 番号 デフォルトでは無効 はい はい はい 番号
SChannel 10 v21H1 [207] 番号 デフォルトでは無効 はい はい はい 番号
SChannel 11/2022 [208] 番号 デフォルトでは無効 はい はい はい はい
セキュアトランスポートOSX 10.2–10.8 / iOS 1–4 はい はい はい 番号 番号
セキュアトランスポートOSX 10.9–10.10 / iOS 5–8 いいえ[c] はい はい はい[c] はい[c]
セキュアトランスポートOSX 10.11 / iOS 9 番号 いいえ[c] はい はい はい
Seed7 TLS / SSLライブラリ 番号 はい はい はい はい
wolfSSL(以前のCyaSSL) 番号 デフォルトでは無効[209] はい はい はい はい[210]
実装 SSL 2.0(安全ではない) SSL 3.0(安全ではない) TLS 1.0 TLS 1.1 TLS 1.2 TLS 1.3
  1. ^
    SSL 2.0はサポートされていませんが、下位互換性の理由からSSL2.0クライアントhelloがサポートされています。
  2. ^
    SSL / TLSプロトコルのサーバー側の実装は、受信したv2互換のクライアントhelloメッセージの処理を引き続きサポートします。[211]
  3. ^
    セキュアトランスポート:SSL2.0はOSX10.8で廃止されました。SSL3.0はOSX10.11およびiOS9で廃止されました。TLS1.1および1.2は、iOS 5.0以降、およびOS X10.9以降で使用できます。[212]
  4. [213]

コンピュータと通信のセキュリティに関する2012年のACM 会議で発表された論文[214]は、これらのSSLライブラリの一部を正しく使用しているアプリケーションがほとんどなく、脆弱性につながることを示しています。著者によると

「これらの脆弱性のほとんどの根本的な原因は、基盤となるSSLライブラリに対するAPIのひどい設計です。機密性や認証などのネットワークトンネルの高レベルのセキュリティプロパティを表現する代わりに、これらのAPIはSSLプロトコルの低レベルの詳細を公開しますその結果、開発者はSSL APIを誤って使用し、マニフォールドパラメータ、オプション、副作用、および戻り値を誤解したり誤解したりすることがよくあります。」

その他の用途

Simple Mail Transfer ProtocolSMTP)もTLSで保護できます。これらのアプリケーションは、公開鍵証明書を使用してエンドポイントのIDを検証します。

TLSは、ネットワークスタック全体をトンネリングしてVPNを作成するためにも使用できます。これは、OpenVPNおよびOpenConnectの場合です。多くのベンダーは、TLSの暗号化および認証機能と承認を結び付けています。また、1990年代後半から、クライアント/サーバーアプリケーションのサポートを可能にするために、Webブラウザの外部でクライアントテクノロジを作成するという実質的な開発が行われてきました。従来のIPsecVPNテクノロジーと比較して、TLSには、ファイアウォールとNATトラバーサルに固有の利点がいくつかあり、大規模なリモートアクセス人口の管理が容易になります。

TLSは、 Session Initiation Protocol(SIP)アプリケーションシグナリングを保護するための標準的な方法でもあります。TLSは、 VoIPおよびその他のSIPベースのアプリケーションに関連付けられたSIPシグナリングの認証と暗号化を提供するために使用できます。[215]

セキュリティ

TLS / SSLに対する攻撃

TLS / SSLに対する重大な攻撃を以下に示します。

2015年2月、IETFはTLS / SSLに対するさまざまな既知の攻撃を要約し た情報RFC [216]を発行しました。

再交渉攻撃

再ネゴシエーション手順の脆弱性が2009年8月に発見され、SSL3.0および現在のすべてのバージョンのTLSに対するプレーンテキストインジェクション攻撃につながる可能性があります。[217]たとえば、https接続を乗っ取ることができる攻撃者は、クライアントがWebサーバーと行う会話の最初に自分の要求をつなぎ合わせることができます。攻撃者は実際にクライアント/サーバー通信を復号化できないため、一般的な中間者攻撃とは異なります。短期的な修正は、Webサーバーが再ネゴシエーションの許可を停止することです。これは通常、クライアント証明書がない限り、他の変更を必要としません。認証が使用されます。この脆弱性を修正するために、TLSの再ネゴシエーション表示拡張機能が提案されました。クライアントとサーバーは、再ネゴシエーションハンドシェイクに以前のハンドシェイクに関する情報を含めて検証する必要があります。[218]この拡張機能は提案された標準になり、RFC5746という番号が割り当てられてますRFCは、いくつかのライブラリによって実装されています。[219] [220] [221] 

ダウングレード攻撃:FREAKアタックとLogjam攻撃

プロトコルダウングレード攻撃(バージョンロールバック攻撃とも呼ばれます)は、Webサーバーをだまして、安全でないものとして長い間放棄されてきた以前のバージョンのTLS(SSLv2など)との接続をネゴシエートさせます。

False Start [222](Google Chrome [223]で採用および有効化)やSnap Startなど、元のプロトコルに対する以前の変更により、制限付きのTLSプロトコルダウングレード攻撃[224]が導入されたか、クライアントから送信された暗号スイートリストへの変更が許可されたと報告されていますサーバーに。そうすることで、攻撃者は、より弱い対称暗号化アルゴリズムまたはより弱い鍵交換のいずれかを使用するようにネゴシエートされた暗号スイートをダウングレードしようとして、暗号スイートの選択に影響を与えることに成功する可能性があります。[225]コンピュータと通信のセキュリティに関するACM 会議で発表された論文2012年には、False Start拡張機能が危険にさらされていることが示されました。特定の状況では、攻撃者が暗号化キーをオフラインで回復し、暗号化されたデータにアクセスできる可能性があります。[226]

暗号化ダウングレード攻撃は、サーバーとクライアントに暗号化された弱いキーを使用して接続をネゴシエートさせる可能性があります。2014年に、FREAKと呼ばれる中間者攻撃が発見され、 OpenSSLスタック、デフォルトのAndroid Webブラウザー、および一部のSafariブラウザーに影響を及ぼしました。[227]攻撃には、サーバーをだまして、暗号的に弱い512ビットの暗号化キーを使用してTLS接続をネゴシエートさせることが含まれていました。

Logjamは、2015年5月に発見されたセキュリティエクスプロイトであり、1990年代にさかのぼるレガシーの「エクスポートグレード」の512ビットDiffie-Hellmanグループを使用するオプションを悪用します。[228]影響を受けやすいサーバーを、暗号的に弱い512ビットのDiffie–Hellmanグループにダウングレードするように強制します。攻撃者は、 Diffie-Hellman鍵交換を使用して、クライアントとサーバーが決定する鍵を推測できます

クロスプロトコル攻撃:DROWN

DROWN攻撃は、最新のSSL / TLSプロトコルスイートをサポートするサーバーを攻撃するエクスプロイトであり、廃止された安全でないSSLv2プロトコルのサポートを利用して、他の方法では安全な最新のプロトコルを使用した接続への攻撃を利用します。[229] [230] DROWNは、特定の実装エラーではなく、使用されるプロトコルとサーバーの構成の脆弱性を悪用します。DROWNの詳細は、エクスプロイトのパッチとともに2016年3月に発表されました。当時、最も人気のある上位100万のWebサイトのうち81,000以上が、DROWN攻撃に対して脆弱なTLSで保護されたWebサイトの1つでした。[230]

BEAST攻撃

2011年9月23日、研究者のThaiDuongとJulianoRizzoはJavaアプレット使用、古くから知られている暗号ブロックチェーン(CBC )TLS 1.0の脆弱性:[232] [233] 2つの連続する暗号文ブロックC0を監視する攻撃者、C1は、次の平文ブロックP2 = xを選択することにより、平文ブロックP1がxに等しいかどうかをテストできます。C0C1; CBC演算に従って、C2 = E(C1P2)= E(C1バツC0C1)= E(C0x)、x = P1の場合はC1に等しくなります。2002年にPhillipRogaway [234]によって最初に発見されたこの脆弱性について、実際のエクスプロイトはこれまで実証されていませんでした。攻撃の脆弱性は2006年にTLS 1.1で修正されましたが、TLS1.1はこの攻撃の前に広く採用されていませんでした。デモンストレーション。

ストリーム暗号としてのRC4は、BEAST攻撃の影響を受けません。したがって、RC4は、サーバー側でのBEAST攻撃を軽減する方法として広く使用されていました。しかし、2013年に、研究者はRC4にさらに多くの弱点を発見しました。その後、サーバー側でRC4を有効にすることは推奨されなくなりました。[235]

ChromeとFirefox自体はBEAST攻撃に対して脆弱ではありませんが、[84] [105]、MozillaはBEASTのような攻撃を軽減するためにNSSライブラリを更新しましたNSSは、SSLを実装するためにMozillaFirefoxGoogleChromeで使用されます。SSL仕様の実装が壊れている一部のWebサーバーは、結果として動作を停止する場合があります。[236]

マイクロソフトは2012年1月10日にセキュリティ情報MS12-006をリリースしました。これは、Windowsのセキュリティで保護されたチャネル(SChannel)コンポーネントがサーバー側から暗号化されたネットワークパケットを送信する方法を変更することにより、BEASTの脆弱性を修正しました。[237]古いバージョンのWindows( Windows 7Windows 8、およびWindows Server 2008 R2 )で実行されるInternet Explorer(バージョン11より前)のユーザーは、TLSの使用を1.1以降に制限できます。

Appleは、2013年10月22日にリリースされたOS X Mavericksで、 1 / n-1分割を実装し、デフォルトでオンにすることで、BEASTの脆弱性を修正しました。 [238]

CRIMEおよびBREACH攻撃

BEAST攻撃の作成者は、後のCRIME攻撃の作成者でもあります。これにより、TLSとともにデータ圧縮が使用されている場合、攻撃者はWebCookieのコンテンツを回復できます。[239] [240]シークレット認証Cookieのコンテンツを回復するために使用される場合、攻撃者は認証されたWebセッションで セッションハイジャックを実行できます。

CRIME攻撃は、TLSを含むがこれらに限定されない多数のプロトコル、およびSPDYHTTPなどのアプリケーション層プロトコルに対して効果的に機能する一般的な攻撃として提示されましたが、TLSおよびSPDYに対するエクスプロイトのみが実証され、大幅に軽減されました。ブラウザとサーバーで。CRIMEの作成者は、この脆弱性はSPDYとTLS圧縮を組み合わせたものよりもさらに広範囲に及ぶ可能性があると警告していますが、HTTP圧縮に対するCRIMEの悪用はまったく軽減されていません。2013年、HTTP圧縮に対するCRIME攻撃の新しいインスタンス、BREACHと呼ばれる、発表されました。CRIME攻撃に基づいて、BREACH攻撃は、攻撃者が被害者をだまして訪問させれば、TLS暗号化Webトラフィックからログイントークン、電子メールアドレス、またはその他の機密情報を30秒以内に抽出できます(抽出されるバイト数によって異なります)。悪意のあるWebリンク、またはユーザーがアクセスしている有効なページにコンテンツを挿入できる(例:攻撃者の制御下にあるワイヤレスネットワーク)。[241] TLSおよびSSLのすべてのバージョンは、使用されている暗号化アルゴリズムまたは暗号に関係なく、BREACHのリスクにさらされています。[242]TLS圧縮またはSPDYヘッダー圧縮をオフにすることで正常に防御できるCRIMEの以前のインスタンスとは異なり、BREACHは、実際にはオフにできないHTTP圧縮を利用します。これは、事実上すべてのWebサーバーがユーザーのデータ転送速度を向上させるためにHTTP圧縮に依存しているためです。[241]これはTLSの既知の制限です。これは、保護することを目的としたアプリケーション層データに対する 選択平文攻撃の影響を受けやすいためです。

パディングに対するタイミング攻撃

以前のTLSバージョンは、2002年に発見されたパディングオラクル攻撃に対して脆弱でした。ラッキーサーティーン攻撃と呼ばれる新しい亜種が2013年に公開されました。

一部の専門家[67]も、 Triple-DESCBCを回避することを推奨しています。WindowsXPのInternetExplorerのようなWindowsXPのSSL / TLSライブラリを使用するプログラムをサポートするために開発された最後にサポートされた暗号はRC4とTriple-DESであり、RC4は現在非推奨であるため(RC4攻撃の説明を参照)、これにより困難になります。 XPでこのライブラリを使用するすべてのプログラムでSSLのすべてのバージョンをサポートします。

修正は、 RFC 7366としてリリースされたTLS仕様のEncrypt-then-MAC拡張としてリリースされました。[243]ラッキーサーティーン攻撃は、AES_GCM暗号のみを使用することでTLS1.2で軽減できます。AES_CBCは引き続き脆弱です。[要出典] 

POODLE攻撃

2014年10月14日、Googleの研究者は、SSL 3.0の設計に脆弱性を公開しました。これにより、SSL 3.0でのCBCモードの動作がパディング攻撃に対して脆弱になりますCVE - 2014-3566)。彼らはこの攻撃をPOODLEダウングレードされたレガシー暗号化でのOracleのパディング)と名付けました。平均して、攻撃者は1バイトの暗号化されたメッセージを明らかにするために256のSSL3.0要求を行うだけで済みます。[74]

この脆弱性はSSL3.0にのみ存在し、ほとんどのクライアントとサーバーはTLS 1.0以降をサポートしていますが、ユーザーまたは管理者がSSL 3.0を無効にするオプションを提供しない限り、新しいバージョンのTLSとのハンドシェイクが失敗した場合、すべての主要なブラウザーは自発的にSSL3.0にダウングレードします。そして、ユーザーまたは管理者はそうします[引用が必要です]したがって、man-in-the-middleは、最初にバージョンロールバック攻撃を実行してから、この脆弱性を悪用する可能性があります。[74]

2014年12月8日に、パディングバイト要件を適切に適用しないTLS実装に影響を与えるPOODLEのバリアントが発表されました。[244]

RC4攻撃

セキュリティを破ったRC4への攻撃が存在するにもかかわらず、 RC4に基づくSSLおよびTLSの暗号スイートは、SSLおよびTLSでの使用方法に基づいて、2013年以前は依然として安全であると見なされていました。2011年には、 BEAST攻撃の回避策としてRC4スイートが実際に推奨されました。[245] 2013年3月に開示された新しい形式の攻撃は、TLSでRC4を破壊する可能性を最終的に示しており、BEASTにとって適切な回避策ではなかったことを示唆しています。[73]攻撃シナリオは、AlFardan、Bernstein、Paterson、Poettering、およびSchuldtによって提案され、RC4キーテーブル[246]で新たに発見された統計的バイアスを使用して、多数のTLS暗号化で平文の一部を回復しました。[247] [248] RC4を破るために13×220の暗号化を必要とするTLSおよびSSLでのRC4への攻撃は、 2013年7月8日に発表され、2013年8月のUSENIXセキュリティシンポジウムでの付随するプレゼンテーションで「実行可能」と説明されました。 [249] [250] 2015年7月、攻撃のその後の改善により、RC4で暗号化されたTLSのセキュリティを無効にすることがますます実用的になりました。[251]

最近の多くのブラウザはBEAST攻撃を打ち負かすように設計されているため(Mac OS X 10.7以前、iOS 6以前、およびWindowsのSafariを除く。§Webブラウザを参照)、RC4はTLS1.0には適していません。過去にBEAST攻撃の影響を受けたCBC暗号は、保護のためのより一般的な選択肢になりました。[67] MozillaとMicrosoftは、可能であればRC4を無効にすることを推奨しています。[252] [253] RFC 7465は、TLSのすべてのバージョンでRC4暗号スイートを使用することを禁止しています。  

2015年9月1日、Microsoft、Google、Mozillaは、2016年初頭にブラウザ( Microsoft EdgeWindows 7 / 8.1 / 10のInternetExplorer 11 、 FirefoxChrome )でRC4暗号スイートがデフォルトで無効になることを発表しました。 [254 ] [255] [256]

切り捨て攻撃

TLS(ログアウト)切り捨て攻撃は、被害者のアカウントのログアウト要求をブロックし、ユーザーが無意識のうちにWebサービスにログインしたままになるようにします。サインアウトの要求が送信されると、攻撃者は暗号化されていないTCP FINメッセージ(送信者からのデータがなくなる)を挿入して接続を閉じます。したがって、サーバーはログアウト要求を受信せず、異常終了を認識しません。[257]

2013年7月に公開された[258] [259]この攻撃により、 GmailHotmailなどのWebサービスは、ユーザーのブラウザがサービスの承認を維持していることを確認しながら、ユーザーに正常にサインアウトしたことを通知するページを表示します。ユーザーのログインアカウントにアクセスして制御を引き継ぐためにブラウザにアクセスする攻撃者。攻撃は、被害者のコンピューターにマルウェアをインストールすることに依存していません。攻撃者は、被害者とWebサーバーの間に身を置くだけで済みます(たとえば、不正なワイヤレスホットスポットを設定することによって)。[257]この脆弱性には、被害者のコンピュータへのアクセスも必要です。もう1つの可能性は、FTPを使用する場合、データ接続のデータストリームに誤ったFINが含まれる可能性があり、close_notifyアラートを交換するためのプロトコルルールがファイルに準拠していない場合、切り捨てられる可能性があります。

不浄なPAC攻撃

2016年半ばに発見されたこの攻撃は、Webプロキシ自動検出プロトコル(WPAD)の弱点を悪用して、WebユーザーがTLS対応のWebリンクを介して到達しようとしているURLを公開します。[260] URLの開示は、アクセスされたWebサイトのためだけでなく、URLがユーザーの認証に使用されることがあるため、ユーザーのプライバシーを侵害する可能性があります。GoogleやDropboxが提供するサービスなどのドキュメント共有サービスも、URLに含まれているセキュリティトークンをユーザーに送信することで機能します。このようなURLを取得した攻撃者は、被害者のアカウントまたはデータへのフルアクセスを取得できる可能性があります。

このエクスプロイトは、ほとんどすべてのブラウザとオペレーティングシステムに対して機能します。

Sweet32攻撃

Sweet32攻撃は、誕生日攻撃中間者攻撃または悪意のあるJavaScriptのWebページへの挿入のいずれかを悪用することにより、TLSで使用されるCBCモードで使用されるすべての64ビットブロック暗号を破壊します。中間者攻撃またはJavaScriptインジェクションの目的は、攻撃者が誕生日攻撃を仕掛けるのに十分なトラフィックをキャプチャできるようにすることです。[261]

実装エラー:ハートブリードバグ、BERserk攻撃、Cloudflareバグ

Heartbleedバグは、人気のあるOpenSSL暗号化ソフトウェアライブラリでのSSL / TLSの実装に固有の深刻な脆弱性であり、バージョン1.0.1から1.0.1fに影響を及ぼします。2014年4月に報告されたこの弱点により、攻撃者は通常は保護されるべきサーバーから秘密鍵を盗むことができます。[262] Heartbleedバグにより、インターネット上の誰もが、脆弱なバージョンのOpenSSLソフトウェアによって保護されているシステムのメモリを読み取ることができます。これにより、公開証明書に関連付けられている秘密秘密鍵が危険にさらされますサービスプロバイダーを識別し、トラフィック、ユーザーの名前とパスワード、および実際のコンテンツを暗号化するために使用されます。これにより、攻撃者は通信を盗聴し、サービスとユーザーから直接データを盗み、サービスとユーザーになりすますことができます。[263]この脆弱性は、SSLまたはTLSプロトコル仕様の欠陥ではなく、OpenSSLソフトウェア のバッファオーバーリードバグが原因で発生します。

2014年9月、Daniel BleichenbacherのPKCS#1 v1.5 RSA Signature Forgeryの脆弱性[264]の亜種が、Intel Security Advanced ThreatResearchによって発表されました。BERserkと呼ばれるこの攻撃は、一部のSSL実装での公開鍵署名の不完全なASN.1長さのデコードの結果であり、公開鍵署名を偽造することで中間者攻撃を可能にします。[265]

2015年2月、メディアが一部のLenovoノートブックにSuperfishアドウェアの隠しプレインストールを報告した後、 [266]研究者は、影響を受けるLenovoマシンの信頼できるルート証明書が安全でないことを発見しました。これは、会社名を使用してキーに簡単にアクセスできるためです。パスフレーズとしてのKomodia。[267] Komodiaライブラリは、ペアレンタルコントロールと監視のためにクライアント側のTLS / SSLトラフィックを傍受するように設計されましたが、Superfishを含む多くのアドウェアプログラムでも使用され、コンピュータユーザーに知られていない状態で密かにインストールされることがよくありました。次に、これらの潜在的に望ましくないプログラムが破損したルート証明書をインストールし、攻撃者がWebトラフィックを完全に制御し、偽のWebサイトが本物であることを確認できるようにしました。

2016年5月、 Visa Inc.に属するデンマークのHTTPSで保護された数十のWebサイトが攻撃に対して脆弱であり、ハッカーが悪意のあるコードや偽造されたコンテンツを訪問者のブラウザに挿入できることが報告されました。[268]影響を受けるサーバーで使用されるTLS実装が、1回だけ使用されることを意図した乱数(ナンス)を誤って再利用し、各TLSハンドシェイクが一意であることを確認したため、攻撃は機能しました。[268]

2017年2月、HTMLの解析に使用されるコード内の単一の入力ミスによって引き起こされた実装エラーにより、Cloudflareサーバーでバッファオーバーフローエラーが発生しました。2014年に発見されたHeartbleedバグと同様に、 Cloudbleedとして広く知られているこのオーバーフローエラーにより、許可されていないサードパーティがサーバーで実行されているプログラムのメモリ内のデータ(TLSで保護されているはずのデータ)を読み取ることができました。[269]

攻撃に対して脆弱なWebサイトの調査

2021年7月の時点で、Trustworthy Internet Movementは、TLS攻撃に対して脆弱なWebサイトの割合を推定しました。[72]

最も人気のあるWebサイトのTLSの脆弱性の調査
攻撃 安全
安全でない 依存する 安全 他の
再交渉攻撃 0.1%
は安全でない再交渉をサポートします
<0.1%
は両方をサポート
99.2%
が安全な再交渉をサポート
0.7%
サポートなし
RC4攻撃 0.4%
が最新のブラウザで使用されるRC4スイートをサポート
6.5%
が一部のRC4スイートをサポート
93.1%
サポートなし
該当なし
TLS圧縮(CRIME攻撃) > 0.0%
脆弱
該当なし 該当なし 該当なし
ハートブリード > 0.0%
脆弱
該当なし 該当なし 該当なし
ChangeCipherSpecインジェクション攻撃 0.1%
脆弱で悪用可能
0.2%
脆弱、悪用不可
98.5%
は脆弱ではありません
1.2%
不明
TLSに対するPOODLE攻撃
(SSL 3.0に対する元のPOODLEは含まれていません)
0.1%
脆弱で悪用可能
0.1%
脆弱、悪用不可
99.8%
は脆弱ではありません
0.2%
不明
プロトコルのダウングレード 6.6%
ダウングレード防御はサポートされていません
該当なし 72.3%
ダウングレード防御がサポートされてい ます
21.0%
不明

Forward Secrecy

Forward Secrecyは暗号化システムの特性であり、秘密鍵の1つが将来侵害された場合でも、公開鍵と秘密鍵のセットから派生したセッション鍵が侵害されないようにします。[270]転送秘密がないと、サーバーの秘密鍵が危険にさらされると、そのサーバー証明書を使用する将来のTLS暗号化セッションがすべて危険にさらされるだけでなく、それを使用した過去のセッションもすべて危険にさらされます(もちろん、これらの過去のセッションが送信時に傍受されて保存されます)。[271] TLSの実装は、セッションキーを確立するために一時的なDiffie-Hellmanキー交換の使用を要求することにより、前方秘訣を提供できますおよびOpenSSLを使用するその他のGoogleHTTPSサービス[272]ただし、TLSをサポートする多くのクライアントおよびサーバー(ブラウザーおよびWebサーバーを含む)は、そのような制限を実装するように構成されていません。[273] [274]実際には、WebサービスがDiffie-Hellman鍵交換を使用して転送秘密を実装しない限り、そのサービスとの間の暗号化されたWebトラフィックはすべて、サーバーのマスター(プライベート)を取得した場合にサードパーティによって復号化できます。 ) 鍵; たとえば、裁判所の命令によって。[275]

Diffie-Hellman鍵交換が実装されている場合でも、サーバー側のセッション管理メカニズムはForwardSecrecyに影響を与える可能性があります。TLSセッションチケット(TLS拡張)を使用すると、転送秘密暗号スイートを含む他のネゴシエートされたTLSパラメータに関係なく、セッションがAES128-CBC-SHA256によって保護され、長寿命のTLSセッションチケットキーが実装の試みを無効にします。 ForwardSecretcy。[276] [277] [278]2014年のスタンフォード大学の調査でも、調査した473,802のTLSサーバーのうち、転送秘密をサポートするために一時的なDiffie-Hellman(DHE)キー交換を展開しているサーバーの82.9%が弱いDiffie-Hellmanパラメーターを使用していることがわかりました。これらの弱いパラメータの選択は、サーバーが提供しようとした転送秘密の有効性を損なう可能性があります。[279]

2011年後半以降、Googleは、 Gmailサービスのユーザーに、 Googleドキュメントや暗号化検索などのサービスとともにTLSをデフォルトで転送する秘密を提供してきました。[280] 2013年11月以来、TwitterはそのサービスのユーザーにTLSを使用したForwardSecrecyを提供してきました。[281] 2019年8月の時点で、TLS対応のWebサイトの約80%は、ほとんどのWebブラウザーに転送秘密を提供する暗号スイートを使用するように構成されています。[72]

TLSインターセプト

TLSインターセプト(または特にそのプロトコルに適用される場合はHTTPSインターセプト)は、暗号化されたデータストリームをインターセプトして、復号化し、読み取り、場合によっては操作してから、再暗号化してデータを再度送信する方法です。これは「透過プロキシ」を介して行われます。インターセプトソフトウェアは、着信TLS接続を終了し、HTTPプレーンテキストを検査してから、宛先への新しいTLS接続を作成します。[282]

TLS / HTTPSインターセプトは、コンピューターウイルスやその他のマルウェアなどの悪意のあるコンテンツのネットワークへの侵入をスキャンして保護できるようにするために、ネットワークオペレーターによる情報セキュリティ対策として使用されます。[282]このようなコンテンツは、暗号化によって保護されている限り検出できませんでした。これは、HTTPSやその他の安全なプロトコルを日常的に使用している結果としてますます多くなっています。

TLS / HTTPSインターセプトの重大な欠点は、それ自体が新しいセキュリティリスクをもたらすことです。注目すべき制限の1つは、ネットワークトラフィックが暗号化されずに利用できるポイントを提供するため、攻撃者が特に安全なコンテンツにアクセスするためにこのポイントを攻撃するインセンティブを与えることです。傍受により、ネットワークオペレーター、またはその傍受システムにアクセスする人は、ネットワークユーザーに対してman-in-the-middle攻撃を実行することもできます。2017年の調査によると、「HTTPSインターセプトは驚くほど普及しており、クラスとしてのインターセプト製品は接続のセキュリティに劇的な悪影響を及ぼします」。[282]

プロトコルの詳細

TLSプロトコルは、交換されるデータを特定の形式でカプセル化するレコードを交換します(以下を参照)。各レコードは、接続の状態に応じて、圧縮、パディング、メッセージ認証コード(MAC)の追加、または暗号化を行うことができます。各レコードにはコンテンツタイプがありますカプセル化されるデータのタイプを指定するフィールド、長さフィールド、およびTLSバージョンフィールド。カプセル化されたデータは、TLS自体の制御メッセージまたは手続き型メッセージ、あるいはTLSによって転送される必要のあるアプリケーションデータの場合があります。TLSによってアプリケーションデータを交換するために必要な仕様(暗号スイート、キーなど)は、データを要求するクライアントと要求に応答するサーバーの間の「TLSハンドシェイク」で合意されます。したがって、このプロトコルは、TLSで転送されるペイロードの構造と、転送を確立および監視する手順の両方を定義します。

TLSハンドシェイク

タイミング情報を含む完全なTLS1.2ハンドシェイクの簡略図。

接続が開始されると、レコードは「制御」プロトコル(ハンドシェイクメッセージングプロトコル(コンテンツタイプ22))をカプセル化します。このプロトコルは、TLSによる実際のアプリケーションデータの交換のために双方が必要とするすべての情報を交換するために使用されます。メッセージの形式と交換の順序を定義します。これらは、クライアントとサーバーの要求に応じて異なる場合があります。つまり、接続をセットアップするためのいくつかの可能な手順があります。この最初の交換により、TLS接続が成功するか(両方の当事者がTLSを使用してアプリケーションデータを転送する準備ができています)、またはアラートメッセージ(以下に指定)が発生します。

基本的なTLSハンドシェイク

典型的な接続例を次に示します。これは、サーバー(クライアントではない)が証明書によって認証される ハンドシェイクを示しています。

  1. 交渉段階:
    • クライアントは、サポートする最高のTLSプロトコルバージョン、乱数、推奨される暗号スイートのリスト、および推奨される圧縮方法を指定するClientHelloメッセージを送信します。クライアントが再開されたハンドシェイクを実行しようとすると、セッションIDが送信される場合があります。クライアントがApplication-LayerProtocol Negotiationを使用できる場合は、 HTTP / 2などのサポートされているアプリケーションプロトコルのリストが含まれている場合があります
    • サーバーは、選択されたプロトコルバージョン、乱数、暗号スイート、およびクライアントが提供する選択肢からの圧縮方法を含むServerHelloメッセージで応答します。ハンドシェイクの再開を確認または許可するために、サーバーはセッションIDを送信する場合があります。選択したプロトコルバージョンは、クライアントとサーバーの両方がサポートする最高のものである必要があります。たとえば、クライアントがTLSバージョン1.1をサポートし、サーバーがバージョン1.2をサポートしている場合は、バージョン1.1を選択する必要があります。バージョン1.2は選択しないでください。
    • サーバーは証明書メッセージを送信します(選択した暗号スイートによっては、サーバーによって省略される場合があります)。[283]
    • サーバーはServerKeyExchangeメッセージを送信します(選択した暗号スイートによっては、サーバーによって省略される場合があります)。このメッセージは、すべてのDHEECDHE、およびDH_anon暗号スイートに対して送信されます。[8]
    • サーバーはServerHelloDoneメッセージを送信し、ハンドシェイクネゴシエーションが完了したことを示します。
    • クライアントはClientKeyExchangeメッセージで応答します。このメッセージには、PreMasterSecret、公開鍵、または何も含まれていない可能性があります。(繰り返しますが、これは選択した暗号によって異なります。)このPreMasterSecretは、サーバー証明書の公開鍵を使用して暗号化されます。
    • 次に、クライアントとサーバーは、乱数とPreMasterSecretを使用して、「マスターシークレット」と呼ばれる共通のシークレットを計算します。この接続の他のすべてのキーデータ(IV対称暗号化キー、MACキー[284]などのセッションキー)は、このマスターシークレット(およびクライアントとサーバーで生成されたランダム値)から取得され、慎重に設計されたものを通過します。疑似ランダム関数。
  2. クライアントはChangeCipherSpecレコードを送信し、基本的にサーバーに「これから話すことはすべて認証されます(暗号化パラメーターがサーバー証明書に存在する場合は暗号化されます)」と伝えます。ChangeCipherSpecは、それ自体がコンテンツタイプが20のレコードレベルのプロトコルです。
    • クライアントは、以前のハンドシェイクメッセージに対するハッシュとMACを含む、認証および暗号化された完了メッセージを送信します。
    • サーバーは、クライアントの終了メッセージを復号化し、ハッシュとMACを検証しようとします。復号化または検証が失敗した場合、ハンドシェイクは失敗したと見なされ、接続が切断されます。
  3. 最後に、サーバーはChangeCipherSpecを送信し、クライアントに「これから話すことはすべて認証されます(暗号化がネゴシエートされている場合は暗号化されます)」と伝えます。
    • サーバーは、認証および暗号化された完了メッセージを送信します。
    • クライアントは、サーバーが前の手順で実行したのと同じ復号化および検証手順を実行します。
  4. アプリケーションフェーズ:この時点で、「ハンドシェイク」が完了し、アプリケーションプロトコルが有効になります。コンテンツタイプは23です。クライアントとサーバー間で交換されるアプリケーションメッセージも、 Finishedメッセージとまったく同じように認証され、オプションで暗号化されます。それ以外の場合、コンテンツタイプは25を返し、クライアントは認証されません。

クライアント認証されたTLSハンドシェイク

次の完全な例は、両方のピア間で交換された証明書を使用してTLSを介して (上記の例のサーバーに加えて、相互認証を参照して)クライアントが認証されていることを示しています。

  1. 交渉フェーズ:
    • クライアントは、サポートする最高のTLSプロトコルバージョン、乱数、推奨される暗号スイートのリスト、および圧縮方法を指定するClientHelloメッセージを送信します。
    • サーバーは、選択されたプロトコルバージョン、乱数、暗号スイート、およびクライアントが提供する選択肢からの圧縮方法を含むServerHelloメッセージで応答します。サーバーは、メッセージの一部としてセッションIDを送信して、再開されたハンドシェイクを実行することもできます。
    • サーバーは証明書メッセージを送信します(選択した暗号スイートによっては、サーバーによって省略される場合があります)。[283]
    • サーバーはServerKeyExchangeメッセージを送信します(選択した暗号スイートによっては、サーバーによって省略される場合があります)。このメッセージは、すべてのDHE、ECDHE、およびDH_anon暗号スイートに対して送信されます。[8]
    • サーバーはCertificateRequestメッセージを送信して、クライアントに証明書を要求します。
    • サーバーはServerHelloDoneメッセージを送信し、ハンドシェイクネゴシエーションが完了したことを示します。
    • クライアントは、クライアントの証明書を含む証明書メッセージで応答します。
    • クライアントはClientKeyExchangeメッセージを送信します。このメッセージには、PreMasterSecret、公開鍵、または何も含まれていない可能性があります。(繰り返しますが、これは選択した暗号によって異なります。)このPreMasterSecretは、サーバー証明書の公開鍵を使用して暗号化されます。
    • クライアントはCertificateVerifyメッセージを送信します。これは、クライアントの証明書の秘密鍵を使用して、以前のハンドシェイクメッセージに対する署名です。この署名は、クライアントの証明書の公開鍵を使用して検証できます。これにより、サーバーは、クライアントが証明書の秘密鍵にアクセスできるため、証明書を所有していることを知ることができます。
    • 次に、クライアントとサーバーは、乱数とPreMasterSecretを使用して、「マスターシークレット」と呼ばれる共通のシークレットを計算します。この接続の他のすべてのキーデータ(「セッションキー」)は、このマスターシークレット(およびクライアントとサーバーで生成されたランダム値)から取得され、慎重に設計された疑似ランダム関数を介して渡されます。
  2. クライアントはChangeCipherSpecレコードを送信し、基本的にサーバーに「これから話すことはすべて認証されます(暗号化がネゴシエートされた場合は暗号化されます)」と伝えます。ChangeCipherSpecはそれ自体がレコードレベルのプロトコルであり、タイプは22ではなく20です。 。
    • 最後に、クライアントは、前のハンドシェイクメッセージに対するハッシュとMACを含む暗号化されたFinishedメッセージを送信します。
    • サーバーは、クライアントの終了メッセージを復号化し、ハッシュとMACを検証しようとします。復号化または検証が失敗した場合、ハンドシェイクは失敗したと見なされ、接続が切断されます。
  3. 最後に、サーバーはChangeCipherSpecを送信し、クライアントに「これから話すことはすべて認証されます(暗号化がネゴシエートされた場合は暗号化されます)」と伝えます。
    • サーバーは、独自の暗号化された完了メッセージを送信します。
    • クライアントは、サーバーが前の手順で実行したのと同じ復号化および検証手順を実行します。
  4. アプリケーションフェーズ:この時点で、「ハンドシェイク」が完了し、アプリケーションプロトコルが有効になります。コンテンツタイプは23です。クライアントとサーバー間で交換されるアプリケーションメッセージも、 Finishedメッセージとまったく同じように暗号化されます。

TLSハンドシェイクを再開しました

公開鍵操作(RSAなど)は、計算能力の点で比較的高価です。TLSは、ハンドシェイクメカニズムに安全なショートカットを提供して、これらの操作(再開されたセッション)を回避します。再開されたセッションは、セッションIDまたはセッションチケットを使用して実装されます。

パフォーマンス上の利点とは別に、再開されたセッションはシングルサインオンにも使用できます。これは、元のセッションと再開されたセッションの両方が同じクライアントから発信されることを保証するためです。これは、 FTP over TLS / SSLプロトコルにとって特に重要です。そうしないと、攻撃者がセカンダリデータ接続のコンテンツを傍受する可能性のあるman-in-the-middle攻撃に苦しむことになります。[285]

TLS1.3ハンドシェイク

TLS 1.3ハンドシェイクは、以前のバージョンのTLS / SSLで必要だった2回のラウンドトリップと比較して、1回のラウンドトリップに凝縮されました。

最初に、クライアントはclientHelloメッセージをサーバーに送信します。このメッセージには、サポートされている暗号のリストがクライアントの優先順位に従って含まれ、必要に応じて共有する秘密鍵を送信できるように、使用される鍵アルゴリズムを推測します。使用される主要なアルゴリズムを推測することにより、サーバーはラウンドトリップを排除します。clientHelloを受信した後、サーバーはserverHelloをそのキー、証明書、選択された暗号スイート、および完成したメッセージとともに送信します。

クライアントがサーバーの終了メッセージを受信すると、使用する暗号スイートがサーバーと調整されます。[286]

セッションID

通常のフルハンドシェイクでは、サーバーはServerHelloメッセージの一部としてセッションIDを送信します。クライアントは、このセッションIDをサーバーのIPアドレスとTCPポートに関連付けて、クライアントがそのサーバーに再度接続するときに、セッションIDを使用してハンドシェイクをショートカットできるようにします。サーバーでは、セッションIDは、以前にネゴシエートされた暗号化パラメーター、特に「マスターシークレット」にマップされます。両側に同じ「マスターシークレット」が必要です。そうでない場合、再開されたハンドシェイクは失敗します(これにより、盗聴者がセッションIDを使用できなくなります)。ClientHelloServerHelloのランダムデータメッセージは、生成された接続キーが以前の接続とは異なることを事実上保証します。RFCでは、このタイプのハンドシェイクは省略ハンドシェイクと呼ばれます。また、リスタートハンドシェイクとして文献に記載されています。

  1. 交渉段階:
    • クライアントは、サポートする最高のTLSプロトコルバージョン、乱数、推奨される暗号スイートのリスト、および圧縮方法を指定するClientHelloメッセージを送信します。メッセージには、以前のTLS接続からのセッションIDが含まれています。
    • サーバーは、選択されたプロトコルバージョン、乱数、暗号スイート、およびクライアントが提供する選択肢からの圧縮方法を含むServerHelloメッセージで応答します。サーバーがクライアントから送信されたセッションIDを認識すると、サーバーは同じセッションIDで応答します。クライアントはこれを使用して、再開されたハンドシェイクが実行されていることを認識します。サーバーがクライアントから送信されたセッションIDを認識しない場合、サーバーはそのセッションIDに異なる値を送信します。これは、再開されたハンドシェイクが実行されないことをクライアントに通知します。この時点で、クライアントとサーバーの両方に、この接続に使用されるキーデータを生成するための「マスターシークレット」とランダムデータがあります。
  2. サーバーはChangeCipherSpecレコードを送信し、基本的にクライアントに「これから話すことはすべて暗号化されます」と伝えます。ChangeCipherSpecはそれ自体がレコードレベルのプロトコルであり、タイプは22ではなく20です。
    • 最後に、サーバーは、前のハンドシェイクメッセージに対するハッシュとMACを含む暗号化されたFinishedメッセージを送信します。
    • クライアントは、サーバーの終了メッセージを復号化し、ハッシュとMACを検証しようとします。復号化または検証が失敗した場合、ハンドシェイクは失敗したと見なされ、接続が切断されます。
  3. 最後に、クライアントはChangeCipherSpecを送信し、サーバーに「これから話すことはすべて暗号化されます」と伝えます。
    • クライアントは、独自の暗号化された完了メッセージを送信します。