ストリーム暗号
鍵ストリーム生成部は、128ビット程度の秘密鍵を用いて擬似乱数を生成する。通常のストリーム暗号は共通鍵方式であるが、非対称鍵方式のストリーム暗号も提案されている。擬似乱数ではなく真の乱数を利用する場合もある。また、一度使用した鍵ストリームを再使用しないように制御する必要があるので、平文ごとに異なる初期値 (初期化ベクトル, IV) を使用する。IVは乱数かカウンタで作る。
鍵ストリーム生成の方法には、専用のアルゴリズムによるものと、ブロック暗号を元にした生成方法とがある。専用アルゴリズムによる鍵ストリーム生成は、フィードバックシフトレジスタに基づくものが多い。フィードバックシフトレジスタはシフトレジスタとフィードバック関数で構成される。
フィードバックの構成方法には、暗号文を鍵ストリームにフィードバックしない方式(同期式、外部同期)と、フィードバックする方式(非同期式、自己同期)がある。方式によって、暗号文にビットエラーが生じたときのエラーの伝播が異なる。
ストリーム暗号(ストリームあんごう、stream cipher)とは、平文をビット単位やバイト単位で逐次暗号化する暗号である。平文を64ビットや128ビットなどの固定長のブロックに分割して暗号化するブロック暗号に対比した語である。その構成上、入力が逐次追加されるデータであった場合、ブロック暗号は入力がブロックサイズに達するまで溜まらないと処理を進めることができないのに対し、ストリーム暗号はその必要がないのが特徴である。