什么是 Winternitz 一次性签名方案?


Winternitz 一次性签名方案

Robert Winternitz 提出了 W-OTS 方法。由于它使用适中的密钥和签名大小,因此被认为是量子安全的。

  • 它总共生成 32 个 256 位随机私钥。

  • 然后我们多次执行此操作,并且使用一个参数 (W) 来定义它们。

  • 我们可以使用 W = 8(2W) 对私钥进行哈希。

  • 它生成长度为 32 个 256 位的公钥。

  • 签名是通过一次取 8 位,从 256 中减去 8 位二进制整数 (n),然后对私钥进行 256 次哈希来形成的。

  • 此后,签名由从随机私钥创建的 32 个哈希组成。

它是如何工作的?

过程如下:

  • 我们首先生成 32 个 256 位的随机数。我们的私钥将由这 32 个值组成。

  • 然后对这些值中的每一个进行 256 次哈希。我们的公钥将由这 32 个值组成。

  • 现在,我们将使用 SHA-256 对消息进行哈希。这将产生 32 个 8 位值 (N1, N2,..., N32)。

  • 对于签名,我们将消息哈希中的每个 8 位值进行 256-N 次哈希(其中 N 是 8 位值的数值)。

  • 使用 SHA-256 对消息进行哈希,并且每个 8 位值都用于证明签名。消息哈希值指定 8 位签名值哈希的次数 (N1N2)... 每个操作的结果应与公钥值相同。

密钥生成

  • 需要生成一对密钥,一个私钥和一个公钥

  • 使用随机数生成器,生成 32 个 256 位随机数以创建私钥。

  • 对这 32 个数字中的每一个进行 256 次哈希以获得另一组 32 个 256 位数字作为公钥。公钥可供任何人使用。

签名生成

  • SHA 256 用于对消息进行哈希,生成 256 位摘要。此哈希被分解为 32 个 8 位值 (N1N2N3...N32)。

  • 256-N 次哈希每个 8 位值,其中 N 是 8 位值的数值。例如,如果 N1 是一个 8 位数字 10001000 = 136,则 N1 将被哈希 256 - 136 = 120 次。对每个 8 位值执行此操作后,将创建数字签名。

签名验证

  • SHA-256 用于从消息生成 32 个 8 位值 (N1N2N3...N32) 的摘要。

  • 然后根据消息哈希值 (N1N2N3...N32) 指定的次数对签名值进行哈希。

  • 然后将签名与公钥进行比较,如果两者匹配,则签名被视为合法。

更新于: 2021 年 11 月 5 日

457 次查看

启动你的 职业生涯

通过完成课程获得认证

开始
广告