如果哈希值,为什么要使用Authenticated Encryption呢?

时间:2018-02-05 15:24:50

标签: security authentication encryption hash aes-gcm

使用经过验证的加密方案(如GCM或EAX)与CRC等简单方法或SHA等哈希函数相比有什么好处?

据我所知,这些方法基本上都会在消息中添加消息验证码(MAC),以便对其进行验证。但是,如果计算CRC或散列值并将其附加到明文(MIC),则可能会出现同样的情况。这样就不可能篡改消息,因为散列可能不再匹配了。

链接的维基百科文章称,中等收入国家不会考虑密钥等,但我不明白为什么这是一个问题。

1 个答案:

答案 0 :(得分:4)

在认证加密方案(GCM,CCM,EAX等)和提供HMAC而非加密消息之间,概念上没有区别,AE算法简单地约束和标准化字节模式(同时趋于需要更少空间/时间比加密和HMAC的串行操作。)

如果您在加密前通过纯文本计算未加密的摘要,则确实有防篡改算法。但是,通过明文计算摘要比通过密文计算摘要有两个缺点:

  1. 如果您发送两次相同的内容,则发送相同的哈希,即使您的密文不同(由于不同的IV或密钥)
  2. 如果密文被篡改以试图混淆解密例程,您仍会在发现篡改之前对其进行处理。
  3. 当然,消化之后的缺点是,在你的无键方法中,任何篡改密文的人都可以简单地在篡改后重新计算密文的SHA-2-256摘要。对此的解决方案是不进行无键的摘要,而是进行键控摘要,如HMAC。

    选项包括:

    • 仅限加密:受篡改影响。假设每条消息都使用了新的IV(并且未使用ECB),则不会显示消息重复的时间。
    • 仅限消化:受到篡改。消息是纯文本。
    • MAC-only:不受篡改。消息是纯文本。
    • Digest-then-Encrypt(DtE - 摘要本身是加密的):可以进行密文破坏攻击。如果已知,则可以篡改明文。消息重用不会泄露。
    • 摘要和加密(D& E / E& D-摘要明文,以明文形式发送摘要):密文损坏攻击是可能的。如果已知,则可以篡改明文。消息重用通过摘要显示而不会更改。
    • Encrypt-then-Digest(EtD):这可以防止传输错误,但由于任何攻击者都可以重新计算摘要,这与仅加密相同。
    • MAC-then-Encrypt(MtE):与DtE相同的优势,但即使攻击者知道原始明文以及他们篡改了什么,他们也无法改变MAC(除非明文被改为已知的消息+ MAC)。
    • MAC-and-Encrypt(M& E / E& M):与D& E类似,这揭示了消息重用。像MtE一样,它仍然容易受到密文篡改和一小部分篡改的影响。
    • 加密 - 然后 - MAC(EtM):MAC无法验证任何改变密文的尝试,这可以在处理密文之前完成。由于MAC超过了密文,因此未显示消息重用。

    EtM是一般情况下最安全的方法。 AE算法解决的一个问题是,它解决了如何将MAC和密码结合在开发人员手中并将其交给密码学家的问题。