ストリーム暗号は擬似乱数生成器を使うことでワンタイムパッドの問題を解決した共通鍵暗号
事前に共有すべき秘密鍵はシードだけで済む。そのような共通鍵暗号をストリーム暗号という
ただし、擬似乱数生成器では生成できない値が存在する
計算量的安全性を持つ
1987年にRC4が設計されたが平文解読攻撃が提案された。2008年にバーンスタインがChaCha20と呼ばれるストリーム暗号を開発
Intel CPUやARMの一部CPUでAES専用のハードウェア支援機構があり高速に処理されるがモバイルや組み込み環境ではChaCha20のほうがAESより高速
秘密鍵と一緒にnonceと呼ばれる値を擬似ランダム関数に入力することで繰り返し利用できる
ChaCha20
ChaCha20は256ビットの秘密鍵と96ビットのナンスを元に512ビットずつの擬似乱数を生成する
生成した乱数と平文の排他的論理和をとって暗号文にするストリーム暗号
k, n, b, c(初期定数) 8×10回繰り返す