二维码

9.5 重放攻击:交易延展性 - 数据结构 - 机器学习

1113 人阅读 | 时间:2021年01月15日 01:05
9.5 重放攻击:交易延展性 - 数据结构 - 机器学习 #daohang ul li t,.reed .riqi,a.shangg,a.xiatt,a.shangg:hover,a.xiatt:hover,a.shang,a.xiat,a.shang:hover,a.xiat:hover,.reed-pinglun-anniu,span.now-page,#daohangs-around,#caidan-tubiao,#daohangs,#daohangs li,#btnPost{background-color:#D10B04;} .dinglanyou1 h3{border-bottom:3px solid #D10B04;} #dibuer{border-top:2px solid #D10B04;}.cebianlan .rongqi h3{border-bottom:1px solid #D10B04;} #edtSearch{border:1px solid #D10B04;} #daohang .zuo ul li{border-right:1px solid #;} #daohang ul li t a{border-top:1px solid #;border-right:1px solid #D10B04;} #daohang ul li t a:hover{border-right:1px solid #;} #daohang .you ul li a:hover,#daohang .zuo ul li a:hover,.reed-pinglun-anniu:hover{background-color:#;} a:hover,.reed h6 a:hover,#dibuer a:hover,.reed .riqiding,.cebianlan .rongqi li a:hover,#pinglun-liebiao ul.fubens li.depth-1 dl dd span.shu a,#pinglun-liebiao ul.fubens li.depth-1 dl dd span.huifuliuyan a:hover,.reed-biaoti h6 span{color:#D10B04;} .reed .kan a{color:#0A0AF5;}.reed .kan a:hover{color:#D10101;} @media screen and (max-width:1492px){a.shang,a.xiat{background:none;} a.xiat:hover,a.shang:hover{background-color:#f9f9f9;background-image:none;text-decoration:none;}} var _hmt = _hmt || [];(function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?b19db5ba3b437a9e8698d2bc8fc64334"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s);})(); var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?b19db5ba3b437a9e8698d2bc8fc64334"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?2d748c9763cfc72fb7d1ccab29f0770d"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?f6d451f3f1be23f3abf240c64c469c1b"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })();

当前位置:首页 » 区块链精品文章 » 正文

(function() { var s = "_" + Math.random().toString(36).slice(2); document.write('
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646201", container: s }); })();
(function() { var s = "_" + Math.random().toString(36).slice(2); document.write('
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646162", container: s }); })();

9.5 重放攻击:交易延展性

1432 人参与  2018年08月22日 23:23  分类 : 区块链精品文章  评论

先解释下什么叫重放攻击(Replay Attack),顾名思义,重放就是重复播放的意思,因此又称为重播攻击或回放攻击,具体是指攻击者发送一个目的主机已接收过的数据包,来达到欺骗系统的目的。我们来举个例子。

Alice家里安装了一个语音识别的安全门,每次回家的时候Alice只要对着门口说一句:“开门开门,我是 Alice。”这样门就会打开,自从安装了这样一个门以后,Bob再也没法偷偷拿Alice的钥匙去她家了(根本就用不着钥匙啊)。这可怎么办呢?于是 Bob偷偷躲在了Alice门口的角落里,等Alice回家时,用录音笔录下了Alice的语音口令,等下次Bob再到Alice家的时候,就播放这段语 音口令,门就能打开了(欺骗了门的识别系统,系统误以为是Alice的语音口令)。这就是重放攻击的意思了,合法的主人是使用什么样的通信口令来进行身份 认证的,攻击者截获这段通信口令,然后原样的发送给系统,从而欺骗了系统的验证。

9.5 重放攻击:交易延展性 - 数据结构 - 机器学习

那么什么叫交易延展性呢(Transaction Malleability)?延展性是一个形象的称呼。我们知道,在自然界中,有些材料可以经过各种拉伸、锻造来改变形状,但是不会改变材质和质量,比如 黄金白银,历史上我们都曾经使用过这两者作为货币,无论是整块的黄金白银还是碎银子碎金子,无论是打造成元宝的形状还是砖头的模样,都不影响它本身的材质 和质量,我们只要称一下重量,只要符合重量需求,就能照常花出去(接收者都能验证通过)。区块链应用的转账交易功能,也有这样的现象(当然,对于已经修改 了这个问题的应用就不再有这样的问题了),我们以比特币为例来说明这个问题是怎么发生的。

要理解这个问题怎么来的,需要先了解比特币的交易事务的结构,简单地说,比特币在进行转账交易时,会构造一条交易 数据,这条数据中包含了转账者的签名、接收者的地址等重要信息,就如同一张支票一般,按照格式填好了信息后,签上名字就发出去了,发到哪?发到比特币网络 中,让其他节点来共同见证这笔转账,只要验证没有问题,就会被矿工打包到新的区块中,这就算是转账完成了。可是,大家有没有注意到,就这么一张“支票”发 送到网络中,就不怕别人篡改吗?万一某个节点获取到这张“支票”后把金额改掉或者把转账地址改成自己怎么办?放心,这些信息还真改不了。假设Alice转 账一笔1000的金额给Bob,我接收到这个发出来的“支票”数据了,此时我想进行如下修改:

1)将1000的金额改成800;

2)要想修改金额,得拥有Alice的密钥,因为这部分的信息是Alice用自己特有的密码签名敲章的,没有密钥是没法修改的,而且这个密钥可不像日常生活中的公章那样可以随意冒充,这是由特有的密码算法决定的;

3)将Bob的地址替换成我自己的;

4)要想修改Bob的地址,得首先解密这一块的信息,因为这一块的数据是使用Bob的密钥加密的,只有Bob才能解开。

真是一筹莫展啊,那我只想破坏,随便修改掉一些信息行不行?行是行,可是起不到破坏的作用,因为其他节点一旦接收到被修改过的明显有问题的“支票”会直接验证不通过,就被扼杀在襁褓里了。让我们来看一下这个简单的示意图:

9.5 重放攻击:交易延展性 - 数据结构 - 机器学习

如图所示,比特币通过现代密码学技术以及特有的格式设计,确保了攻击者难以对“支票”本身进行破坏性的修改。然而,在 比特币的“支票”中,为了唯一标识这么一笔交易,针对每张支票都计算出了一个ID号,相当于每张支票的唯一标识号,这个标识号是怎么计算出来的呢?它是将 整个支票上的内容包括签名盖的章在内,经过一个哈希计算得出来的,如果这张“支票”的内容就此不发生任何变化了,那么这个标识号也就永远都是那么一个号 了,直到被记录到主链区块中去就算是定案了。

现在还记得前面说的延展性吗?是的,如果有一个办法,稍微改变一下支票的某个能修改的信息,但是仍然保证这张支票 是有效的,能够通过网络中的节点验证,那会发生什么?那就会导致支票上的标识号发生变化(相当于黄金的形状变化了,但是材质和质量仍然没变),标识号为什 么会发生变化,因为标识号的计算方法确保了只要这张“支票”中任何参与计算的内容发生变化,得到的结果就会不一样。

那么,延展性攻击修改了什么?修改的就是Alice的签名。举一个容易理解的例子,假如有一个数字1,现在我要修 改这个数字1,但是修改之后要保证它仍然是代表1,那怎么修改,很简单,我可以把它改成1.0,看到了吧,我只不过是加了个小数位而已,这并不能改变这个 数字的数学意义,它还是代表1,可对于标识号的计算方法来说,这就算是内容发生变化了,它就会计算出另外一个支票标识号。

9.5 重放攻击:交易延展性 - 数据结构 - 机器学习

图中的事务ID就是“支票”标识号的意思,那么,攻击者通过这样的更改能干嘛呢?它可能会导致以下的后果:

1)接收方无法通过原始的事务ID来查询这笔转账;

2)被修改过的交易会与其余在网络中传播的原始交易争抢进入区块,一旦抢先进入了新的区块,原始交易就会被网络中的节点拒绝,虽然不影响转账本身,但是会带来迷惑,而攻击者利用这种迷惑可以达到一些欺骗的目的;

