生成器G要求是Diffie Hellman算法中的原始根模p

| 搜索之后,我发现自己对Diffie Hellman算法中使用P和G感到困惑。要求P是质数,并且G是P的原始根。 我知道安全性是基于难以分解两个非常大的质数的结果的,所以我对此没有任何疑问。但是,关于G是P的原始根的目的,似乎几乎没有可用的信息。有人可以回答为什么存在此要求的情况(如果可能,请提供参考)?只是增加了安全性吗?鉴于显然可以使用p和g的任何组合来创建共享密钥,即使不是非质数的密钥也可以创建,我发现这很有趣。当然可以只是为了安全吗?如果是这样,它将如何增加呢? 提前致谢 丹尼尔     
已邀请:
如果g不是p的原始根,则g将仅生成GFp的子组。这对系统的安全性具有影响:系统的安全性将仅与GFp中的g量级成正比,而不与GFp的全部量级成正比。 举一个小例子:选择p = 13和g = 3。 GF_13中3的顺序为3(3 ^ 1 = 3,3 ^ 2 = 9,3 ^ 3 = 1)。 按照Diffie-Hellman的常规步骤,Alice和Bob应该分别选择1和p-1之间的整数a,b并计算resp。 A = ga和B = gb。为了对此进行暴力破解,攻击者应该期望尝试在1到p-1之间的a(或b)所有可能的值,直到他发现产生A(或B)的值为止。但是由于g不是原始的根模p,他只需要尝试值1、2和3即可找到解a \',使得A = ga \'。秘密就是s = gab =(ga)b =(ga \')b = ga \'b =(gb)a \'= Ba \',攻击者现在可以计算出。     
不需要用于Diffie-Hellman的生成器g是原始根,这也不是常见的选择。更受欢迎的是选择g使其生成素数次子组。即g的阶为素数q,它是p-1的大素数。 例如,已选择为IKE提议的Diffie-Hellman组,以便p是安全的素数,并且g生成(p-1)/ 2阶的子组。 选择g作为大质数次子组生成器的一种动机是,这可以使 决定性的Diffie-Hellman假设。如果g是原始根,则此假设不成立,这使得对已实现协议的分析更加困难。     
Diffie-Hellman的安全性不是基于分解的难度。它基于计算一般离散对数的(假定)难度。 g必须是p的原始根,算法才能正确且可用。它确保对于每个0 <= x

要回复问题请先登录注册