Greg Maxwell:CSW再次伪造中本聪签名

2018-11-19 15:09 栏目:经验之谈 来源: 查看()

在BCH Power War的第二天,一些加密货币爱好者在第9块比特币上发现了一条似乎有“有效签名”的消息,警告比特币区块链是孤立的。 Witness(Segwit)协议存在一些问题。此外,Coingeek的所有者Ca高仿lvin Ayre后来在Twitter上发布了“中本还活着!”而Ayre也转发了来自Twitter账号@Satoshi的消息。

Greg Maxwell:CSW再次伪造中本聪签名

它真的来自Nakamoto吗?不久比特币技术神Greg Maxwell解释说这实际上是Craig Wright的第二个伪造签名:

“如果有人想发布一堆神秘的ECDSA签名,那么公众认为这些签名来自比特币的创造者,摧毁比特币市场,从人们那里榨取钱财,或以其他方式说服人们听他说话。他们怎么能实现它?“

麦克斯韦回答说:“不幸的是,鉴于公众对密码学的了解有限,这显然是一种欺诈行为。

他们的关键技能是非技术人员倾向于相信看似麻烦的事情,技术人员倾向于认为他们比实际知道得多,所以他们很容易陷入杂草。

在密码系统中,细节比你想象的更重要,所以你要做的就是做一个稍微修改过的密码系统。然后许多认为他们理解ECDSA运作的人会急切地宣称结果是真的。

您可以想到的大多数更改都足以使程序不安全。

因此,例如,几年前,Craig Wright通过简单地从区块链中复制一些预先存在的签名并在验证它们时发出一些令人困惑的指示来证明自己是Nakamoto。然而,这件事很快暴露出来,但这种方法仍然愚弄了许多陷入困境的人并且理所当然地认为事实是这样的。在这种情况下,“修改”是诈骗者声称签名的消息,与实际签名消息无关。

最近,他似乎再次尝试,但这次“签名”并非来自区块链......导致一些BCH客户开发人员“验证”RedHat的工程师。但事实证明,这个签名仍然是伪造的,人们对密码学的理解还不够深入,导致他们再次被欺骗。

正如比特币开发者Pieter Wuille所说,“ECDSA签名消息不是哈希,但'签名者'选择的选择是不安全的。”

Greg Maxwell:CSW再次伪造中本聪签名

这一次,诈骗者发布了'hash',r,s元组。 ECDSA的哈希部分是算法中无法到达的部分。如果验证程序本身不运行哈希,则不会建立ECDSA的安全属性,并且伪造将变得可以忽略不计。

[同样的漏洞也被带到了BCH中的原始OP_DSV操作码,它最初没有对输入数据进行散列,而是留给了用户。但我报告了它,开发人员似乎在部署之前修复了它。 ]

如果验证器本身不执行散列,但仅接受签名者给出的值,则给定公钥P,选择随机非零值a和b。计算R=aG + bP。现在,(R.x,R.x/b)是“消息散列”(R.x * a/b)的密钥P的有效签名。

这不会影响真实ECDSA的安全性,因为您无法找到散列到所选(R.x * a/b)值的消息。

人们应该警惕模糊或过于技术性的“证据”(那些看起来像“安全系统”,但由于某种原因,人们使用原始数字或代码来验证它)。精心设计的加密软件,由于大量的工作,可以避免让用户被这些特技愚弄。这些事情很棘手,如果他们确信他们正在有效地实现自定义密码系统,任何人都会感到困惑并接受这个错误的证据。系统不安全,只是因为你自己对它不了解。

这是一个示例Sage脚本,用于生成假签名,欺骗接受ECDSA“签名”的人,而不必散列他们自己的消息。它适用于任何EC密钥,包括伪造者以前从未见过的签名。
F=有限域(0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC2F)
C=EllipticCurve([F(0),F(7)])
G=C.lift_x(0x79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798)
N=有限域(C.order())
P=P=-C.lift_x(0x11db93e1dcdb8a016b49840f8c53bc1eb68a382e97b1482ecad7b148a6909a5c)#block 9 coinbase支付键。
Def forge(c,a=-1): #创建伪造的'ECDSA' (无散列)签名
 #将a设置为-1以外的其他值为o高仿bvious
  a=N(a)
  R=c * G + int(a)* P
  s=N(int(R.xy()[0]))/a
  m=N(c)* N(int(R.xy()[0]))/a
  print'hash1=%d'%m
  print'r1=%d'%(int(R.xy()[0]))
  print's1=%d'%s 
对于c范围(1,10):
 伪造(c)
此代码生成一个最近欺骗了人们的虚假签名:

哈希1=25292222169426362969760742810503101183086560848420849767135309758511048414376
R1=61518691557461623794232686914770715342344584505217074682876722883231084084339701
S1=54273397679854571629338298093917192510492979773857829699699728440258287077154636

你怎么看?


微信二维码
售前客服二维码

文章均源于网络收集编辑侵删

提示:仅接受技术开发咨询!

郑重申明:资讯文章为网络收集整理,官方公告以外的资讯内容与本站无关!
NFT开发,NFT交易所开发,DAPP开发 Keywords: NFT开发 NFT交易所开发 DAPP开发