答案 0 :(得分:0)
要回答这个问题,你必须先查看底层的GHASH,它用于完整性检查。 GHASH是一种通用哈希函数。取决于一些秘密参数。 GHASH的安全性取决于您是否可以保密这些秘密参数。 由于GHASH是线性函数,因此攻击者永远不会学习GHASH的结果是非常重要的。即只知道几个GHASH输出允许攻击者获得秘密的GHASH参数。
GCM通过加密来保护GHASH的输出,即用AES(Counter0)对其进行异或。 计数器永远不会重复是非常重要的。 例如,假设您使用Counter0的相同值加密两条消息。 然后攻击者学习
AES(Counter0)Xor GHASH(C1,..)
和
AES(Counter0)Xor GHASH(C2,..)
攻击者可以从中获取
GHASH(C1,..)Xor GHASH(C2,..)
给攻击者一个线性方程。知道两个方程允许求解秘密参数。但即使知道一个设备也应该允许简化对GCM的攻击。</ p>
这表明必须非常小心地使用伽罗瓦计数器模式。即如果你在CTR模式下重复IV,那么你可能会泄漏明文。如果你在GCM中重复IVs,那么你会泄漏密钥,这当然更糟。
我并不认为此攻击会破坏您的提案。对我来说,你的建议的描述有点太短,我不确定我是否完全理解它。但我认为上面的描述确实描述了使用GCM时可能存在的陷阱,我希望它能帮助您自己分析您的提案。