比特币延展性攻击
2017-12-05 16:29
127 查看
1. 什么是延展性(Malleability,可鍛性):“延展性”指的是“在材质本身无损的前提下,可以通过外力改变为特定形状”的性质。
显而易见,黄金是具有延展性的。由于真实性比较容易验证,因而无论形状如何改变,只要验证了含金量相同,那么可以认为其价值相同。
比特币的交易(TXID)也具有延展性:比特币系统通过数字签名来认证所有者的权益,从而模拟了黄金的某些特性(几乎无法伪造)。只要保护好私钥,签名了交易后,其他人无法伪造或篡改交易的实质内容(比如,收款地址和收款金额)。但是,交易的标识(TXID)——含有数字签名脚本的交易的哈希值——有方法可以改变。
严格来说,并不是比特币的交易具有延展性,而是模拟黄金属性的”数字签名“具有延展性——可以改变”数字签名“的外观,而不影响数字签名的效力。这是如何实现的呢?
”数字签名“实质上是一个比较复杂数学计算——有限域下的加法和数乘运算。输入和输出实际上都是一些非常大的整数。在数学计算中,整数最高位前面的”0“是可以忽略的,比如 “100” 和 “0100”等价,然而这两种表示形式的哈希值不一样。另外,有限域下涉及到模运算,不如模为7的有限域下,4和11是等价的,但显然这两个数的哈希值也不同。
也就是说,具有在数学运算上等价的数字签名,可以存在多种输出格式,这就使得“数字签名”具有了延展性。
由于生成比特币的交易标识(TXID)的哈希运算中包含了数字签名脚本,所以比特币的交易也同样就具有了延展性。
2. 交易延展性攻击:
交易延展性攻击的对象一般是交易所(有人工客服)。因为延展性攻击无法篡改交易的实质内容,只要交易广播出去了,因为签名有效,最终还是会被确认的,因而黑客无法直接靠交易延展性攻击来获利。但是通过策划,可以有这样一种方式:
先了解某一交易所外联的节点主要有那些,DDOS瘫痪掉它们并伪造出一些节点和交易所的节点进行通讯。同时向交易所发起提币请求。当自己的节点侦测到交易所转给自己的交易(此时拿到了交易所的数字签名了)时,先扣留这些交易不对外广播,或是利用交易可锻性修改TXID,然后向人工客服投诉,声称款项未到帐。如果交易所在技术实现上存在漏洞,仅根据TXID来检索对应交易,此时可能会误以为发送失败,可能通过人工方式又重发一遍(很可能使用了其他UTXO)。黑客在受到第二份交易数据后,把两笔交易向全网广播,这样就收到两份钱。
3. 防范:
一是当使用TXID查找不到对应的交易时,需要用TXIN_OUTPOINT再查一下;
二是如果确实需要重发,引用的UTXO一定要与原来保持一致,把这种麻烦事儿交给比特币网络来处,系统规则确保了最终只会确认其中的一个(不会出现双花)。
显而易见,黄金是具有延展性的。由于真实性比较容易验证,因而无论形状如何改变,只要验证了含金量相同,那么可以认为其价值相同。
比特币的交易(TXID)也具有延展性:比特币系统通过数字签名来认证所有者的权益,从而模拟了黄金的某些特性(几乎无法伪造)。只要保护好私钥,签名了交易后,其他人无法伪造或篡改交易的实质内容(比如,收款地址和收款金额)。但是,交易的标识(TXID)——含有数字签名脚本的交易的哈希值——有方法可以改变。
严格来说,并不是比特币的交易具有延展性,而是模拟黄金属性的”数字签名“具有延展性——可以改变”数字签名“的外观,而不影响数字签名的效力。这是如何实现的呢?
”数字签名“实质上是一个比较复杂数学计算——有限域下的加法和数乘运算。输入和输出实际上都是一些非常大的整数。在数学计算中,整数最高位前面的”0“是可以忽略的,比如 “100” 和 “0100”等价,然而这两种表示形式的哈希值不一样。另外,有限域下涉及到模运算,不如模为7的有限域下,4和11是等价的,但显然这两个数的哈希值也不同。
也就是说,具有在数学运算上等价的数字签名,可以存在多种输出格式,这就使得“数字签名”具有了延展性。
由于生成比特币的交易标识(TXID)的哈希运算中包含了数字签名脚本,所以比特币的交易也同样就具有了延展性。
2. 交易延展性攻击:
交易延展性攻击的对象一般是交易所(有人工客服)。因为延展性攻击无法篡改交易的实质内容,只要交易广播出去了,因为签名有效,最终还是会被确认的,因而黑客无法直接靠交易延展性攻击来获利。但是通过策划,可以有这样一种方式:
先了解某一交易所外联的节点主要有那些,DDOS瘫痪掉它们并伪造出一些节点和交易所的节点进行通讯。同时向交易所发起提币请求。当自己的节点侦测到交易所转给自己的交易(此时拿到了交易所的数字签名了)时,先扣留这些交易不对外广播,或是利用交易可锻性修改TXID,然后向人工客服投诉,声称款项未到帐。如果交易所在技术实现上存在漏洞,仅根据TXID来检索对应交易,此时可能会误以为发送失败,可能通过人工方式又重发一遍(很可能使用了其他UTXO)。黑客在受到第二份交易数据后,把两笔交易向全网广播,这样就收到两份钱。
3. 防范:
一是当使用TXID查找不到对应的交易时,需要用TXIN_OUTPOINT再查一下;
二是如果确实需要重发,引用的UTXO一定要与原来保持一致,把这种麻烦事儿交给比特币网络来处,系统规则确保了最终只会确认其中的一个(不会出现双花)。
相关文章推荐
- 致 BitClub 矿池,你们为什么要对比特币网络发动交易延展性攻击?
- 防火墙入站规则防护方程式攻击-比特币勒索
- 比特币勒索攻击技术演进与趋势
- 【红色警报】近期Oracle数据库遭受比特币勒索攻击原因揭秘和预防
- 比特币中交易延展性问题
- 什么是比特币51%攻击
- 什么是比特币51%攻击
- 以太坊和山寨币开发过程中交易延展性攻击原理
- oracle数据库遭遇比特币攻击
- 俄罗斯黑客攻击了我的服务器:我变成了一名比特币挖矿工
- 如何避免比特币等数字货币平台被攻击?极验已有成熟解决方案
- 交易延展性攻击原理(防止自己被攻击)
- 比特币攻击案例重现江湖
- 【阿里聚安全·安全周刊】盘点2017年9大银行木马趋势|比特币钱包APP受到攻击
- 比特币勒索攻击技术演进与趋势
- 精通比特币 - 第9章 区块链分叉、矿池、共识攻击
- 首张“微信身份证”签发;阿里调查网络谣言攻击事件;比特币重返1.6万美元关口丨价值早报
- 'Shadow Brokers' 组织100万比特币(5.68亿美元)叫卖美国军方网络攻击工具
- 交易延展性攻击原理(防止自己被攻击)
- 10月第3周安全回顾 中小企业易受攻击 RealPlayer现漏洞