TLS/SSL では,ハンドシェイクプロトコルによってサーバとクライアントの双方が利用可能な暗号アルゴリズムを決定します.利用する暗号アルゴリズムは,鍵交換方法(RSA, DHなど),共通鍵暗号アルゴリズム(AES, RC4 など)と暗号動作モード (CBC,GCM など) ,およびハッシュ関数(MD5, SHA1 など)の組み合せで,暗号スイート (Cipher Suite) と呼ばれます.
TLS/SSL プロトコルにおいて,どの暗号スイートを使うかは通信の安全性に大きな影響を及ぼします.そのため,安全性が低い暗号スイートは使わないようにするなど,サーバおよびクライアントにおける適切な設定が必要です.
TLS における暗号スイートの検索がWebサイト TLS Ciphersuite Search で行えます.暗号強度の評価 (Weak, Secure, Recommended など) も示されています.
TLS プロトコルの暗号スイートで用いられる主なアルゴリズムは以下です.TLS のバージョンにより使われるアルゴリズムは異なります.
(*1) DH_anon は,認証しない匿名 DH 通信に用いられる.このモードは,中間者攻撃を受けるので,アプリケーション層が特別に匿名の鍵交換を許すような場合を除いて,用いられるべきではない(認証が必要のない状況下での暗号化や,他の認証手段もつより複雑なセキュリティプロトコルの一部として TLS を用いる場合など)
TLS_[鍵交換]_[認証]_WITH_[暗号化]_[ハッシュ]
の形式で表されます.例えば,鍵交換に ECDH,認証に ECDSA,暗号化に AES_128_CBC,ハッシュに SHA256 を利用する場合は,TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256
と表します.TLS に準拠したアプリケーションでは,最低でも暗号スイートTLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA
を実装する必要があります.TLS_RSA_WITH_AES_128_CBC_SHA256 TLS_RSA_PSK_WITH_AES_128_CBC_SHA256 TLS_PSK_WITH_AES_128_CBC_SHA256 TLS_DH_DSS_WITH_AES_128_CBC_SHA TLS_DHE_DSS_WITH_AES_128_GCM_SHA256 TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
TLS_[認証付暗号]_[ハッシュ]
鍵交換は key_share exntension,認証 (ディジタル署名) は signature_algorithms extension にてネゴシエーションされます.メッセージ認証の機能は認証付暗号に含まれるため,ハッシュは鍵導出関数 (KDF) 用に使われます.TLS_AES_128_GCM_SHA256 TLS_AES_256_GCM_SHA384 TLS_CHACHA20_POLY1305_SHA256 TLS_AES_128_CCM_SHA256 TLS_AES_128_CCM_8_SHA256
暗号スイートの選択に際しては,次の点を考慮する必要があります.
TLS 暗号設定ガイドライン (CRYPTREC版) については,こちらを参照.