ストリーム暗号

ストリーム暗号

 ストリーム暗号は、データを連続的に暗号化/復号することで、ストリーム形式の通信に対応するための暗号化方式です。ストリーム暗号では、データが送信される際に1ビットずつ暗号化され、暗号化されたビット列が送信されます。受信側では、受信したビット列を1ビットずつ復号することで、元のデータを取り戻すことができます。

 ストリーム暗号では、データの暗号化/復号がストリーム形式で行われるため、リアルタイム性のある通信に適しています。例えば、音声や動画のストリーミング配信においては、リアルタイム性が求められるため、ストリーム暗号が広く使われています。

 代表的なストリーム暗号アルゴリズムには、RC4やSalsa20などがあります。これらのアルゴリズムは、高速に動作するため、リアルタイム性のある通信に適しています。しかし、ストリーム暗号は、暗号化されたビット列が他のビット列と重複することがあるため、暗号化の安全性に課題があります。そのため、現在では、ストリーム暗号に代わり、ブロック暗号をストリーム暗号のように使うストリーム暗号モードが広く使われています。

 ストリーム暗号(stream cipher)は、平文をストリームとして暗号化する方式の暗号アルゴリズムです。ストリーム暗号では、平文と同じ長さのランダムなキーを生成し、それを用いて平文を暗号化します。このため、同じキーを用いて暗号化する場合でも、常に異なる暗号文が生成されます。

ストリーム暗号は、ブロック暗号と比較して、以下のような特徴を持ちます。

  • ストリーム暗号は、平文を連続的に暗号化するため、処理速度が高速である。
  • ストリーム暗号は、ブロック暗号と比較して実装が容易であり、小規模なシステムでも使用することができる。
  • ストリーム暗号は、暗号化のためのキーを保護する必要がある。

一方、ストリーム暗号には以下のような欠点もあります。

  • ストリーム暗号は、平文にランダムなキーを用いるため、鍵の生成方法に問題があると、安全性が低下することがある。
  • ストリーム暗号は、平文に加えて、ストリームキーを送信する必要があるため、キー配送問題が生じることがある。

 ストリーム暗号は、主にインターネット上の通信や、デジタル機器間の通信に使用されます。例えば、WPA2(Wi-Fi Protected Access II)で使用されるAES-CCMP(Advanced Encryption Standard-Counter with CBC-MAC Protocol)は、ストリーム暗号方式の一種です。