TLSを理解する上でハンドシェイクと並んで重要なのが暗号スイートに関する知識だ。暗号スイートとは、TLSで使用する暗号アルゴリズムのセットである。TLSでは役割の異なる複数の暗号アルゴリズムを使用する。それぞれの役割の暗号アルゴリズムを単独で指定するのではなく、あらかじめ用意された暗号アルゴリズムのセット、すなわち暗号スイートを指定する。暗号スイートによって通信の安全性が変わってくるので、その選択は重要になる。
TLS 1.3では2種類に
ハンドシェイクと同様に、暗号スイートもTLS 1.3で大きく変わった。まず、暗号スイートの構成がシンプルになった。
TLS 1.2までは、「鍵交換」「署名」「暗号化」「ハッシュ」の4種類を指定する(図3-1)。
鍵交換はデータを暗号化するための鍵を、送信者と受信者の間で安全に共有するためのアルゴリズムである。署名は送信者または受信者が、確かに本人であること(真正性)を示すためのアルゴリズムだ。暗号化は文字通りデータを暗号化するためのアルゴリズムで、暗号化の手順だけでなく強度(鍵長)も指定する。ハッシュは通信が改ざんされていないこと(完全性)を確かめるためのアルゴリズムとなる。
例えば「TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384」と表記した場合、鍵交換にはECDHE▼、署名にはRSA▼、暗号化にはAES▼_256_GCM▼、ハッシュにはSHA▼-384を使うことを指す。
一方TLS 1.3では、暗号化とハッシュだけを指定するようになり、鍵交換と署名は省略された。例えば「TLS_AES_256_GCM_SHA384」と表記する。これは暗号化にAES_256_GCMを、ハッシュにSHA-384を使うことを指す。
鍵交換に使用する暗号アルゴリズムについては、TLS 1.3ではハンドシェイクの際にやりとりされるメッセージのClient HelloとServer Helloで指定するようになったため不要になった。具体的にはsupported_groupsという拡張領域を使う。
署名についても、Client HelloとServer Helloの拡張領域であるsignature_algorithmsで指定するため省略された。
後述するように、TLS 1.3では安全性に懸念のある暗号アルゴリズムは使えないようにした。古いバージョンとの互換性を重視したTLS 1.2までとは対照的だ。
TLS 1.2では危殆(きたい)化▼した暗号アルゴリズムも残していた。このため使用可能な暗号アルゴリズムが増え続け、その組み合わせである暗号スイートは100種類を超えた。互換性は保たれたものの、セキュリティー強度が低い暗号アルゴリズムを使う恐れがつきまとった。
一方TLS 1.3では使用できる暗号アルゴリズムを絞り込んだ。その結果、暗号スイートは5種類に整理された。互換性を諦めて、過去の技術負債を一掃したといえるだろう。