为了构建一个安全的系统,我们可以在开始安全编程之前假设加密保证完整性是真实的吗?
- 无论是对称密钥还是公钥
加密,是我的问题
证明良好?
- 如果没有,有哪些
漏洞,你能给出一个
例子?
不。如果您考虑一下,这一点很容易看出一次性垫 http://en.wikipedia.org/wiki/One-time_pad,一个简单的(理论上)完全安全的系统。
如果更改输出的任何位,明文的一部分也会发生变化,而接收者无法检测到这一点。
这是一个显而易见的例子,但同样的结论适用于大多数加密系统。它们仅提供机密性,而不提供完整性。
因此,您可能想要添加一个电子签名 http://en.wikipedia.org/wiki/Digital_signing。有趣的是,当使用公钥加密技术时,先签名后加密 (SE) 或先加密后签名 (ES) 是不够的。这两者都容易受到重放攻击。您必须进行签名-加密-签名或加密-签名-加密才能获得总体安全的解决方案。这paper http://world.std.com/~dtd/sign_encrypt/sign_encrypt7.html详细解释了原因。
如果您使用 SE,收件人可以解密邮件,然后将其重新加密发送给其他收件人。这会欺骗新收件人关于发件人的预期收件人的信息。
如果您使用 ES,窃听者可以删除签名并添加自己的签名。因此,即使他们无法阅读该消息,他们也可以冒充原始发件人,将其归功于此。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)