本条目部分链接不符合格式手冊規範。跨語言链接及章節標題等處的链接可能需要清理。(2015年12月11日) 請協助改善此條目。參見WP:LINKSTYLE、WP:MOSIW以了解細節。突出显示跨语言链接可以便于检查。 |
本条目需要补充更多来源。(2013年9月23日) 请协助添加多方面可靠来源以改善这篇条目,无法查证的内容可能會因為异议提出而移除。 |
在密码学中,流密码(英语:Stream cipher),又譯為串流加密、資料流加密,是一种对称加密算法,加密和解密双方使用相同伪随机加密数据流(pseudo-random stream)作为密钥,明文数据每次与密钥数据流顺次对应加密,得到密文数据流。实践中数据通常是一个位(bit)并用异或(xor)操作加密。
该算法解决了对称加密完善保密性(perfect secrecy)的实际操作困难。「完善保密性」由克劳德·香农于1949年提出。由于完善保密性要求密钥长度不短于明文长度,故而实际操作存在困难,改由较短数据流通过特定算法得到密钥流。
伪随机密钥流(keystream)由一个随机的种子(seed)通过算法(称为:PRG,pseudo-random generator)得到,k
作为种子,则G(k)
作为实际使用的密钥进行加密解密工作。
为了保证流加密的安全性,PRG必须是不可预测的。弱算法包括glibc random()
函数,线性同余生成器(linear congruential generator)等。
线性同余生成器中,令r[0]
为seed
,r[i] =(a * r[i-1] + b)mod p
,其中a,b,p
均为常数,则可轻易顺次推出整个密钥流,从而进行解密。
一种严重的错误即反复使用同一密码本对不同明文进行加密。攻击者可利用这种方式对密文进行解密。
用p表示明文,c表示密文,k表示种子,PRG表示密钥流生成算法,则:
攻击者监听到此段消息(包含两段相同密钥流加密的密文)后,即可利用:
足量的冗余(此处表示p1,p2)则可破解明文。
一个失败的例子即WEP网络传输协议。
更好的解决方案是针对不同段的信息使用伪随机密钥(不同k值),例如TLS所为。
当硬盘使用流加密时,同样会使用同一密码本对不同文本进行加密,因而调换两个文本中少量信息,可以得到同样的冗余结果。避免这个问题的方案通常是避免使用流加密。
参见en:Salsa20。
|
This article uses material from the Wikipedia article "流密码", which is released under the Creative Commons Attribution-Share-Alike License 3.0. There is a list of all authors in Wikipedia
3D,Geneva double,mechanism,kinematics,rotation,translation