メインコンテンツへスキップ

🧮 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)

  1. TLS_AES_128_GCM_SHA256

  2. TLS_AES_256_GCM_SHA384

  3. TLS_CHACHA20_POLY1305_SHA256

  4. TLS_AES_128_CCM_SHA256

  5. 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は「選びやすく、間違いにくく、安全で速い」暗号スイートを実現し、開発者や利用者にとって運用負担を大幅に減らしている。