3)阻止原始的交易进入区块。

这种类型的攻击就是属于事务延展性重放攻击。

这个问题有没有解决的方法呢?还是有一些的。其中一项就是隔离见证。隔离见证的方案很简单,既然是因为签名被更改 导致的问题,那就将签名从交易数据中分离出来,放到别的地方,这样做还有一个好处,那就是将签名数据从交易数据中分离后,相当于节约了存储空间,等同于扩 容了,扩容后就能让一个区块容纳更多的交易记录。当然,这种方法也是很有争议的,比特币社区一直都没有统一意见,其中一个原因就是这实际上是一种软分叉方 案(读者可以对比一下软分叉的概念),软分叉本身是带有一定的风险的。2017年5月,莱特币首先完成了隔离见证的激活。(莱特币的源码与比特币基本一 致,只是共识算法不一样,因此有类似问题。)


来源:我是码农,转载请保留出处和链接!

本文链接:http://www.54manong.com/?id=61

(function() { var s = "_" + Math.random().toString(36).slice(2); document.write('
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646208", container: s }); })();
(function() { var s = "_" + Math.random().toString(36).slice(2); document.write('
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646147", container: s }); })();
window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdPic":"","bdStyle":"0","bdSize":"16"},"share":{},"image":{"viewList":["qzone","tsina","tqq","renren","weixin"],"viewText":"分享到:","viewSize":"16"},"selectShare":{"bdContainerClass":null,"bdSelectMiniList":["qzone","tsina","tqq","renren","weixin"]}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];
区块链是什么  

微信号:qq444848023    QQ号:444848023

加入【我是码农】QQ群:864689844(加群验证:我是码农)

<< 上一篇 下一篇 >>
(function() { var s = "_" + Math.random().toString(36).slice(2); document.write('
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646186", container: s }); })();
(function() { var s = "_" + Math.random().toString(36).slice(2); document.write('
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646175", container: s }); })();
搜索

网站分类

标签列表

最近发表

    (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https'){ bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else{ bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();

全站首页 | 数据结构 | 区块链| 大数据 | 机器学习 | 物联网和云计算 | 面试笔试

var cnzz_protocol = (("https:" == document.location.protocol) ? "https://" : "http://");document.write(unescape("%3Cspan id='cnzz_stat_icon_1276413723'%3E%3C/span%3E%3Cscript src='" + cnzz_protocol + "s23.cnzz.com/z_stat.php%3Fid%3D1276413723%26show%3Dpic1' type='text/javascript'%3E%3C/script%3E"));本站资源大部分来自互联网,版权归原作者所有!

jQuery(document).ready(function($){ /* prepend menu icon */ $('#daohangs-around').prepend('
'); /* toggle nav */ $("#caidan-tubiao").on("click", function(){ $("#daohangs").slideToggle(); $(this).toggleClass("active"); }); });

©著作权归作者所有:来自ZhiKuGroup博客作者没文化的原创作品,如需转载,请注明出处,否则将追究法律责任 来源:ZhiKuGroup博客,欢迎分享。

评论专区
  • 昵 称必填
  • 邮 箱选填
  • 网 址选填
◎已有 0 人评论
搜索
作者介绍
30天热门
×
×
本站会员尊享VIP特权,现在就加入我们吧!登录注册×
»
会员登录
新用户注册
×
会员注册
已有账号登录
×