区块链信息安全事件分析
事件背景
近日,Blockchain.info平台遭受了多轮网络攻击,包括恶意Tor节点的HTTPS重定向攻击和网络钓鱼尝试。2014年12月8日GMT时间凌晨0点至2点30分期间,Blockchain.info团队在进行定期更新时出现了一个安全漏洞。
比特币交易机制解析
比特币交易由输入和输出两部分组成。交易输入是对另一笔交易输出的引用,一笔交易中可能包含多个输入。被引用输出的总值将用于本笔交易的输出部分。具体而言,交易输入包含以下要素:
- 前交易哈希(Previous tx):引用交易的前一笔交易哈希值
- 索引(Index):引用交易中的具体输出索引
- 脚本签名(ScriptSig):脚本的前半部分,包含签名和公钥
交易输出则包含比特币发送指令:
- 价值(Value):以Satoshi为单位的输出值(1 BTC = 100,000,000 Satoshi)
- 公钥脚本(ScriptPubKey):脚本的后半部分
脚本本质上是一组指令列表,记录了每笔交易的详细信息,描述了下一个想要花费这些比特币的人如何获得访问权限。
安全漏洞分析
2013年12月25日,Nils Schneider发现某些比特币实现存在潜在的安全漏洞。他通过一个交易示例说明了这个问题:
在包含两个输入的交易中,脚本的开头和结尾存在大量相似字节。由于脚本开头是签名(r,s),当r1 = r2时,就会出现重复的R值。由于这些R值相等,Schneider找到了一种恢复公钥对应私钥的方法。
该漏洞的根源在于:重复的R值来自于一个生成不当的"随机"数。Blockchain.info在生成找零地址和用户主地址时使用了不当的随机种子,导致了这一安全问题。
事件处理
Blockchain.info对此事件承担全部责任,并对在此期间丢失比特币的用户进行赔偿。如果用户在此期间遭受损失,可通过官方邮件联系平台处理相关事宜。