我如何为GCM创建一个“反向”GHASH算法,允许我计算生成特定选择输出的输入值,前提是我知道认证密钥H?如果可能的话,实现这一目标的过程是什么?
发布于 2023-02-27 13:40:03
如果可能的话,实现这一目标的过程是什么?
实际上,如果您知道如何在GF(2^{128})中执行操作,特别是加法、乘法和计算逆(请注意,您已经需要知道如何进行加法和乘法才能在正向执行GHASH ),这是非常容易的。
GHASH所做的是获取消息1并将其转换为一系列128位值的a_n, a_{n-1}, ..., a_1;这样做的方式是,来自a_n, a_{n-2}, ..., a_2的比特直接来自消息。然后,它计算:
因此,要找到GHASH为特定值T的消息,您可以选择一个消息长度和一个16字节长的位置,这将设置一个特定的a_j值(对于任何j)。然后,现在将该位置上的字节设置为0,并任意设置其余的消息字节,并计算该消息的GHASH值,它将是一个值T'。
然后,将这16个字节设置为生成a_j = H^{-j}(T + T')的值,您就完成了;当您修改该消息时,它将计算为T。
1:正如GCM中定义的,GHASH实际上需要两条消息:一条是AAD,另一条是密文。这不会使事情复杂化,所以我会忽略它
https://crypto.stackexchange.com/questions/104397
复制相似问题