-- TOC --
1945年,Shannon提出了设计密码体制的两种基本方法——混淆(confusion)
、扩散(diffusion)
。
攻击者得到密文,通过对密文的分析,难以得到明文与密钥的有效信息,这就是混淆与扩散的要做到的。
编码(encode)
与加密(encrypt)
都是把一条数据变成另一条数据的函数,但它们有本质的区别。
编码是公开的,是双向函数。任何人都可以把信息编码,也可以把信息解码。典型例子:十六进制编码、base64编码,以及 rot13 “加密”。它虽然名字是加密,但它事实上是一个编码——任何知道算法规则的人,都可以进行解密。
加密是私密的。必须有密钥才能加密,也必须有密钥才能解密(公钥与私钥可能不同)。此外,优秀的加密算法,安全性应该依赖于密钥的保密程度、解密的难度,而无关乎算法的秘密。也就是说,任何人都知道这个加密、解密算法是怎样的,任何人都可以实现算法,但拿不到密钥就没法解密。典型的例子是 RSA、DES、AES 等密码体系。
应当意识到,编码是不可靠的。置换之类的简单编码方式尤其不可靠。作为密码的设计者,应当假设攻击者知道算法的每一处细节,也就是说,设计算法的时候,应该认为编码对信息安全完全没有帮助。
本文链接:https://cs.pynote.net/se/jjm/202304161/
-- EOF --
-- MORE --