曲速未来 揭示:不随机播放的索尼PS3和比特币密码破解区块链
曲速未来表示:最昂贵的黑客是什么?赎金?恶意软件?不!许多专家认为这是信任基础设施一个组织的私钥被泄露的地方。然后,这可能会危及这些密钥签名的所有内容,包括文档和可执行文件。
区块链安全咨询公司 曲速未来 表示:最昂贵的黑客是什么?赎金?恶意软件?不!许多专家认为这是信任基础设施一个组织的私钥被泄露的地方。然后,这可能会危及这些密钥签名的所有内容,包括文档和可执行文件。
想象一下微软的私钥被黑了,然后就不能相信任何由这些密钥签名的软件(或硬件)。入侵者可以创建自己的软件(或硬件),然后用有效的密钥对其进行签名。必须大规模撤销软件和硬件,几乎所有与微软私钥相关的东西都必须重新安装。
因此,入侵者可以重新创建由可信私钥正确签名的软件。这些私钥通常是公司内部人士偷来的,但在有些情况下,草率的编码为世界打开了钥匙。这种情况发生在ECDSA的情况下,开发人员没有检查他们生成的随机数。
索尼PS3黑客
2010年,黑客组织Fail0Overflow证明了他们可以破坏索尼PS3的安全方法。他们实现了重新创建索尼的私钥,然后打破了管理程序和签名的可执行文件上的签名。
核心问题与在签名处理(ECDSA)中使用的随机因素的产生缺乏随机性有关。他们通过逆转签名的公钥来提供私钥来做到这一点。事实上,不涉及实际的随机化,每次签名的种子值保持不变。
签名值(R,S)使用随机值k,以确保同一私钥和同一消息的值将有所不同。不幸的是,索尼的开发者并没有随机化它。
利用ECDSA,我们为椭圆曲线(a和b)选择了一个大素数(P)和两个参数。接下来,我们选择一个素数(N),用来限制0到n-1之间的值。首先,我们在椭圆曲线(G)上选取一个点,然后计算:
p,a,b,G,n和Y的参数是公共的,私有部分是x(私钥),公钥是Y。接下来,我们用一个随机生成值(K)并对电文进行散列(M):
请注意,ₓ标识x-协调。
然后,消息的签名对为(r,s)。下面是一个带有“Hello”消息的示例运行:
然后,就可以用以下方式验证签名:
(A)计算消息(M)的散列。
(B)计算w=s{−1}(Mod N),u1=M·w(Mod N),u2=r·w(Mod N)
(C)计算曲线上的点(x1,y1):=U1×G U2×Y
(D)然后我们检查r≡x1(Mod N)。如果为真,则验证签名。
不幸的是,索尼没有为每个签名生成k值,总是使用4作为k的值。如果对两个不同的文档使用相同的k值,EVE可以找到私钥,从而产生伪造签名。
而且,知道了这两条信息就可以确定k。由此可以计算私钥(X)。
如果知道M(消息)、r、s和k(所使用的随机值),那么就可以从以下位置确定私钥(X):
X=(H(M) kr)/s(Mod P)
如果我们知道M,r,s和私钥(X),我们可以确定所使用的随机值(K):
K=(SX-H(M)/r(Mod P)
比特币黑客
另一个震惊发生在2012年的比特币黑客攻击,这再次打破了ECDSA随机数发生器的缺陷。在比特币中,如果Alice(A)将比特币发送给Bob(B),则使用Alice的私钥创建以前交易的数字签名。然后把Bob的公钥添加到事务中。然后定义事务的验证,从上一个事务获取公钥并检查签名。
Nils Schneider于2013年首次发现了该缺陷,他发现以下r值出现了50倍以上:
并被标识为由同一用户在两个事务中使用(因此具有相同的私钥)。这意味着使用的是相同的随机数。在Hack[1]中有两个输入和一个输出:
可以注意到,输入的起始字节是相同的,这些字节标识签名(r,s):
可以看出,这两个签名值(R1和R2)是相同的。这是因为在Android上JavaSecureRandomclass中的Java bug上,并且它没有生成安全的随机数。例如,以下两个事务具有相同的r值:
然后,2013年12月28日,Nadia Heninger报告说,由于这一漏洞,59 BTC被盗[1 HKywxiL4JziqXrzLKhmB6a74ma6kxbSDj]:
黑客的收益最终在2017年8月左右被转移。
结论
区块链安全咨询公司 曲速未来 告诫:要始终使用签名的随机数。在ECDSA中的签名组合中添加了一个随机值,这将改变签名。不幸的是,如果不正确地生成随机数,则会大大削弱签名,从而暴露私钥。一种改进的方法是EdDSA(Edwards-曲线数字签名算法),并使用扭曲的Edwards曲线增强Schnorr签名创建数字签名,它的核心优势在于它的安全性不是建立在产生强随机数的基础上的。
1.TMT观察网遵循行业规范,任何转载的稿件都会明确标注作者和来源;
2.TMT观察网的原创文章,请转载时务必注明文章作者和"来源:TMT观察网",不尊重原创的行为TMT观察网或将追究责任;
3.作者投稿可能会经TMT观察网编辑修改或补充。