3

如何找到 elgamal 签名方案的生成器?大多数程序使用的值是否是好的生成器?或者有没有办法找到一个生成素值的生成器?如果是这样,如何?说素数至少有 1 个生成器是真的吗?

4

3 回答 3

1

使用 DSA 而不是 ElGamal 签名方案。

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

再补充一点:OpenPGP https://www.rfc-editor.org/rfc/rfc4880曾经允许 ElGamal 签名,但前段时间已弃用它们。这种弃用是相当合理的,因为 DSA 只有优点:它更高效、更安全和更标准化。当然,您可以查看旧的 PGP 实现,但如果不先阅读文献,它不会告诉您这些实现是否给您合理的选择。

于 2010-12-22T14:20:21.670 回答
1

如何找到 elgamal 签名方案的生成器?大多数程序使用的值是否是好的生成器?或者有没有办法找到一个生成素值的生成器?如果是这样,如何?

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

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

说素数至少有 1 个生成器是真的吗?

绝对正确:整数模p上的乘法群总是至少有一个生成器(p是素数)。它实际上还有更多:phi(phi(p)),其中phi全部功能。不过,并非所有这些对于 Elgamal 签名方案都是安全的。

于 2012-04-19T07:00:37.533 回答
0

El Gamal 可以看作是 Diffie Hellman 算法的变体,后者的参数可以用于前者。因此,例如,您可以使用RFC 2409中的 IKE 组 1 和 2 ,以及散布在其他 RFC 中的更大的 IKE 组。您还可以按照FIPS 186中的讨论生成 DSA 参数。另外,请参见原始根的讨论

编辑:
正如@a​​bc 所指出的,这对于 el gamal 签名是错误的。按照 DSA 链接 (FIPS 186)。

于 2010-12-22T12:14:53.927 回答