如何知道AES加密密钥在接收方是否正确?

时间:2017-02-18 11:18:41

标签: encryption cryptography aes

首先,我是密码学的新手。 假设我使用AES 128位加密加密普通测试并传递给接收器。密钥也传递给接收方。在接收方,如何在没有完全解密消息的情况下检查KEY是否正确。 我的意思是我们可以像这样检查

IF(KEY==something)

       DECRYPT

ELSE

      NOT a correct key. 

与IV有什么关系吗? 我真的不明白IV是什么。

1 个答案:

答案 0 :(得分:4)

首先,正如您可能确定的那样,将密文和密钥传递给不安全的通道是不安全的。将密文和密钥保存在同一个地方与保留明文相同,所以不要这样做。

密码系统不是确定给定密钥对密文是否正确,而是确定密文在解密之前是否合法。最常见的方法是使用MAC或消息验证代码。 HMAC是执行此操作的常用方法,与GCM等认证块模式一样。

最后,使用IV来确保重复的明文块不会导致重复的密文块。例如。在ECB模式中,不使用IV,每个相同的明文块将在给定密钥下加密到相同的密文。应用IV(在CBC等模式下)将确保相同的明文块看起来不同,因为从IV开始的链式XOR操作。

要解决您的问题,请使用GCM模式或使用KDF导出HMAC的对称密钥和密钥。