IOTA视频教程-6:为什么不能重用地址发送输出交易

 

数字签名

  • 数字签名用来作为认证,完整性检查和不可否认性。
  • 量子计算机的发展威胁到目前所使用的数字签名算法,比如RSA, 椭圆曲线数字签名算法 (ECDSA)。
  • 密码学家开发了大量具有前景的抵抗量子计算机的替代算法,即基于哈希的签名算法
  • 基于哈希的签名就是所谓的一次性签名(OTS)。这意味着单个 公/私钥对只能使用一次,否则,攻击者可以揭示私钥的更多部分,并且进行伪造签名。

Lamport 一次性签名方案

  • 1979年,Leslie Lamport创建了一种方法来构建数字签名,即仅使用安全加密的单向散列函数。
  • 这种方法被称之为 Lamport 签名,或者 Lamport OTS 一次性签名方法。
  • 其他的一次性签名方法有 Merkle OTS, Winternitz OTS
  • Lamport OTS 很容易理解,而且相对于 Winternitz OTS更宽松。
  • 为简单起见,使用Lamport OTS来解释为什么IOTA地址不能多次用于发送输出交易。
  • 假设Alice通过随机数发生器产生得到两组 256个随机数,总共512个随机数,每个随机数256bits。这些随机数构成了私钥。

IOTA视频教程-6:为什么不能重用地址发送输出交易

  • 512个随机数中的每一个分别单独进行哈希计算,比如使用 SHA256函数。这些经过哈希计算的随机数组成公钥。

IOTA视频教程-6:为什么不能重用地址发送输出交易

  • Alice对一个文件采用 SHA256函数进行哈希计算,得到256bits长的哈希摘要。
  • Alice采用如下方法对这个文档进行数字签名: 对 256bits的 hash中的每个bit(n)循环,如果这个bit的值是0, 则发布第0对中的第n个数,如果这个bit的值是1,则发布第1对中的第n个数。所有bits循环结束后,去除掉这两组数中没有使用到的数。
  • 这样得到一个256个随机数的序列,即数字签名。

IOTA视频教程-6:为什么不能重用地址发送输出交易

  • 数字签名创建以后,删除所有没有用到的私钥,这时候数字签名中包含有一半的私钥,但是其他256个随机数仍然是未知的,因此没有人能够创建其他消息摘要的签名。

IOTA视频教程-6:为什么不能重用地址发送输出交易

  • Alice向Bob发送了她的文件,并且提供了对应的数字签名和公钥。

IOTA视频教程-6:为什么不能重用地址发送输出交易

  • Bob验证Alice的文件签名: 首先他对文档进行SHA256哈希运算,同样得到文件的Hash值;然后Bob采用Alice创建数字签名同样的步骤,只是使用其公钥。

IOTA视频教程-6:为什么不能重用地址发送输出交易

  • Bob从Alice的公钥中得到256位hash序列
  • Bob然后对数字签名中的每一位进行hash计算,也得到一个256位hash序列
  • 如果这两个序列是一致的,那么签名就是正确的。

IOTA视频教程-6:为什么不能重用地址发送输出交易

  • Lamport一次性签名得到的数字签名会暴露私钥的一部分
  • 512个随机数的私钥,使用一次就会暴露256个数字
  • 使用私钥两次,就使得私钥安全程度减弱一半。因此,攻击者可以成功伪造签名的概率就从 1/2^256上升到1/2^128
  • 使用相同的私钥三次签名后,成功伪造签名的概率进一步增加到1/2^64, 第四次使用相同的私钥签名后,伪造签名成功的概率就增加到1/2^32。
  • 当然,请注意到IOTA中的签名方法是基于 Winternitz 的一次性签名算法,跟Lamport签名方法是有区别的。
  • 通过Lamport的一次性签名方法,可以简单的理解为什么IOTA地址不能重用进行发送输出交易。
Jimmy Xiong

专栏作者:Jimmy Xiong

个人简介:研究者,布道者,投资人,IEN成员,IOTAChina创办人。

作者邮箱 作者主页 Ta的文章

发表评论

邮箱地址不会被公开。 必填项已用*标注