众所周知,GMAC/GCM的复制现在允许对GMAC本身进行密钥恢复攻击,从而能够伪造消息。这是因为GMAC计算GHASH,然后用AES(j)计算XOR,其中j是GCM计数器。如果n是重复的,则得到相同的AES(j),它允许你异或,得到原始的GHASH,然后攻击GCM多项式。
为什么GCM不在ECB模式下使用AES加密其最终身份验证标记(一个ECB块)?如果性能是一个问题,你想要避免两个AES加密,为什么不做AES(GHASH(m) ^ j)或类似的?GHASH(m) XOR AES(j)似乎是在现在的重用中乞求突然死亡。为什么要这么做?
看起来,这个简单的设计改变会使GCM/GMAC更能抵抗现在的重复。您仍然可以像使用任何流密码一样,在当前重复时使用异或密文,但是您不能破坏身份验证密钥,对吗?
发布于 2019-09-04 18:15:49
可能是潜伏期。
\mathrm{GHASH}_K(m) \oplus \mathrm{AES}_K(n)允许并行计算两者,而加密\mathrm{GHASH}输出会增加短消息的显著延迟。作者在GCM原始文件第3节中详细介绍了这方面的情况。
当时的一种类似的竞争模式,化学武器公约确实加密了MAC输出,但效率不高。
https://crypto.stackexchange.com/questions/73049
复制相似问题