全4493文字
PR

 TLSを理解する上でハンドシェイクと並んで重要なのが暗号スイートに関する知識だ。暗号スイートとは、TLSで使用する暗号アルゴリズムのセットである。TLSでは役割の異なる複数の暗号アルゴリズムを使用する。それぞれの役割の暗号アルゴリズムを単独で指定するのではなく、あらかじめ用意された暗号アルゴリズムのセット、すなわち暗号スイートを指定する。暗号スイートによって通信の安全性が変わってくるので、その選択は重要になる。

TLS 1.3では2種類に

 ハンドシェイクと同様に、暗号スイートもTLS 1.3で大きく変わった。まず、暗号スイートの構成がシンプルになった。

 TLS 1.2までは、「鍵交換」「署名」「暗号化」「ハッシュ」の4種類を指定する(図3-1)。

図3-1●TLS 1.3では暗号スイートの表記方法を変更
図3-1●TLS 1.3では暗号スイートの表記方法を変更
TLSの暗号化方式は、役割の異なるアルゴリズムを組み合わせた暗号スイートで表現する。TLS 1.2までは「鍵交換」「署名」「暗号化」「ハッシュ」の4種類を指定していたが、TLS 1.3では「暗号化」と「ハッシュ」だけになった。また、TLS 1.2の暗号スイートは100種類以上あったが、TLS 1.3ではわずか5種類に絞られた。
[画像のクリックで拡大表示]

 鍵交換はデータを暗号化するための鍵を、送信者と受信者の間で安全に共有するためのアルゴリズムである。署名は送信者または受信者が、確かに本人であること(真正性)を示すためのアルゴリズムだ。暗号化は文字通りデータを暗号化するためのアルゴリズムで、暗号化の手順だけでなく強度(鍵長)も指定する。ハッシュは通信が改ざんされていないこと(完全性)を確かめるためのアルゴリズムとなる。

 例えば「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種類に整理された。互換性を諦めて、過去の技術負債を一掃したといえるだろう。