搜索后,我发现自己对Diffie Hellman算法中使用P和G感到困惑。要求P是质数,并且G是P的原始根。
我知道安全性是基于将两个非常大的质数的结果分解为因子的难度,因此我对此没有任何疑问。但是,关于G是P的原始根的目的,似乎几乎没有可用的信息。任何人都可以回答为什么存在此要求的情况(如果可能,请提供引用)?会增加安全性吗?鉴于显然可以使用p和g的任何组合来创建共享 key ,即使不是非质数的 key 也可以创建,我发现这很有趣。肯定只能出于安全性吗?如果是这样,它将如何增加呢?
提前致谢
丹尼尔
最佳答案
如果 g 不是 p 的原始根, g 将仅生成GF的子组。这会对系统的安全性产生影响:系统的安全性仅与 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 并计算响应。 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 = (gb)a'现在计算。
关于cryptography - 生成器G必须是Diffie Hellman算法中的原始根模p,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5656835/