区块链技术安全讨论

王佳亮

一、背景介绍

区块链技术是金融科(Fintech)领域的一项重要技术创新。
作为分布式记账( Distributed Ledger Technology,DLT)平台的核心技术, 区块链被认为在金融、征信物联网经济贸易结算资产管理等众多领域都拥都拥有广泛的应用前景。

区块链技术自身尚处于快速发展初级阶段,现系 有广泛的应用前景。区块链技术自身尚处于快速发展初级阶段,现系 有广泛的应用前景。区块链技术自身尚处于快速发展初级阶段,现有区块链系统在设计和实现中利用了分布式系、密码学博弈论网络协议等诸多科的为学习原理和实践应用都带来了不小的挑战。

区块链属于一种去中心化的记录技术。参与到系统上节点,可能不同一组织、彼此无需信任;区块链数据由所有节点共同维护,每个参与维护节点都能复制获利一份完整记录的拷贝,由此可以看出区块链技术的特点:

(1)维护一条不断增长的链,只可能添加记录,而生发过的记录都不可篡改;
(2)去中心化,或者说多中心化,无需集中的控制 需集中的控制而能达成共识,实现上尽量分布式;
(3)通过密码学的机制来确保交易无法抵赖和破坏,并尽量保护用户信息和记录的隐私性。 

虽然单纯从区块链理解,仅仅是一种数据记录技术,或者是一种去中心化的分布式数据库存储技术,但如果和智能合约结扩展就让其提供更多复杂的操作,现在活跃的各个数字货币就是其中一种表现形式。

二、区块链安全性思考

由于区块链技术的特性,在设计之处就想要从不同维度解决部分安全问题:

2.1 Hash唯一性

在blockchain中,每个区块和Hash都是一一对应的,每个Hash都是由区块头通过sha256计算得到的。 因为区块头中包含当前区块体的Hash和上一个区块的Hash所以如果当前区块内容改变或者上一个区块 Hash改变,就会引起当前区块Hash改变。

如果有人修改了个区块,该区块的Hash就变了。为让后面的区块还能连接到它,该人必须同时修改后面所有的区块,否则被改掉的区块就脱离链了。 由于区块计算的算力需求强度很大,同时修改多个区块 ,几乎是不可能的。 

由于这样的联动机制,块链保证了自身的可靠性,数据一旦写入,就无法被篡改。这就像历史一样,发生了就是发生了,从此再无法改变,确保了数据的唯一性。

2.2 密码学安全性
以比特币为例,数字货采用了非对称加密,所有的数据存储和记录都有数字签名作为凭据,非对称加密保证了支付的可靠性。

2.3 身份验证

在数字货币交易过程中,由一个地址到另一个地址的数据转移都会对其进行验证:
 上一笔交易的 Hash(验证货币的由来)
 本次交易的双方地址
 支付方的公钥
 支付方式的私钥生成的数字签名

验证交易是否成功属实会经过如下几步:
 找到上一笔交易确认货币来源
 计算对方公钥指纹并与其地址比对,保证公钥的真实性
 使用公钥解开数字签名,保证私真实性

2.4 去中心化的分布式设计

针对区块链来说,账本数据全部公开或者部分公开,强调的是账本数据多副本存在,不能存在数据丢失的风险,区块链当前采用的解决方案就是全分布式存储,网络中有许多个全节点,同步所账本数据(有些同步部分,当然每个数据存储的副本足够多),这样网络中的副本足够多,就可以满足高可用的要求,丢失数据的风险就会低很多。

所以建议部署区块链网络时,全节点尽量分散,在不同地理位置、不同的基础服务提供商、不同的利益体等。

2.5 传输安全性

在传输过程中,数据还未持久化,这部分空数据在传输过程中,会采用HTTP+SSL(也有采用websocket+websocketS)进行处理,从而保证数据在网络传输中防篡改且加密处理。

三、数字货币安全性思考

3.1 BTC

比特币(Bitcoin,代号 BTC)是一种去中心化、全球通用、不需第三方机构或个人,基于区块链作为支付技术的电子加密货币。比特币由中本聪于2009年1月3日,基于无国界的对等网络,用共识主动性开源软件发明创立。比特币也是目前知名度与市场总值最高的加密货币。

3.1.1 钱包和交易

比特币钱包的地址就是公钥通过Base58算法编码后的一段字符串,使用该算法可以将公钥中的一些不见字符编码成平时常见的字符。Base58相对于Base64来说消除了非字母或数字的字符,如:“+” 和“/”,同时还消除了那些容易产生混淆的字符,如数0和大写字母O,大写字母I和小写字母l。这一段用作比特币钱包地址的字符串就相当于个账户。

