走り出した TLS 1.3(4):セキュリティプロトコルの技術と経験を結集

さてここまでTLS1.3の特徴として、性能やスループットの面からのメリットを中心にお話するというセキュリティ屋の説明らしからぬ順序で進めてきた。そろそろ安全性の面からの話もまとめておこう。

実際のところTLS1.2までの経験で、TLSはセキュリティプロトコルとしてはかなり成熟してきていたといってもいいだろう。しかし、最大の課題は、それまで出てきた数々の問題に対応するためにつぎはぎ的な対応が重なってきてしまっていたことだろう。それまでのTLS拡張によるTLSレコードのつぎはぎだらけの拡張では早晩破綻をきたしてしまうことは目に見えていた。たくさんの暗号スイートの中には、すでに危殆化したものや、危殆化が見えているものも増えてきていた。ブロック暗号とMACによる真正性の保証も限界のように思われた。

そういう中で、TLS1.3では、まず暗号スイートの大胆な整理が行われた。最終的には共通鍵暗号の方式としては認証タグ付き暗号(いわゆるAEAD)のみを採用することになった。具体的には、現時点でみとめられているのはブロック暗号としてAES-GCMとAES-CCM、ストリーム暗号ではChaCha-Polyのみだ。TLS1.2でもっとも広く使われているAES-CBCは廃止された。

TLS1.3の安全性の議論で、それまでのバージョンでは配慮されていなかった完全前方秘匿性への配慮が新たに加わった。これは、それまでには考えられなかったような大規模で長期間にわたるネットワークトラフィックの盗聴、蓄積が行われるケースがあることがわかってきたためだ。そういう攻撃方法によれば、長い期間をかけた暗号解読や、本来十分管理されるべきプライベート鍵の流出などで過去の秘匿情報が解読されてしまうリスクがある。公開鍵方式といえども鍵交換において長期間にわたり同じ鍵を使用することは危険であることがわかってきて、そうしたリスクに対する秘匿性、「完全前方秘匿性(PFS)」の重要性が認識されはじめた。

具体的対策としては、鍵交換における静的RSAを廃止し、ディフィー・ヘルマン(DH) においても一時鍵(Ephemeral Key) のみを使用するDHEのみが認められることになった。逆に、DHEのみになったおかげでハンドシェイクは単純化され、シリーズ前回でも紹介したように、オーバーヘッドが削減されたというメリットも享受できるという副産物もある。

以下は、TLS1.2と1.3における暗号スイートの例だ。1.3の鍵交換ではDH系しか使用されないので、そのフィールドは廃止された。ECDH(楕円曲線暗号によるDH)での曲線種別はTLS拡張で示される。

TLS1.2の暗号スイートの例:TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256

TLS1.3の暗号スイートの例:TLS_AES_128_GCM_SHA256

また、鍵合意部分がDH系のみに整理されたことにともない、ハンドシェイク先頭の暗号スイートの合意部分を除いてその後のハンドシェイクはすべて暗号化でき、安全性が大幅に向上した。

図:TLS1.3ではハンドシェイクの大部分が暗号化

そのほかにも、TLS拡張の整理や、暗号スイートの意味の整理がされたことなど、ひとまずのTLSの完成形といえるものに仕上がったといえるだろう。

 連載「走り出したTLS 1.3」
 第一回
 第二回 0-RTTでいきなり暗号化メッセージ
 第三回 一律3割引き !?

さらに詳しい情報は info@wolfssl.jp までお問い合わせください。

wolfSSLホーム:www.wolfssl.jp (English:www.wolfssl.com)