暗号
ChaCha20
定義
Daniel J. Bernstein が設計した現代的ストリーム暗号で、256 ビット鍵と 96 ビットナンスを用いる。Poly1305 と組み合わせた AEAD「ChaCha20-Poly1305」として広く使われる。
ChaCha20 は Daniel J. Bernstein が 2008 年に Salsa20 を改良して発表した 20 ラウンドのストリーム暗号です。256 ビット鍵、96 ビットナンス、32 ビットブロックカウンタから、32 ビット語の加算・回転・XOR のみを用いて鍵ストリームを生成するため、AES ハードウェアのないモバイル・組込み CPU でも高速かつ定数時間で動作します。Poly1305 MAC と組み合わせた AEAD ChaCha20-Poly1305 は RFC 8439 で標準化され、TLS 1.3 で AES-GCM と並び必須の暗号スイートになっています。TLS、QUIC、WireGuard、OpenSSH、Signal プロトコル、Linux カーネルの暗号機能などで広く利用され、10 年以上の暗号解析を経てもフル 20 ラウンド版への有効な攻撃は知られていません。
例
- TLS 1.3 と QUIC ではモバイル端末で TLS_CHACHA20_POLY1305_SHA256 が広く使われる。
- WireGuard はすべてのデータパケットを ChaCha20-Poly1305 で暗号化する。
関連用語
Salsa20
Daniel J. Bernstein が 2005 年に設計した 256 ビット鍵のストリーム暗号。eSTREAM ポートフォリオに選定され、ChaCha20 の直接の先祖となるアルゴリズム。
ストリーム暗号
鍵とナンスから導出した擬似乱数の鍵ストリームを平文とビットまたはバイト単位で XOR して暗号化する対称暗号。
AES(Advanced Encryption Standard)
NIST が標準化した 128 ビットブロック暗号で、鍵長は 128・192・256 ビット。Daemen と Rijmen が設計し、世界で最も広く使われている対称暗号。
対称鍵暗号
暗号化と復号に同じ秘密鍵を使う暗号方式で、鍵を安全に共有できれば高速で強力な機密性を提供する。
暗号化
アルゴリズムと鍵を用いて平文を暗号文に変換し、認可された当事者のみが元のデータを復元できるようにする処理。
暗号スイート
鍵交換、認証、データ暗号化、完全性のアルゴリズム群を 1 つの名前にまとめた組み合わせで、TLS などの協議によりセッションごとに選ばれる。