交易属于比特币中的核心部分,区块链应用到数字货上也是为提供更安全可靠的交易交易之前会先确认每一笔真实性,如果是真实的,交易记录便会写入到新的区块中去,而一旦加入到区块链了也就意味着再不能被撤回和修改。

交易验证流程为:

(1). 验证交易双方的钱包地址,也就是双方的公钥。
(2). 支付方的上一笔的交易输出,前面也说到了钱包里面是没有存放你的比特币数量的,而你每一笔交易都会产交易输出记录到区块链中。通过交易输出可以确认支付方是否能够支付一定数量的比特币。
(3). 支付方的私钥生成的数字签名。如果使用支付方的公钥能解开这个数字签名便可以确认支付方的身份是真实的,而不是有人恶意的使用当前的支付方的钱包地址在做交易。

一旦这些信息都能得到确认便可以将交易写到新的区块中去,完成交易。受比特币区块大小的限制(目前的为1MB,一笔交易信息大概需要 500 多字节),每个区块最多只能包含2000多笔的交易。因为区块链中记录了所有的交易信息,所以每个比特币钱包的交易记录和数量都是可以被查到,但是只要没有对外公开承认钱包地址属于你的, 也不会有人知道这个钱包地址的真实拥有者。

还有一种交易叫做coinbase交易,当矿工挖到一个新的区块时,他会获得挖矿奖励。挖矿就是通过coinbase交易拿到手的, 也一样是需要把交易信息添加到新的区块中去,但是coinbase交易不需要引用之前的交易输出。

3.1.2 安全问题

比特币基于区块链,具有去中心化结构,用户通过一个公开的地址和密钥来宣示所有权。某种程度上,谁掌握了这个密钥,谁就实质性地拥对应址中的比特币资产。而区块链的防篡改特征,是指比特币的交易记录不可篡改。而非密钥不会丢失。

同时,也正因为区块链不可篡改,密钥一旦丢失,也意味着不可能通过修改区块链记录来拿回比特币。

因此针对比特币的盗币事件屡有发生,主要是通过下三个手段:

(1).交易平台监守自盗
(2).交易所遭受黑客攻击
(3).用户交易账户被盗

交易平台监守自盗可以向平台索回,但是黑客攻击导致的盗币,很难被追回。因为 黑客一旦盗取比特币,接下来便会通过混币等手段进行洗白,除非有国家力量强力介入,否则追回的可能性仅停留在理论层面。

3.2 ETH

以太币( Ether,代号ETH)为以太坊区块链上的代币,可在许多加密货外汇市场上 交易,它也是以太坊汇市场上用来交易手续费和运算服务的媒介。以太坊(Ethereum)是一个开源的有智能合约功公共区块链平台。通过其专用加密货币以太币提供去中心化的虚拟机(称为“以太虚拟机” Ethereum Virtual Machine)来处理点对合约。

3.2.1 智能合约

以太坊与比特币最大的一个区别——提供了一个功能更强大的合约编程环境。如果说比特币的功能只是数字货本身,那么在以太坊上,用户还可以编写智能合约应用程序,直接将区块链技术的发展带入到2.0时代。

以太坊中的智能合约是运行在虚拟机上的 ,也就是通常说的EVM(Ethereum Virtual MachineV,以太坊虚拟机 )。这是一个智能合约的沙盒,合约存储在以太坊的区块链上,并被编译为以太坊虚拟机字节码,通过虚拟机来运行智能合约。由于这个中间层的存在,以太坊也实现了多种语言的合约代码编译,网络中的每个以太坊节点运 行EVM实现并执行相同的指令。如果说比特币是二维世界的话,那么以太坊就是三维世界可实现无数个不同的二维世界。

3.2.2 安全问题

ETH最大的特点就是智能合约,而智能合约漏洞也就导致了ETH的安全问题。

2016年黑客通过The Dao,利用智能合约中的漏洞,成功盗取360万以太币。THE DAO持有近15%的以太币总数,因此这次事件对以太坊网络及其加密币都产生了负面影响。

The DAO事件发生后,以太坊创始人Vitalik Buterin提议修改以太坊代码,对以太坊区块链实施硬分叉,将黑客盗取资资金的交易记录回滚,得到了社区大部分矿的支持,但也遭到了少数人的强烈反对。

