TLS実装の比較
このドキュメントでは、ネットワーク通信を保護するための
Transport Layer Security (TLS) プロトコルの実装について、主要な
ライブラリを比較します。比較対象とするのは、各実装の安定バージョンです。この比較は、TLSプロトコルに直接関連する機能に限定されます。
プロトコルのサポート
TLSプロトコルには複数のバージョンが存在します。SSL 2.0は重大な脆弱性があるため廃止され、SSL 3.0(1996年)とTLS 1.0(1999年)は、CBCパディングの脆弱性を抱えていました。TLS 1.1(2006)では、CBC
ブロック暗号にランダムな初期化ベクトル(IV)を導入することでこの問題の一部を解決しましたが、mac-pad-encryptの使用が追加され、新たな問題も発生しました。SSL 3.0とTLS 1.0の回避策は、2011年後半に多くの実装で採用されました。TLS 1.0、1.1、1.2は、セキュリティ強度において同等であり、NIST SP800-57によると、少なくとも2030年まで128ビットセキュリティに対応します。2014年にはSSL 3.0のPOODLE脆弱性が発見され、安全でないTLSバージョンのフォールバックネゴシエーションが問題となりました。
TLS 1.2(2008)は、デジタル署名に使用されるハッシュを識別する機能を導入しました。これにより、より強力な
ハッシュ関数(rsa、sha256/sha384/sha512)を使用できるようになりましたが、デフォルトのデジタル署名が弱くなる可能性も生じました。
データグラムトランスポートレイヤセキュリティ(DTLS)1.0は、パケット損失や順序変更が許容されるパケットベースのトランスポート層向けにTLS 1.1を修正したものです。TLS 1.2に基づいたDTLS 1.2は2012年1月に公開されました。
SSL 2.0とSSL 3.0には既知の脆弱性があり、予測可能なIVを除いて、現在知られている脆弱性はTLS 1.0/1.1/1.2のすべてのバージョンに影響します。
NSA Suite B 暗号
NSA Suite B暗号化(RFC 6460)に必要なコンポーネントは以下の通りです。
AES (Advanced Encryption Standard): 鍵サイズは128ビットおよび256ビットを使用します。トラフィック幅に応じて、カウンタモード(CTR)または
Galois/Counter Mode|Galois_Counter Mode(GCM)を使用します。
楕円曲線DSA:
電子署名に利用されます。
楕円曲線ディフィー・ヘルマン鍵共有: 鍵合意に利用されます。
SHA-2 (SHA-256 および SHA-384): 暗号学的
ハッシュ関数として利用されます。
CNSSP-15では、機密レベルの情報を保護するには、256ビットの楕円曲線、
SHA-256、および128ビット鍵のAESを、最高機密レベルの情報を保護するには、384ビットの楕円曲線、SHA-384、および256ビット鍵のAESを使用することが推奨されています。
鍵交換アルゴリズム(証明書)
このセクションでは、各実装で使用可能な証明書検証機能を示します。
鍵交換アルゴリズム(代替鍵交換)
各実装でサポートされている代替鍵交換アルゴリズムを比較します。
証明書の検証方法
各実装がどのように証明書を検証するかを比較します。
暗号化アルゴリズム
各実装がサポートする暗号化アルゴリズムをリストします。
廃止されたアルゴリズム
各実装でサポートが終了したアルゴリズムをリストします。
サポートされている楕円曲線
各実装でサポートされている楕円曲線をリストします。
データの完全性
各実装がデータの完全性をどのように確保しているかを比較します。
圧縮
TLS圧縮はCRIME攻撃に対して脆弱であるため、多くの実装では使用されません。ただし、HTTP圧縮は無関係であり、BREACH攻撃によって悪用される可能性があります。
拡張機能
各実装がサポートする拡張機能をリストします。特に、安全な再ネゴシエーション拡張は、
HTTPSクライアントセキュリティにとって重要です。この拡張を実装していないTLSクライアントは、再ネゴシエーション攻撃に対して脆弱です。
アシスト暗号
各実装が、暗号化を最適化するためのCPU命令セットや、ハードウェア暗号化、データ分離のためのシステム固有のデバイスを利用しているかを示します。
システム固有のバックエンド
利用可能なオペレーティングシステム固有のバックエンドや、他の実装によって提供されるバックエンドを利用する実装の機能を示します。
暗号モジュール/トークンのサポート
各実装が、暗号モジュールやトークンをサポートしているかどうかを示します。
コードの依存関係
各実装のコード依存関係をリストします。
開発環境
各実装の開発環境に関する情報を記述します。
移植性に関する懸念
各実装の移植性に関する懸念点を記述します。
関連
SCTP: DTLSをサポート
DCCP: DTLSをサポート
* SRTP: DTLSをサポート(DTLS-SRTP)、SRTCPをサポート
参照
参考文献や参考資料をリストします。
脚注
補足説明や注釈を記述します。