Salsa20について
Salsa20は、
ダニエル・バーンスタインにより創られた
ストリーム暗号です。この
暗号は、32ビットの加算、XOR操作、固定ローテートから成る疑似乱数生成によって機能します。入力として必要なものは、256ビットの鍵、64ビットのnonce、そしてカウンタを示す64ビットの値です。これを元に、512ビットの鍵ストリームを1ブロック生成します。さらに、128ビットの鍵長のバージョンも用意されています。この特徴により、Salsa20は特定の位置の鍵ストリームを迅速に算出できるのです。
Salsa20の設計は特許によって保護されておらず、バーンスタイン自身が様々なアーキテクチャ向けに最適化実装を公開しています。最新のx86プロセッサ環境では、ソフトウェア実装の速度は1バイトあたり4〜14サイクルの範囲となります。
構造
Salsa20の運用は、初期状態として設定される16ワード(1ワードは32ビット)が基盤となります。この初期状態には、8ワードの鍵、2ワードのストリーム位置、2ワードのnonce、そして4つの固定ワードが含まれています。固定ワードは、ASCII形式で