最终坚持不同意回滚少数矿工们将他们挖出的区块链命名为Ethereum Classic(以太坊经典,简称 (以太坊经典,简称 ETC),导致了以太坊社区的分裂。

在虚拟货币历史上,这是第一次,也可能唯一一次,由于安全问题导致的区块链分叉事件。

无独有偶 2017 年 7月 19 日, 多重签名钱包 Parity1.5及以上版本出现安全漏 洞,15万个ETH被盗 ,共价值3000万美元。

两次被盗事件都是因为智能合约中的漏洞。让我们看到,虚拟货币的安全不仅是平台和个人,区块链上的应用,也是我们应该关注的内容。

3.3 XMR

门罗币(Monero,代号XMR)是一个创建于2014年4月的开源加密货币,它着重于隐私、分权和可扩展性。与比特币衍生的许多加密货币不同,Monero基于CryptoNote协议,并在区块链模糊化方面有显著的算法差异。

3.3.1 隐蔽地址

隐蔽地址是为了解决输入输出关联性的问题。每当发送者要给接收者发送一笔金额的时候,他会首先通过接收者地址(每次都重新生成),利用椭圆曲线加密算出一个次性的公钥。然后发送者将这连同一个附加信息到区块链上,接收方可以根据自己的私钥来检测每个交易块,从而确定发送方是否已经发送了这笔金额。

当接收方要使用时,可以根据自己的私钥及交易信息计算出来一个签名私钥,用这个私钥对交易进行签名即可。

3.3.2 环签名

隐蔽地址虽然能保证接收者每次都变化,从而让外部攻击看不出关联性,但并不能保证发送者与接收之间的匿名性。因此门罗币提出了一个环签名的方案——事实上,在古代就已经有类似的思想了:联名上书的 时候,上书人的名字可以写成一个环形,由于中各地位看去彼此相等,因此外界很难猜测发起人是谁。这就是环签名。

除了交易地址,金额也会暴露部分隐私。门罗币还提供一种叫做环状保密交易(RingCT)的技术来同时隐藏交易地址以及金额。这项技术正在逐步部署来达到真正的匿名。这项技术采用了多层连接自发匿名组签名(Multi-layered Linkable Spontaneous Anonymous Group signature)的协议。

3.3.3 安全问题

比特币交易私密性方面做的不太好,关于货隐两个基本属性:

(1). 不可链接性(Unlinkability):无法证明两个交易是发送给同一人的,也就是无法知道交易的接收者是谁。
(2).不可追踪性(Untraceability):无法知道交易的发送者是谁。

比特币交易要发送地址信息,很明显不符合之上的求。门罗币通过隐蔽地址来保证不可链接性,通过环签名来保证不可追踪性,从而给用户的交易信息提供了很好的隐私性。另一方面,比特币挖矿主要依赖于大量专业化用集成电路(ASIC)。它的算法在ASIC上的运行速度远超于在标准家庭电脑或者笔记本脑上运行。相比之下,门罗币的挖矿算法要精良得多它并不依赖于ASIC,使用任何 CPU或 GPU都可以完成,这就意味着门罗币具有更低的挖掘门槛。 

门罗币的这些特性,使其成为黑产挖矿不二之选。过去一段时间出现了许多门罗币挖矿为目的网络攻击事件。

04 小结

在以太坊这种平台区块链上,如果运行智能合约应用程序出现漏洞同样也会威胁其上的数字资产。以太坊解决了比特币单应用局限,使得区块链像一个操作系统,开发者可以在其上搭建自己的“应用”。门罗币降低了挖矿的门槛,同时又满足了交易私密性需求。这些特都符合黑产的需要, 过去一段间同以门罗币挖矿为目的网络攻击事件时有发生。

四、交易平台安全性思考

随着区块链技术的迅速发展,使得虚拟货币渐走入大众的视线。随之而来就是大量的虚拟币交易平台。虚拟货币交易平台就是为用户提供虚拟货币与虚拟货币之间兑换的 平台,部分还提供人民币与虚拟币的p2p兑换服务。现在交易平台均每天的额都是数以亿计,然而背后经营者能力与平台自身的安全性并没有很好的保障。从14年至今据不完全统计,单纯由于交易所安全性导致的直接损失就达到了1.8亿美元之多。

随着虚拟币的水涨船高,交易所就成了黑客们首要目标,据统计入侵一家交易所,给黑客带来的直接利益大约 1000万美元左右,然而交易所的安全性参差不齐和各个国家对这类平台基本都暂时没有好的管控策略,给黑客带来了很大便利,同时也直接威胁着用户的资金安全。

4.1 平台被黑事件回顾

4.1.1 比特儿 (Bter.com) 比特币交易平台被盗事件

时间:2014-08-15

事件简介:

比特儿是一家中国的山寨币交易所。 NXT等山寨币都在上面交易。由于POS币的钱包必须上线运行才能获取利息。因此NXT币的钱包必须上线运行,给了入侵的机会。POS币不能冷钱包保存,暴露出POS的重大安全隐患。黑客盗走NXT后与平台方通过交易留言进行谈判并要求平台方支付 BTC作为赎金换回NXT

最终平台支付了110个BTC,却未能完全赎回,只能要求社区回滚,NXT的交易区块。本次比特儿被黑是历史上第一完全公开展现的网络犯罪,暴露出交易平台和数字货币在当时没有监管野蛮生长的严肃问题。

4.1.2 以太币组织 The DAO被黑事件

时间:2016-06

事件简介:

以太币的去中心化组织 The Dao被黑,价值逾5000万美元的以太币外溢出 DAO的钱包。以太币( ETH)市场价格瞬间缩水,从记录高位 21.50美元跌至15.28美元,跌幅逾23%。

在此前的智能合约写法中,有三个严重漏洞,黑客也正是利用这几漏洞攻击The DAO窃取以太币。

(1)fallback函数调用

向合约地址发送币有两种写法。二者都是发送 20 个 etheret,都是一个新的message call,不同的是这两个调用的 gasli mit不一样。 send()给予 0的 gas(相当于 call.gas(0).value()), 而 call.value()给予全部(当前剩余)的gas。

当我们调用某个智能合约时,如果指定的函数找不到,或者根本就没调用哪个函数(如发送ether)时,fallback就会被调用。

当通过 addr.call.value()()的方式发送 ether和send()一样, fallback函数会被调用,但是传递给fallback函数可用的气是当前剩余所有gas如果精心设计一个 fallback就能影响到系统,如写storage,重新调用的智能合约等等。

(2)递归调用

如果付款方的合约账户中有 1000个 ether,而取款方有10个ether,此处就有严重的递归调用问题,取款方可以将 1000个 ether全部取走。

(3)调用深度限制

合约可以通过 message call调用其他智能合约,被调用的合约继续通过 message call 再调用其他合约,这样的嵌套深度限制为1024。

如果攻击者制造以上的1023个嵌套调用 ,之后再个嵌套调用sendether(),就可以让 add.send(20 ether)失效,而其他执行成功:

在 DAO的代码中当合约执行到withdrawRewardFor(msg.sender);进入到函数withdrawRewardFor和此前的举例类似,DAOaddr.call.value()()发送以太币而没有选择 send()从而黑客只需要创建 fallback再次调用 splitDAO()即可转移多份以太币, PoC如下:

p.splitData[0].newDAO.createTokenProxy.value(fundsToBeMoved)(msg.sender)

The DAO事件给整个以太坊社区带来了重大影响,也导致之后的硬分叉和ETC(以太经典)的剥离。

4.1.3 Bitfinex遭黑客攻击事件

时间:2016-08

事件简介:

Bitfinex是交易比特币、 etheret和莱特币等数字货的最大交易所之一。 

根据 Bitfinex在8月2日凌晨发布的公告,该交易所在现了一个安全漏洞后便停止了交易。

Bitfinex负责社区和产品开发的主管塔克特 (Zane Tackett)证实,119,756个比特币遭窃 ,该公司已经知道相关系统是如何被入侵的。以周二价格计算,失窃比特币价值约 6,500万美元,受此消息影响全球比特币价格应声下跌25%。

随后 Bitfinex官网发布公告称这次损失将由平台上所有用户共同承担,导致每位用户的账平均损失36%。

对于类似比特币这样的数字货币,由于是通过数学算法挖矿形成,与实体质地的纸币不同,这些数字货交易的安全性就完体现在所风险控制能力以及防黑客能力上。

4.1.4 Parity多重签名钱包被盗事件

时间:2017-07

事件简介:

Parity是一款多重签名钱包,目前使用最广泛的以太坊钱包之一,创始人兼 CTO。CTO是以太坊前CTO黄皮书作者 Gavin Woods。

7月19日,Parity发布安全警报,告其钱包软件1.5版本及之后的存在一个漏洞。据该公司的报告,确认有150000ETH(大约价值3000万美元)被盗。据Parity所说,漏洞是由一种叫做wallet.sol多重签名合约出现 bug bug导致。后来,白帽黑客找回了大约 377,000受影响的ETH。

本次攻击造成了以太币价格的震荡, Coindesk的数据显示,事件曝光后以太币价格一度从 235美元下跌至 196美元左右。此次事件主要是由于合约代码不严谨导致。

一共盗取了153,037个ETH,受到影响的合约代码均为Parity的创始人 Gavin Wood写的 Multi-Sig库代码。通过分析可以确定核心问题在于越权的函数调用,合约接口必须精心设计和明确定义访问权限,或者更进一步说,合约的设计必须符某种成熟模式,或者标准,合约代码部署前最好交由专业的机构进行评审。否则,一个不起眼的代码就会让你丢掉所有的钱。

4.1.5 USDT发行方Tether遭受黑客攻击事件

时间:2017-12

事件简介:

Tether公司是USDT代币的发行公司 —— USDT是一种与美元挂钩的加密货币,如今正在被交易所广泛用于进行交易。该公司告中声称其系统遭受攻击,已经导致价值30 00万美元的USDT代币被盗。

被盗的代币不会再赎回,但Tether公司表示他们正在试图恢复令牌,以确保这些交易所不再或引入这被盗的资金,不让这些资金回到加密货币经济。

此次被黑事件后,比特币的价格下降了5.4%,是11月13日以来的最高纪录。

然而,Tether被盗声明一出,国外社区有用户认为该地址中的被盗的 3000万美元 只是 Tether掩耳盗铃的第一步。实际面临兑付危机远不止3000万美元。

此次事件不仅单纯的一虚拟币被盗同时导致Tether的信任危机。

4.1.6 Youbite交易所被入侵事件

时间:2017-12-19

事件简介:

12月19日,韩国数字货币交易所 Youbite宣布在当天下午4时(北京间3时)左右,交易平台受到黑客入侵,造成的损失相当于内总资产的17%。 这家平台是韩国一家市场份额较小的数字货币交易平台,在今年4月,这家平台也曾经遭受过黑客攻击,损失了近 4000个比特币。

Youbit表示,在4月份遭遇黑客攻击之后,其加强了安全策略,将其余83%的交易所资金都安全地存放在冷钱包里。尽管如此,运营该的公司Yaipan还是于本周二申请了破产,并停止平台交易。公告显示该交易所将所有客户的资产价值减记至市场价值的75%,客户可立即提取这部分资产。该公司表示,将在破产程序结束时偿还剩余的资金,届提出保险索赔并售公司经营权。 

4.2 小结

虚拟币的火热,直接搅动着金融市场与科技也面临各种安全问题。

现在各个国家也开始对区块链市场与虚拟币相继出台政策治理方案,对交易所也开始纳入管控范围,韩国前段时间对其家7家大型交易所进行了安全测试,均被成功入侵,但每个交易所天量是数以亿计的。可见这类安全问题不是个例,作为虚拟币交易平台,是否有资质能力保护在线虚拟货币安全成为一个值得考究的问题,虚拟币已经渐从网络进入到现实世界中,然而这个过程的进步同样带来了很大隐患,这也促使着政府企业以及个人对交易平台以及虚拟币本身更加的慎重选择与投入

五、区块链在安全行业的应用

区块链社区非常活跃,人们经常认为,这项技术不仅有效地推动了虚拟货币的发展, 而且还加强了现有的安全解决方案,从区块链⻆度解决了一些安全问题。

列举几个区块链技术的安全用途:

5.1 更安全的认证机制

根据区块链技术的特性,设备可以对等方式识别和交互,而不需要第三方权威。
伴随着双重身份验证,伪造数字安全书成为不可能,使得网络结构具有更好的安全性。比如应用到密码验证服务,物联网设备认证。

5.2 更安全的数据保护

在基于区块链的系统中,存储元数据分散布式账本中,不能在一个集中点收集,篡改或者删除。其的数据具有更好完整性可靠以及不可抵赖性。可以应用到公共数据存储场景, 比如产权记录,金融记录。

5.3 更安全的基础设施

利区块链分布式特性,可以提供区块链分布式特性,可以提供一种分散式平台,通过这系统可以访问和利用共享的带宽,这种方式远优于带宽有限的单服务器集中模型。去中心化的的平台可以降低 DDoS成功的风险,更好的保护基础设施。比如网站, DNS解析服务等。

==========
笔记来源:《360网络安全响应中心》。仅供学习研究使用,非商业用途。

2018-04-02 2294 views


Home