コンテンツへスキップ
uencoder

ChaCha20

ChaCha20 は Daniel Bernstein が設計したストリーム暗号であり、ARX(加算・回転・XOR)演算で構成され、Poly1305 と組み合わせて AEAD として使われることが多い、AES-GCM の高性能な代替である。

目的

AES のハードウェアアクセラレーションがないプラットフォームで高速かつ定時間安全な暗号化を提供し、AES のタイミングサイドチャネルを回避する。

メカニズム

Salsa20 の改良版であり、quarter-round 演算を 20 ラウンド実行する。状態は 4×4 の行列(定数、鍵、カウンタ、nonce)である。各ラウンドで列と対角線に加算・回転・XOR を適用し、生成されたキーストリームを平文と XOR する。

ユースケース

  • TLS 1.3 のデフォルト暗号スイートの一つ
  • WireGuard の VPN
  • Google サーバーの暗号化
  • モバイル暗号化

例

  • 入力
    key=256bit, nonce=96bit, counter
    Output
    keystream

    Combined with Poly1305 as AEAD

よくあるエラー

Nonce reuse replays the keystream
Use a unique nonce per message (e.g., a counter)

関連用語

関連ツール

References