CyberGlossary

暗号

ストリーム暗号

定義

鍵とナンスから導出した擬似乱数の鍵ストリームを平文とビットまたはバイト単位で XOR して暗号化する対称暗号。

ストリーム暗号は秘密鍵とナンスから擬似乱数の鍵ストリームを生成し、平文と XOR して暗号文を得ます。復号時は同じ鍵ストリームを再生成して暗号文と XOR します。ブロック境界がなく状態量も小さいため、ストリーミング処理や省リソース環境に向きます。ChaCha20 や Salsa20 のような現代的設計は高速・定数時間で安全ですが、RC4 のような旧来の設計は破られており、TLS や WPA など多くの標準で禁止されています。最重要のルールは(鍵, ナンス)組を二度と使わないことです。同じ鍵ストリームで暗号化された 2 つのメッセージはその XOR を露呈し、しばしば両方の平文を復元できてしまいます。そのため通常は ChaCha20-Poly1305 のような認証付きモードで利用します。

  • ChaCha20-Poly1305 は TLS 1.3 と QUIC で主流のストリーム暗号系 AEAD。
  • RC4 は WEP や SSL/TLS で歴史的に用いられたが現在は禁止されている。

関連用語