5个回答

有没有一种密码方式,如果破译者持有错误的密钥,那么会解译出错误但是意义通顺的明文?

匿名用户
3个点赞 👍

这其实是个跟加解密算法关联不大的问题,实际上很多加解密算法包括基本的AES都会在密钥(或iv)不正确的情况下解密出数据而不报错,能发现解密失败有时是加解密算法特别设计的功能,例如有专门的校验字段。问题在于,敌人对你要发送的数据的内容是有预期的,解密失败产生的随机内容和真正有意义的内容很容易区分出来。本质上来说,这是因为你真正可能发送的数据的集合只是加密算法可以接受的数据集合中的一个很小的子集,因而是否解密成功是一个可以高概然判断出的事情。

所以你可以看出,解决方案其实不在于加解密算法,而是在你实际发送的内容上,我有几个方案可以参考:

  1. 在可能被敌人截获的信道上,本身就大量发送随机二进制数据,它和真正有效的数据在加密之后是无法区分的,但解密之后可以通过校验字段简单区分出来。敌人截获数据时无法判断出到底是有效的数据还是随机数据,因而通过穷举密钥的方式尝试解密也无法判断密钥是否正确,除非每一个密钥都尝试所有的数据。缺点是如果敌人的确尝试解密所有数据的话仍有可能判断出哪个密钥是正确的。
  2. 在可能被敌人截获的信道上直接发送明文数据——其中既有真的信息也有假的信息,互相矛盾,算法并不进行解密,而是通过特殊的校验算法判断哪一些是真的哪一些是假的,例如只有和特定密钥做HMAC之后最后4个二进制都是0的才是真消息,这可以通过微调措辞或者附加随机内容来达成。缺点在于即便是混在假消息当中真实数据也会包含一定信息量,仍然可能造成泄密。
  3. 结合一下两个方案,在可能被敌人截获的信道上发送包含随机二进制数据、真消息、假消息的信息,并采用复数个密钥,真消息有一组不同的密钥,假消息有更多备选的密钥,每个密钥无论对应真假消息加密的信息数量大致相同。接收方只尝试用真密钥解密,任意一个密钥解密之后校验字段匹配即成功。敌人即便尝试对每一个消息用不同密钥解密,并找出了所有可能的解密方案,也仍然无法区分真假。

需要指出的是这样的方案实用性不算很强,首先它只适合单向发送加密数据的场景,这种场景汇总只能采用某种形式的固定密钥(即使使用某种密钥滚动策略,滚动序列也是根据初始参数唯一确定的)。对于可以双向通信的场景,已经有实用的完美前向安全性的方案,它可以每次都协商一个新的密钥用于双方通信,敌人对于每次协商的密钥都需要重新暴力破解。其次,现在的加解密算法本身强度都很高,暴力穷举密钥尝试解密本身就不可行。因此通常直接使用常见的加密方案如TLS就足够了。

发布于 2023-03-24 12:58・IP 属地北京
真诚赞赏,手留余香
还没有人赞赏,快来当第一个赞赏的人吧!
灵剑
自由评论 (0)
分享
Copyright © 2022 GreatFire.org