Security 如果使用哈希,为什么要使用经过身份验证的加密?

Security 如果使用哈希,为什么要使用经过身份验证的加密?,security,authentication,encryption,hash,aes-gcm,Security,Authentication,Encryption,Hash,Aes Gcm,与CRC或SHA等哈希函数等更简单的方法相比,使用GCM或EAX等经过身份验证的加密方案有什么好处 据我所知,这些方法基本上是向消息添加消息身份验证代码(),以便对其进行验证。但是,如果计算CRC或哈希值并将其附加到明文()中,则同样可能。这样就不可能篡改消息,因为散列可能不再匹配 链接的维基百科文章说,MIC没有考虑密钥等,但我不明白为什么这是一个问题。从概念上讲,认证加密方案(GCM、CCM、EAX等)和在加密消息上提供HMAC之间没有区别,AE算法只是约束和标准化字节模式(与encrypt

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

据我所知,这些方法基本上是向消息添加消息身份验证代码(),以便对其进行验证。但是,如果计算CRC或哈希值并将其附加到明文()中,则同样可能。这样就不可能篡改消息,因为散列可能不再匹配


链接的维基百科文章说,MIC没有考虑密钥等,但我不明白为什么这是一个问题。

从概念上讲,认证加密方案(GCM、CCM、EAX等)和在加密消息上提供HMAC之间没有区别,AE算法只是约束和标准化字节模式(与encrypt和HMAC的串行操作相比,需要更少的空间/时间)

如果您在加密之前在明文上计算未加密摘要,您确实有一个防篡改算法。但是在明文上计算摘要比在密文上计算有两个缺点:

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

    这些选择包括:

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

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

    从概念上讲,经过身份验证的加密方案(GCM、CCM、EAX等)之间没有区别AE算法在加密消息上提供HMAC,简单地约束和标准化字节模式(同时比encrypt和HMAC的串行操作需要更少的空间/时间)

    如果您在加密之前在明文上计算未加密摘要,您确实有一个防篡改算法。但是在明文上计算摘要比在密文上计算有两个缺点:

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

    这些选择包括:

    • 仅加密:受到篡改。假设每条消息使用新的IV(而ECB未使用),则消息重复时不会显示
    • 仅摘要:可能被篡改。消息为纯文本
    • 仅限MAC:不受篡改。消息为纯文本
    • 摘要然后加密(DtE-摘要本身是加密的):密文损坏攻击是可能的。篡改明文是可能的,如果它是已知的。消息重用是不会透露的
    • 摘要和加密(D&E/E&D-摘要明文,以明文形式发送摘要):密文损坏攻击是可能的。如果已知,篡改明文是可能的。通过摘要显示消息重用,但不改变
    • 加密然后摘要(EtD):这可以防止传输错误,但由于任何攻击者都可以重新计算摘要,因此这与仅加密相同
    • MAC then Encrypt(MtE):与DtE具有相同的强度,但即使攻击者知道原始明文及其篡改内容,也无法更改MAC(除非明文被更改为已知的消息+MAC)
    • MAC和加密(M&E/E&M):与D&E一样,这揭示了消息的重用