BRC贝尔链

研究者提出针对BTC弱私钥的点阵攻击方法

教程 2021-07-17 23:4076www.lwtjw.com未知

私钥对密码货币的重要程度不言而喻,在这个世界,每时每刻都有人在打着破解BTC私钥的主意。

其中最暴力的方法,就是通过穷举的方法暴力碰撞BTC私钥,Large Bi总拥有成本in Collider就是如此的一个组织,其用了明显线性的暴力搜索算法,而如此的办法,在量子计算没得到实质性进展前可以说是比较愚蠢的。

而对于已泄露的公钥而言,用平方根离散对数算法,则是恢复这种短私钥的更为好办法,而来自宾夕法尼亚大学的博士后研究员Joachim Breitner和来自加利福尼亚大学计算机科学与工程学院的副教授Nadia Heninger,则联合进行了一项称为《针对密码货币弱ECDSA签名的点阵攻击》的研究。

在这项研究中,大家看到BTC、ETH和瑞波区块链,与HTTPS和SSH中的私钥,会有数种不安全的用方法,因而它们可能会被破解。由此产生的数字并不大,在实验中,研究者共计算出了300多个BTC私钥(余额约为0.00818975 比特币),与30.40 瑞波币,但实验却告诉大家,想要正确用密码货币,其实是一件很棘手的事情,假如你做得不对,那样你非常可能会丢失资金。

当你用ECDSA(椭圆曲线数字签名算法)创建密码学签名时,你需要提出一个256位随机数的nonce。每一次签名时,用不一样的nonce是尤为重要的,不然别的人比较容易能拿到你的签名,并用相对容易的数学计算你的私钥,而有了你的私钥,他们就可以花掉你所有些BTC。事实上,有证据表明:一直有人在监视区块链上是不是存在这种重复的nonce,假如测试到,他们就会计算出相应私钥,并从中提取资金。

这种攻击方法知晓的人并不多,但对于密码学社区而言,这并非什么新的东西,攻击者可以依据用不同,但一样的nonce计算私钥:比如,假如它们彼此挨近(只有低位不同),或者它们的差别正好是2的大幂(只有高位不同)。这用了一种基于点阵(lattices)的强大技术。这篇论文的主要贡献,在于连接了密码学和密码货币,看看这部分漏洞是不是真实存在。

事实上,密码货币当中的确存在如此的漏洞,好在数目并非不少,但它们确实存在着,而且显示是有多个出处。不幸的是,大家非常难找出是哪个做了这部分签名,与用了什么代码,所以大家只能猜测这部分错误是什么原因。很多受影响的签名与多重签名买卖有关,因此,大家觉得,硬件token可能是致使这样的情况是什么原因。

尽管大家没办法确定致使这部分问题的具体达成,但大家仍然可以察看到一些关于它们的有趣细则。最被人好奇的,当然是这个:

其中一组签名是由一个攻击者创建的,其清空了泄露密钥的竞价推广账户(比如那些用弱密码创建的,或以其他方法泄露到网络上的私钥)。

因此,看着非常像攻击者打造了一个监控区块链的程序,其会清空已泄露的竞价推广账户。

3.3 针对ECDSA的基本攻击

假如攻击者知晓了用于生成一个ECDSA签名的每条消息(per-message)的nonce k,则长期密钥d是易于计算的,由于

大家都知道,假如用相同的密钥,将相同的nonce k签署两则不一样的消息h1和h3,那样这个密钥就会泄露。 设为消息哈希h1上生成的签名,(r2,s2)为消息哈希h3上的签名。大家立刻得到r1 = r2,由于r1 = r2 = x。然后大家就可以计算,并恢复如上所述的密钥。

1、简介

ECDSA签名算法的安全性重要,依靠于正确生成用作临时私钥的每一个签名nonce值。大家都知道,假如用ECDSA私钥签署两个具备相同签名nonce的消息,则长期的私钥就比较容易去计算。

然而,重复的nonce值并非唯一可使ECDSA密钥不安全的偏差种类。事实上,ECDSA签名nonce中的任何不同性,假如有足够多签名的话,都可以让私钥暴露。在这篇论文中,大家对从BTC、ETH和瑞波币区块链与ssh和https采集的ECDSA签名进行了基于点阵的密码剖析攻击,并有效地计算了数百个BTC私钥和少量ETH和SSH私钥。

