コンテンツへスキップ
uencoder

Stream Cipher

ストリーム暗号はバイト単位やビット単位で暗号化し、鍵ストリームを平文と XOR する。パディングが不要で、リアルタイムやストリーミングデータに適する。

目的

ブロック境界なしの効率的な暗号化を提供し、ネットワークストリームや連続データに適合する。

メカニズム

暗号化は C_i = P_i ⊕ S_i で、S は鍵とノンス/カウンタから PRG で生成される鍵ストリームである。復号も同一である(XOR は自己逆)。安全性は鍵ストリームの疑似ランダム性とノンスの一意性に依存する。代表的な構成は ARX 系(ChaCha)、LFSR 系、AES-CTR モードである。

ユースケース

  • TLS 1.3 で ChaCha20-Poly1305 を使う通信の保護
  • リアルタイムの音声・映像暗号化
  • WireGuard VPN における利用
  • 低リソース組込みでの暗号化

例

  • 入力
    key + nonce → keystream
    Output
    C = P ⊕ S

    The nonce must never repeat

よくあるエラー

Encrypting two messages with the same key+nonce (a two-time pad)
Use a unique nonce or counter per message

関連用語

関連ツール

References