🧮 TLS1.3で採用された暗号アルゴリズムの特徴
🌱 はじめに
TLS1.3では、過去バージョンで使われていた古い暗号方式(RSA鍵交換、SHA-1、CBCモードなど)が排除され、現代のインターネットに適した堅牢で高速なアルゴリズムに絞り込まれました。この記事では、TLS1.3で採用された主要な暗号アルゴリズムと、その利点を整理します。
🧩 TLS1.3の暗号スイートの特徴
過去との違い
-
TLS1.2まで
-
数十種類の暗号スイートをサポート
-
互換性維持のため複雑化
-
弱い暗号(RC4, 3DES, CBCモード)が残存
-
-
TLS1.3
-
採用アルゴリズムを大幅に削減
-
Forward Secrecyを必須化(RSA鍵交換を廃止)
-
安全性と性能がバランスした暗号に限定
-
TLS1.3では「安全で高速なものだけを残す」方針により、暗号スイートの選択がシンプルになった。
🔐 採用された主要暗号アルゴリズム
1. 共通鍵暗号(暗号化方式)
-
AES-GCM(Galois/Counter Mode)
-
高速で並列処理可能
-
認証付き暗号(AEAD)で改ざん検知も同時に実現
-
IntelやARMのCPUにAES命令セットがあり、ハードウェア支援で効率的
-
-
ChaCha20-Poly1305
-
Googleが提案した高速暗号
-
AES命令セットがない環境(モバイル、IoT)で特に高速
-
暗号化(ChaCha20)と認証(Poly1305)を組み合わせたAEAD方式
-
AES-GCMはサーバー用途に、ChaCha20-Poly1305はモバイル用途に強みを持ち、両者で幅広い環境をカバーできる。
2. 鍵交換アルゴリズム
-
ECDHE(Elliptic Curve Diffie-Hellman Ephemeral)
-
楕円曲線を使った一時的鍵交換方式
-
Forward Secrecyを必須化:セッションごとに新しい鍵を生成
-
将来的な秘密鍵漏洩があっても過去通信は解読不可能
-
RSA鍵交換はForward Secrecyが保証できないためTLS1.3で廃止。
3. ハッシュ関数
-
SHA-256 / SHA-384
-
証明書署名やHMACに利用
-
SHA-1は衝突攻撃のリスクがあるためTLS1.3では完全に排除
-
⚡ TLS1.3で利用可能な暗号スイート一覧(RFC 8446)
-
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(制限用途)
基本的には上3つ(AES-GCMとChaCha20-Poly1305)が主流。CCMは組込み機器向けに軽量実装用として存在。
🎨 AES-GCMとChaCha20の使い分け
-
AES-GCM
-
サーバーやデータセンターなど、AES命令セットを持つCPUで最速
-
エンタープライズやクラウド環境の標準
-
-
ChaCha20-Poly1305
-
AESハードウェアがないスマートフォンやIoTで有利
-
Google ChromeやAndroidで標準的に利用される
-
どちらの暗号を選んでも高い安全性を確保でき、実行環境に応じて自動で最適化される。
🎯 まとめ
TLS1.3の暗号アルゴリズムは、
-
AES-GCMとChaCha20-Poly1305で環境に応じた高速性を確保
-
ECDHEによるForward Secrecyで長期的な安全性を保証
-
SHA-256/384の採用で堅牢なハッシュ基盤を提供
TLS1.3は「選びやすく、間違いにくく、安全で速い」暗号スイートを実現し、開発者や利用者にとって運用負担を大幅に減らしている。