8
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

暗号スイートとTLS拡張の関係を再整理

Last updated at Posted at 2021-09-29

#1. はじめに

TLS1.3では暗号スイートの表記が大幅に簡素化され、共通鍵暗号のアルゴリズムと鍵導出のためのハッシュアルゴリズムだけを指定するようになりました。指定が簡素化されたのは良いのですが、関連するTLS拡張との関係が少しわかりにくくなっているかもしれません。この記事では、TLS1.2以前と1.3の暗号スイート、それと関連するTLS拡張について再整理してみます。

バージョン 暗号スイートの構成
TLS1.2 鍵合意+署名+共通鍵+ハッシュ
例:TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
TLS1.3 共通鍵+ハッシュ
例:TLS_AES_128_GCM_SHA256

    表1 TLSの暗号スイート

#2. TLS1.3の整理項目

まずはTLS1.3で見直されたポイントについて復習です。

1)鍵合意アルゴリズムとしては静的RSAを廃止し、一時鍵ECDH、DHのみとなりました。

2)静的RSAが廃止されたため、証明書はピア認証のみに使用することになりました。これによって、鍵合意と認証は完全に分離、独立した扱いが可能となりました。

3)危殆化した共通鍵暗号アルゴリズムが大幅に整理されました。また、認証付き暗号(AEAD: Authenticated Encryption with Associated Data)アルゴリズムのみに整理されました。これに伴い、MACによる真正性検証もなくなりました。

3. 暗号スイートとTLS拡張の関係

これらの変更、整理の結果、TLS1.2の暗号スイートの4つのフィールドがTLS1.3でどのように整理されたのか、表にまとめてみます。

スイート
項目
TLS1.2 TLS1.3 関連するTLS拡張、補足
鍵合意 RSA
(EC)DH(E)
なし - SupportedGroups拡張
(TLS1.2ではElliptic_curves):
  ECDHで使用できる楕円曲線一覧
  DHの鍵長一覧
- Key_Share拡張:
  上位2候補までのDHパラメータ
署名 RSA
DSA
ECDSA
なし 署名アルゴリズム拡張:
  ECDSAの楕円曲線とハッシュ一覧
  RSA鍵長、パディング、ハッシュ一覧
DSAの廃止
共通鍵 多数 AES-GCM
AES-CCM(_8)
CHACHA20_POLY1305
危殆化アルゴリズムを廃止
AEADのみに
ハッシュ 多数 SHA256, SHA384 MACの廃止
鍵導出のハッシュのみ指定

            表2 TLS1.2/1.3の暗号スイートフィールドと対応するTLS拡張

鍵合意の(EC)DH系の情報は、SupportedGroups拡張にECDHに使用できる楕円曲線種別の一覧、DHの場合のサポートする鍵長の一覧を格納します。また、Key_Share拡張にサポートする(EC)DHのうち上位2候補までの楕円曲線種別または鍵長と対応するDHパラメータを格納します。サーバ側でこれにマッチしない場合は1度だけHelloRetryRequestで次の候補を要求することができます。表3にSupportedGroups拡張の例を示します。ECDHの場合は楕円曲線の種類、DHの場合は鍵長がIDによって定義されます。

アルゴリズム 表記 ID
ECDH secp224r1 0x0015
DH ffdhe2048 0x0100

表3 SupportedGroups拡張の例

署名アルゴリズムについては、署名アルゴリズム拡張にECDSAの楕円曲線とハッシュの組合わせ一覧、RSAの鍵長、パディング、ハッシュの一覧を格納します。DSAは廃止されました。表4に署名アルゴリズム拡張の例を示します。RSAの場合はパディングスキームとハッシュ、ECDSAの場合は楕円曲線の種類とハッシュがID値によって定義されます。

アルゴリズム 表記 ID
RSA rsa_pss_pss_sha256
rsa_pkcs1_sha512
0x0809
0x0601
ECDSA ecdsa_secp256r1_sha256 0x0403

表4 署名アルゴリズム拡張の例

ハッシュアルゴリズムは、TLS1.2では鍵導出におけるハッシュアルゴリズムとMACにおけるハッシュアルゴリズムを兼用して指定していました。TLS1.3でMACが廃止されたのに伴い、暗号スイート上のハッシュ表記はHKDF鍵導出のためのハッシュアルゴリズムのみを指定するものとなりました。

4. まとめ

このようにTLS1.3では不要なものを削除するとともに本来独立、直交する項目については暗号スイートではなくTLS拡張で定義できるようなりました。そのようにすることで、TLS1.2では4項目の組み合わせであるために非常に多種のスイートができてしまったのに対して、TLS1.3では暗号スイートでは2項目の組み合わせを定義するのみとなりスイートの種類を大幅に絞り込むことに成功しています。現在、TLS1.3として定義されているスイートは以下の5種類です。

暗号スイートの表記 ID
TLS_AES_128_GCM_SHA256 0x1301
TLS_AES_256_GCM_SHA384 0x1302
TLS_CHACHA20_POLY1305_SHA256 0x1303
TLS_AES_128_CCM_SHA256 0x1304
TLS_AES_128_CCM_8_SHA256 0x1305

      表3 TLS1.3の暗号スイート

この記事の内容を含めてTLプログラミングについて解説をまとめる機会をいただきました。興味のあるかたはご覧ください。徹底解剖 TLS 1.3 (翔泳社から 3/7刊行)。

8
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?