除此之外,大家还发现了很多的BTC、ETH、瑞波币、ssh和https私钥由于重复的签名而泄露了。大家应用的点阵攻击,是基于隐数问题的求解算法。虽然隐藏数问题,在不少密码学文献当中,是基于侧通道攻击用于恢复私钥的一种时尚工具,但据大家所知,大家是第一个察看到这种技术可适用于密码货币的签名。通过这种技术,大家计算了大约300个BTC私钥,共计0.00818975 比特币,与30.40 瑞波币,这部分资金仍然留在原竞价推广账户当中。

对于椭圆曲线离散对数问题,大家用的攻击方法,显然要比幼稚的暴力攻击或最早进的算法要快得多。用像Pollard rho [28]如此的平方根时间算法是可行的,如此大家可对小部分大家发现的64位或128位nonce目的进行有针对性的攻击;而对BTC区块链中大约2^30个签名进行攻击,将需要比大家所获得的多得多的计算资源。相比之下,对于所有区块链,大家的计算总共花费了40年的CPU时间(注:CPU时间即反映CPU全速工作时完成该进程所花费的时间),这部分计算是用Python达成的。

nonce漏洞分为几个类,而这次研究表明大家发现了几个独立的达成漏洞。当所用的nonce要比大家预期要短时,大家第一用隐数问题算法来发现长期ECDSA签名密钥,并用长度为 64位、110位、128位与160位的nonce找到密钥。

道德准则:大家没办法验证这部分漏洞的存在,除非实质计算易受攻击地址的私钥。对于密码货币,这部分密钥可使大家或任何其他攻击者可以盗走关联竞价推广账户中的资金。对于ssh或https,这部分密钥将使大家或任何其他攻击者可以模拟终端主机。大家没如此做,在大家的研究过程中,大家没转移走任何密码货币,或主动攻击大家自己。大家的研究完全是被动的,仅需察看买卖或通用互联网测量。然而,鉴于大家发现一些证据,表明其他攻击者已通过已知漏洞(包括重复的nonce与把私钥在线发布)而清空了有关泄露的密码货币用户竞价推广账户。大家预计,一旦这个缺点被恶意者借助,有关用户就会遭到影响。

大家试图向少数大家能辨别的团队披露这部分缺点,但在大部分状况下,大家没办法向特定的提供商、维护职员或用户披露有关漏洞。

对策。大家在本论文中所讨论的所有攻击,都可以通过用确定性的ECDSA nonce 生成工具来预防,这已经在默认的BTC和ETH库中达成了。

大家需要担忧吗?

大概无需。官方的区块链推广客户端在这方面做得非常不错(至少在这一部分),它们用了正确的随机nonce,所以作为一个用户,你没必要太过担忧。事实上,自2016年以来,BTC推广客户端用了确定性签名(RFC6979)策略,这完全消除去过程中的随机性需要。

假如你用的是非标准库,或者你一个人撰写了密码例程(只有当你有很好的原因时,才应该那样做),那样你应该确保它们用了RFC6979(关于这一话题,比太钱包团队在2014年就发过一篇文章《分分钟搞懂 RFC6979》)。这在嵌入式设施或或硬件token上更为要紧,由于非常难找到随机性的好出处。

3.1密码货币中的ECDSA

BTC ,ETH 和瑞波都是用的椭圆曲线secp256k1。

BTC地址是通过用sha-256和RIPEMD-160算法反复哈希未压缩或压缩的ECDSA公钥,从而生成地址的。

而ETH地址是未压缩ECDSA公钥的Keccak-256哈希的最后20个字节,其中Keccak-256算法是SHA-3算法的一个早期版本。ETH公钥并不清楚地随签名一块提供,相反,签名包含一个额外的字节 v,其允许从签名中派生公钥。

瑞波地址是通过SHA-256和RIPEMD-160算法反复哈希压缩公钥而来的,并连接哈希的各个部分。

为了论文剖析目的,在以上这部分密码货币当中,只有在地址签名一笔买卖之后,才会显示出ECDSA公钥。

通过签名,BTC和瑞波会明确显示未压缩或压缩格式的ECDSA公钥;而在ETH中,推广客户端需要用密钥恢复从签名本身派生出公钥。

ECDSA签名用于对一笔买卖的发送方进行身份验证。地址可以是单个签名的,其对应于单个公钥,也可以是多签名地址,这部分地址需要n个公钥集当中至少k个公钥的有效签名,如此才能完成一笔买卖。一般用户在进行每一笔买卖时,应用新的地址。

签名规范化。ECDSA签名具备签名和 的属性,其将用相同的公钥进行验证。2015年十月份,BTC在签名过程中引入了一种变化,即在签名中用s和−s mod n的较小值,以使签名具备唯一性。ETH和瑞波也进行了这类的签名规范化,这会干扰到大家的攻击。

以下是论文的部分译文:

