CyberGlossary

暗号

Salsa20

定義

Daniel J. Bernstein が 2005 年に設計した 256 ビット鍵のストリーム暗号。eSTREAM ポートフォリオに選定され、ChaCha20 の直接の先祖となるアルゴリズム。

Salsa20 は Daniel J. Bernstein が 2005 年に発表したストリーム暗号で、欧州 eSTREAM コンペティションのソフトウェアポートフォリオ最終版に採用されました。256 ビット鍵、64 ビットナンス、ブロックカウンタから得られる 512 ビットの内部状態に対し、加算・回転・XOR ベースの quarter-round 関数を 20 ラウンド適用(Salsa20/20)して鍵ストリームを生成します(Salsa20/12 や Salsa20/8 の縮小版も存在)。ソフトウェア実装で高速・定数時間であり、縮小ラウンドへの攻撃を除いて十分な暗号解析耐性を維持しています。現在は拡散性とより長いナンスを持つ ChaCha20 にほぼ置き換わっていますが、ナンス拡張版 XSalsa20 として NaCl/libsodium ライブラリや、過去には Tor の Hidden Service で利用されてきました。

  • NaCl/libsodium の secretbox は既定の AEAD として XSalsa20-Poly1305 を採用している。
  • Salsa20/12 は eSTREAM の最終ポートフォリオに選ばれた。

関連用語