セキュリティ
上級

ChaCha20-Poly1305(チャチャ20)

Daniel Bernstein 2008年設計のストリーム暗号 + 認証付AEAD。TLS 1.3 / WireGuard / Google QUIC 採用、ARM / モバイルでAES より高速、AES の代替候補。

0 回閲覧
0 いいね
2026/5/15 更新
関連タグ
暗号
ChaCha20
AEAD

概要

ChaCha20-Poly1305 はDaniel J. Bernstein (米イリノイ大学・「djb」・Curve25519 / Ed25519 等の暗号設計多数) が2008年に発表した「ChaCha」(Salsa20 の改良版) と 2005年発表した「Poly1305」を組合せたAEAD (Authenticated Encryption with Associated Data) 暗号スイート。2014年Google が組合せ実装公開・2015年RFC 7539 / 2018年RFC 8439 で標準化。ARM / モバイル (AES-NI なし環境) でAES-GCM より3-5倍高速・実装が定数時間 (Constant-Time) でサイドチャネル攻撃耐性が高い。

ChaCha20-Poly1305 主要仕様

項目仕様
暗号ChaCha20 (256bit 鍵) ストリーム暗号
認証Poly1305 (128bit MAC)
Nonce96bit (per message)
ブロックサイズ64 byte
ラウンド数20 (Salsa20/8 から改良)
構造ARX (Add-Rotate-XOR)
設計者Daniel J. Bernstein (djb)
標準化RFC 7539 (2015) / RFC 8439 (2018)

主要採用先

用途プロトコル
TLS 1.3推奨暗号スイート3つの1つ
TLS 1.2 (拡張)RFC 7905 (2016)
WireGuard標準 (唯一の暗号)
Signal Protocolメッセンジャー
Google QUIC元祖採用
OpenSSH[email protected] (2013)
WhatsAppE2E 暗号
Apple iMessage一部
Wireshark解析対応

ChaCha20 vs AES-GCM 比較

項目AES-128-GCMChaCha20-Poly1305
鍵128bit256bit
HW加速AES-NI 必須不要 (SW高速)
ARM (HWなし)50-100 MB/s200-400 MB/s
x86 + AES-NI3-5 GB/s1-2 GB/s
モバイル (旧Android)遅高速
サイドチャネル耐性Cache attack 注意Constant-Time
標準化NIST FIPS 197 (AES) + RFC 5288 (GCM)RFC 8439

ChaCha20 は ARX (Add-Rotate-XOR) のみで設計され、Cache タイミング攻撃耐性が構造的に高い。AES より単純な実装で安全性確保。

ChaCha20 設計の特徴

ChaCha20 はSalsa20 (2005) の改良:

  • 20 ラウンド (Salsa20/8 や/12 から増・安全マージン向上)
  • 列演算 (column round) を行演算 (diagonal round) に変更
  • 同性能で安全性向上
  • ARX のみ (Add / Rotate / XOR)
  • S-Box なし (シンプル)

Poly1305 認証

メッセージ認証コード (MAC):

  • 多項式評価ベース
  • 128bit 出力
  • 32bit 乗算で計算可能
  • Galois Counter Mode (AES-GCM) と類似但しシンプル
  • ChaCha20 + Poly1305 で1パス処理 (AEAD)

XChaCha20-Poly1305

ChaCha20 のNonce 拡張 (24 byte = 192bit) 版:

  • 通常Nonce 96bit から拡張
  • ランダムNonce 安全使用可能 (Nonce 衝突確率天文学的小)
  • Signal Protocol / libsodium で広範採用
  • RFC ドラフト段階 (2024)

関連用語との違い

  • vs AES-GCM: ARM軽量 / x86高速
  • vs Salsa20: 旧版 / 安全マージン向上
  • vs PQC: 古典 / 量子耐性

FAQ

Q1: AES-GCM と ChaCha20 どちら? A: x86 HW (AES-NI) があれば AES-GCM が速い。モバイル / IoT / 古いARM はChaCha20 推奨。多くのライブラリが自動選択。

Q2: Daniel Bernstein は誰? A: 米暗号学者・「djb」(イニシャル)・Curve25519 / Ed25519 / NaCl / qmail / DJBDNS 等の重要暗号 / ソフトウェア設計者。米司法省「Bernstein訴訟」(1995) で暗号輸出規制を緩和した立役者。

Q3: WireGuard はなぜ ChaCha20 のみ? A: シンプル設計哲学・「正しいアルゴリズム1つだけ」を採用、ChaCha20 が ARM / モバイル含む全環境で十分高速・安全。AES サポートで設定肥大化を回避。

この記事について
カテゴリーセキュリティ
難易度上級
作成日2026/5/15