【问题标题】:finding a generator for elgamal寻找 elgamal 的发电机
【发布时间】:2011-05-29 05:49:20
【问题描述】:

如何为 elgamal 签名方案找到生成器?大多数生成器的程序都使用了哪些值?还是有一种方法可以找到素值的生成器?如果是这样,怎么做?说素数至少有 1 个生成器是真的吗?

【问题讨论】:

  • 这个问题更适合 Cryptography Exchange。问题标题还应提及“签名”(因为也存在 Elgamal 加密)。

标签: security math digital-signature encryption-asymmetric


【解决方案1】:

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)。

【讨论】:

  • 那是错误的。 OP询问签名方案而不是加密。
【解决方案2】:

使用 DSA 代替 ElGamal 签名方案。

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

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

【讨论】:

  • 我已经写过DSA了。我并不是真的想弄清楚这一点来实现它。相反,我这样做是为了学习
【解决方案3】:

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 2022-01-20
    • 2013-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多