Stream Cipher
流密码逐字节或逐位加密,用密钥流与明文异或得密文,无需填充,适合实时与流式数据。
用途
提供无需分组对齐的高效加密,适合网络流与连续数据。
机制
加密 C_i = P_i ⊕ S_i,其中 S 为密钥流(由密钥与 nonce/计数器经 PRG 生成)。解密相同(异或自逆)。安全性依赖密钥流的伪随机性与 nonce 唯一性。常见构造:基于 ARX(ChaCha)、基于 LFSR、AES-CTR 模式。
用例
- TLS 1.3 流密码加密(ChaCha20-Poly1305)
- 实时音视频加密
- WireGuard VPN 隧道
- 嵌入式低资源加密
示例
- 输入
key + nonce → keystream输出C = P ⊕ SThe nonce must never repeat
常见错误
- Encrypting two messages with the same key+nonce (a two-time pad)
- Use a unique nonce or counter per message
相关词条
Block Cipher
分组密码是对固定长度分组(如 128 位)执行加密/解密的对称密码,需配合工作模式处理任意长度数据。 词汇表
ChaCha20
ChaCha20 是 Daniel Bernstein 设计的流密码,基于 ARX(加-轮-异或)操作,常与 Poly1305 组成 AEAD,是 AES-GCM 的高性能替代。 词汇表
RC4
RC4 是 Ron Rivest 于 1987 年设计的流密码,简单高效但存在严重偏差,已被 TLS 等协议禁用。 词汇表
Nonce
Nonce(number used once)是加密中仅使用一次的值,与 IV 类似但强调唯一性而非随机性,常用于流密码与 AEAD。 词汇表