为elgamal寻找发电机

时间:2010-12-22 06:05:43

标签: security math digital-signature encryption-asymmetric

如何为elgamal签名方案找到生成器?是否有大多数程序使用的值是好的生成器?或者有没有找到一个主要价值的发电机的方法?如果是这样,怎么样?说素数至少有一个发电机会是真的吗?

3 个答案:

答案 0 :(得分:1)

使用DSA代替ElGamal签名方案。

实施ElGamal可能会犯很多错误。其中一个错误是GregS提出的:使用IKE参数。这些参数是为ElGamal加密生成的,而不是为签名方案生成的。这两种方案有不同的要求。特别是使用g = 2作为生成器是加密的一个很好的选择,但对签名方案来说是一个非常糟糕的选择。 (有关详细信息,请参阅第11章中的“应用密码学手册”http://www.cacr.math.uwaterloo.ca/hac/注11.67)。正确的是随机选择发电机。但再一次,如果您只是使用DSA,那么您可以通过遵循标准来避免这些陷阱。

只是添加一点:OpenPGP http://tools.ietf.org/html/rfc4880用于允许ElGamal签名,但不久前已弃用它们。这种弃用是非常合理的,因为DSA只有优势:它更高效,更安全和标准化。当然,您可以查看旧的PGP实现,但它不会告诉您这些实现是否在没有首先阅读文献的情况下为您提供合理的选择。

答案 1 :(得分:1)

  

如何为elgamal签名方案找到生成器?   是否有大多数程序使用的值是好的生成器?   或者有没有找到一个主要价值的发电机的方法?如果是这样,怎么样?

您可以在Handbook of Applied Cryptography中使用通用的概率算法4.86。你仍然需要从这种算法的输出中清除已知的Elgamal签名不安全的值。至少除以 p-1 (例如2)的任何值和任何其反向除以 p-1 的值。请注意,这些是我今天所知的条件。可能需要对有关该主题的论文进行一些深入的研究。

就个人而言,我不相信现有程序中已经使用的域参数。作者可能没有考虑上述所有条件,加上研究可能突出了自选择以来的新条件。

  

说素数至少有一个发电机会是真的吗?

绝对正确:在模数 p p 是素数)的整数上,乘法组总是至少有一个生成器。它实际上还有更多: phi(phi(p)) phi totient function。但是,并非所有这些对于Elgamal签名方案都是安全的。

答案 2 :(得分:0)

可以看出El Gamal是Diffie Hellman算法的变体,后者的参数可以用于前者。例如,您可以使用RFC 2409中的IKE组1和2,以及其他RFC中使用的较大IKE组。您还可以按照FIPS 186中的讨论生成DSA参数。另请参阅this discussion of primitive roots

编辑:
正如@abc所指出的那样,对于el gamal签名来说这是错误的。按照DSA链接(FIPS 186)。