标题:针对密码货币弱ECDSA签名的点阵攻击(Lattice Attacks

作者:Joachim Breitner 和 Nadia Heninger

所在机构 :DFINITY Foundation, Zug, joachim@dfinity.org 加州大学(UC), San Diego, nadiah@cs.ucsd.edu

摘要。在这篇论文中,大家对包含在公链和网络扫描的数字签名进行密码剖析攻击,由此计算出了数百个BTC私钥,与数十个ETH、Ripple/XRP、SSH与HTTPS私钥。ECDSA签名算法需要生成每一个消息的秘密nonce。这个nonce需要完全一致地生成,不然攻击者可借助nonce偏差计算长期签名密钥。大家用一种基于点阵(lattice-based)的算法来解决隐藏数问题,以有效地计算因为多个明显的达成漏洞,而与有偏差的签名nonce一块用的私有ECDSA密钥。

出处:巴比特

4、针对ECDSA的点阵攻击

在随机modulo n上,签名nonce k 也需要完全一致地生成,不然,可用解决隐数问题的技术,来求解密钥d 。

关于具体攻击讲解,请看原论文。

后记:对于密码货币持有者而言,最为要紧的,就是学会安全的保管方法与私钥生成方法,选择好的钱包会是尤为重要的,官方钱包虽然“笨重”,但相对来讲是更安全的。

2、有关的工作

隐藏数问题和ECDSA。隐藏数问题,与大家用来解决它的基于点阵的算法,是由Boneh和Venkatesan提出的,他们用它来证明计算Diffie-Hellman非常重要位的困难。

Howgrave Graham、Smart[19]、Nguyen与Shparlinski [26]应用了隐藏数问题,来显示假如攻击者可以学习一些目前非常重要的签名nonce位,则DSA和ECDSA签名策略是不安全的。从那时起,这种技术在实践中被应用于侧通道攻击。

重复的DSA/ECDSA签名。不少研究工作已检查到DSA和ECDSA当中因为重复签名nonce而存在的漏洞。Heninger、Durumeric、Wustrow和Halderman在2012年通过从SSH handshakes搜索重复的DSA签名nonce,使得1%的SSH主机密钥被暴露。他们把问题主要追溯到低资源设施上随机数生成的达成漏洞。

Bos, Halderman, Heninger, Moore, Naehrig和 Wustrow [7] 在2013年记录了BTC区块链中重复出现的nonce,以此作为关于椭圆曲线密码技术应用更广泛研究的一部分。Valsorda在2014年研究了重复的BTCnonce。Courtois, Emirdag与 Valsorda 在2014年研究了重复的BTCnonce,并指出其大概对密钥产生威胁。Castellucci 和 Valsorda在2016年研究了重复nonce与弱密钥变体,与BTC密钥当中存在的重复nonce。Brengel和Rosow在2018年研究了来自同一密钥签名中的重复nonce,并在BTC区块链中不同密钥签名之间链接了泄露的nonce。

密码货币中的密钥生成问题。在2013年,AndroidSecureRandom的一个主要漏洞,被指责是致使不少BTCAndroid钱包用户失窃是什么原因,这是由错误的随机数生成器生成了重复的ECDSA签名nonce所致。2015年,Blockchain.info的Android应用,被发现生成了重复的私钥,由于该应用的种子是从random.org导出的,而该网站当时出现了403问题,并重定向到他们几个月前的https URL 。

针对密码货币的密码剖析。大型BTC对撞机(The Large 比特币 Collider)是一个针对BTC私钥的暴力搜索项目,其用了明显线性的暴力搜索算法,并最多搜索到54位的密钥。对于已泄露的公钥而言,用平方根离散对数算法 [28,34]是恢复这种短私钥的更为好办法,但现在大家还没看到有人在做这方面的尝试。

3、椭圆曲线数字签名算法(ECDSA)

椭圆曲线数字签名的公共域参数包括有限域上的椭圆曲线E,和E上n阶的基点G。私有签名密钥是整数d modulo n,而公共签名验证密钥是点Q = dG。椭圆曲线公钥可通过提供公共点Q的x和y坐标来表示未压缩形式,也可以通过仅提供x坐标和y值的单个奇偶校验位来表示为压缩形式。

要对消息哈希h进行签名,签名者选择每一个消息的随机整数k modulo n,计算

上一篇:区块链安全怎么才能得到全方位保护? 下一篇:没有了

贝尔链行情_BRC最新价格_贝尔链历史行情价格走势图-BRC贝尔链 Copyright © 2002-2021 BRC贝尔链 (http://www.hongkongfsdl.com) 网站地图 TAG标签 备案号