ストリーム暗号
ストリーム暗号の安全性の条件として、次の5項目があげられる。
統計的乱数性
非線形性
無相関性
長周期性
線形複雑度(linear complexity)
鍵ストリーム生成部は、通常、内部状態を記憶するレジスタがあり、レジスタ長が安全性の上限の一つとなる。レジスタの初期値を決める秘密鍵の長さも安全性の上限を決める。(これらの長さは安全性の上限を決めるのであって下限ではない。)
安全性の根拠:
鍵ストリームとして、擬似乱数ではなくいわゆる真の乱数を使用し、一度使用した乱数列は絶対に再使用しないワンタイムパッドとして運用した場合、情報理論的安全性をもつ。しかし、平文と同じ長さの乱数列を事前に生成して共有しておく必要があるなど、運用的に高価であり広くは採用されていない。
鍵ストリーム生成部にブロック暗号を部品として使用し、ストリーム暗号の安全性をブロック暗号の安全性に帰着させるものがある。
ブロック暗号のCTRモードは、ブロック暗号が擬似ランダム関数とみなせるのならば計算量的安全性をもつが、誕生日のパラドックスからブロック長 n に対して 2 n / 2 {\displaystyle 2^{n/2}} ブロック程度の出力で自然乱数と識別可能である。
ここでは、使用する擬似乱数列生成器のタイプ別に種類分けする。
ストリーム暗号は、平文がいつ何バイト発生するか不確定なアプリケーションによく採用される。例えば、音声暗号化(秘話)などの秘匿通信である。
ウェブブラウザで使用される暗号化通信SSLの暗号方式としてRC4が (オプションとして) 採用されている。無線LAN (WEP,WPA) でもRC4が使用される。他に、携帯電話用に A5/1, A5/2 などがある。