避免重复相同的消息在加密后看起来总是一样的,并且可以被攻击者重播?

mik*_*kew 6 security authentication encryption cryptography

我想要验证某个特定消息是来自某个特定的地方.

示例:A重复向B发送相同的消息.让我们说这条消息"helloworld"是加密的"asdfqwerty".

如何确保第三方C不知道B总是收到相同的加密字符串,并且C开始向"asdfqwerty"B 发送?

我怎样才能确保当B解密"asdfqwerty""helloworld",它总是"helloworld"从A 接收到这个?

谢谢你的帮助.

Nic*_*son 6

对于前者,您希望对使用初始化向量的对称密码使用操作模式.IV确保每个加密的消息都不同,即使它包含相同的明文.

对于后者,您希望使用A(lice)的私钥对您的消息进行签名.如果B(ob)具有Alice的公钥,则他可以验证她是否真的创建了该消息.

最后,要注意重放攻击,其中C(harlie)记录来自Alice的有效消息,然后将其重放给Bob.为了避免这种情况,请在加密消息中添加一个随机数和/或时间戳(是的,您可以将IV播放作为nonce进行双重操作).