我正在处理这样的问题:
有三种主机: A、B和C。A希望向通过B的C发送一条消息。在A处对消息进行散列处理,将哈希填充到消息中,然后将消息+散列加密并发送给B。B希望检查其解密消息的消息完整性,提取哈希,然后验证。
我提出了另一种选择。我的观点是,我们应该在A处加密消息,然后计算这个加密消息的散列。然后我们应该发送加密消息+哈希。优点是在B处,消息不需要解密。B可以验证加密消息本身的哈希值。
我提出的策略有什么问题吗?
发布于 2018-10-18 19:29:25
当然,您的计划对任何主动攻击都是不安全的。B或另一个中间人只需更改数据,然后计算一个新的哈希。这就是为什么你需要一个MAC而不是哈希。如果散列加密是安全的,则取决于加密/散列的方法。
如果有人提出这样的方案,你应该尝试使用认证密码,如GCM。然而,这仍然会使您容易受到协议错误的影响,因此,当您到达协议错误时:使用TLS。
https://crypto.stackexchange.com/questions/63234
复制相似问题