一文看懂区块链技术安全,在安全行业区块链
雷锋网注:本文作者,CERT。原文出处:SeebugPaper。
区块链技术是金融科技(Fintech)领域的一项重要技术创新。
作为分布式记账(DistributedLedgerTechnology,DLT)平台的核心技术,区块链被认为在金融、征信、物联网、经济贸易结算、资产管理等众多领域都拥有广泛的应用前景。区块链技术自身尚处于快速发展的初级阶段,现有区块链系统在设计和实现中利用了分布式系统、密码学、博弈论、网络协议等诸多学科的知识,为学习原理和实践应用都带来了不小的挑战。
区块链属于一种去中心化的记录技术。参与到系统上的节点,可能不属于同一组织、彼此无需信任;区块链数据由所有节点共同维护,每个参与维护节点都能复制获得一份完整记录的拷贝,由此可以看出区块链技术的特点:
维护一条不断增长的链,只可能添加记录,而发生过的记录都不可篡改;去中心化,或者说多中心化,无需集中的控制而能达成共识,实现上尽量分布式;通过密码学的机制来确保交易无法抵赖和破坏,并尽量保护用户信息和记录的隐私性。
虽然单纯从区块链理解,仅仅是一种数据记录技术,或者是一种去中心化的分布式数据库存储技术,但如果和智能合约结合扩展,就能让其提供更多复杂的操作,现在活跃的各个数字货币就是其中一种表现形式。
0x01区块链安全性思考
由于区块链技术的特性,在设计之处就想要从不同维度解决一部分安全问题:
01Hash唯一性
在blockchain中,每一个区块和Hash都是以一一对应的,每个Hash都是由区块头通过sha计算得到的。因为区块头中包含了当前区块体的Hash和上一个区块的Hash,所以如果当前区块内容改变或者上一个区块Hash改变,就一定会引起当前区块Hash改变。如果有人修改了一个区块,该区块的Hash就变了。为了让后面的区块还能连到它,该人必须同时修改后面所有的区块,否则被改掉的区块就脱离区块链了。由于区块计算的算力需求强度很大,同时修改多个区块几乎是不可能的。
由于这样的联动机制,块链保证了自身的可靠性,数据一旦写入,就无法被篡改。这就像历史一样,发生了就是发生了,从此再无法改变,确保了数据的唯一性。
02密码学安全性
以比特币为例,数字货币采用了非对称加密,所有的数据存储和记录都有数字签名作为凭据,非对称加密保证了支付的可靠性。
03身份验证
在数字货币交易过程中,由一个地址到另一个地址的数据转移都会对其进行验证:
-上一笔交易的Hash(验证货币的由来)-本次交易的双方地址-支付方的公钥-支付方式的私钥生成的数字签名
验证交易是否成功属实会经过如下几步:
-找到上一笔交易确认货币来源-计算对方公钥指纹并与其地址比对,保证公钥的真实性-使用公钥解开数字签名,保证私钥真实性
04去中心化的分布式设计
针对区块链来说,账本数据全部公开或者部分公开,强调的是账本数据多副本存在,不能存在数据丢失的风险,区块链当前采用的解决方案就是全分布式存储,网络中有许多个全节点,同步所有账本数据(有些同步部分,当然每个数据存储的副本足够多),这样网络中的副本足够多,就可以满足高可用的要求,丢失数据的风险就会低很多。所以建议部署区块链网络时,全节点尽量分散,分散在不同地理位置、不同的基础服务提供商、不同的利益体等。
05传输安全性
在传输过程中,数据还未持久化,这部分空中数据会采用HTTP+SSL(也有采用websocket+websocketS)进行处理,从而保证数据在网络传输中防篡改且加密处理。
0x02数字货币安全性思考
01BTC
比特币(Bitcoin,代号BTC)是一种用去中心化、全球通用、不需第三方机构或个人,基于区块链作为支付技术的电子加密货币。比特币由中本聪于年1月3日,基于无国界的对等网络,用共识主动性开源软件发明创立。比特币也是目前知名度与市场总值最高的加密货币。
比特币区块结构
钱包和交易
比特币钱包的地址就是公钥通过Base58算法编码后的一段字符串,使用该算法可以将公钥中的一些不可见字符编码成平时常见的字符。Base58相对于Base64来说消除了非字母或数字的字符,如:“+”和“/”,同时还消除了那些容易产生混淆的字符,如数字0和大写字母O,大写字母I和小写字母l。这一段用作比特币钱包地址的字符串就相当于一个比特币账户。
交易属于比特币中的核心部分,区块链应用到数字货币上也是为提供更安全可靠的交易。交易之前会先确认每一笔笔交易的真实性,如果是真实的,交易记录便会写入到新的区块中去,而一旦加入到区块链中了也就意味着再也不能被撤回和修改。
交易验证流程大概为:
验证交易双方的钱包地址,也就是双方的公钥。支付方的上一笔的交易输出,前面也说到了钱包里面是没有存放你的比特币数量的,而你每一笔交易都会产生交易输出记录到区块链中。通过交易输出可以确认支付方是否能够支付一定数量的比特币。支付方的私钥生成的数字签名。如果使用支付方的公钥能解开这个数字签名便可以确认支付方的身份是真实的,而不是有人恶意的使用当前的支付方的钱包地址在做交易。
一旦这些信息都能得到确认便可以将交易信息写入到新的区块中去,完成交易。受比特币区块大小的限制(目前的为1MB,一笔交易信息大概需要多字节),一个区块最多只能包含多笔的交易。因为区块链中记录了所有的交易信息,所以每个比特币钱包的交易记录和币的数量都是可以被查到的,但是只要没有对外公开承认钱包地址是属于你的,也不会有人知道一个钱包地址的真实拥有者。
还有一种交易叫做coinbase交易,当矿工挖到一个新的区块时,他会获得挖矿奖励。挖矿奖励就是通过coinbase交易拿到手的,也一样是需要把交易信息添加到新的区块中去,但是coinbase交易不需要引用之前的交易输出。
安全问题
比特币基于区块链,具有去中心化结构,用户通过一个公开的地址和密钥来宣示所有权。某种程度上,谁掌握了这个密钥,谁就实质性地拥有了对应地址中的比特币资产。而区块链的防篡改特征,是指比特币的交易记录不可篡改,而非密钥不会丢失。同时,也正因为区块链不可篡改,密钥一旦丢失,也意味着不可能通过修改区块链记录来拿回比特币。
因此针对比特币的盗币事件屡有发生,主要是通过下面三个手段:
交易平台监守自盗交易所遭受黑客攻击用户交易账户被盗
交易平台监守自盗可以向平台索回,但是黑客攻击导致的盗币,很难被追回。因为黑客一旦盗取比特币,接下来便会通过混币等手段进行洗白,除非有国家力量强力介入,否则追回的可能性仅仅停留在理论层面。
02ETH
以太币(Ether,代号ETH)为以太坊区块链上的代币,可在许多加密货币的外汇市场上交易,它也是以太坊上用来支付交易手续费和运算服务的媒介。以太坊(Ethereum)是一个开源的有智能合约功能的公共区块链平台。通过其专用加密货币以太币提供去中心化的虚拟机(称为“以太虚拟机”EthereumVirtualMachine)来处理点对点合约。
智能合约
以太坊与比特币最大的一个区别——提供了一个功能更强大的合约编程环境。如果说比特币的功能只是数字货币本身,那么在以太坊上,用户还可以编写智能合约应用程序,直接将区块链技术的发展带入到2.0时代。
以太坊中的智能合约是运行在虚拟机上的,也就是通常说的EVM(EthereumVirtualMachine,以太坊虚拟机)。这是一个智能合约的沙盒,合约存储在以太坊的区块链上,并被编译为以太坊虚拟机字节码,通过虚拟机来运行智能合约。由于这个中间层的存在,以太坊也实现了多种语言的合约代码编译,网络中的每个以太坊节点运行EVM实现并执行相同的指令。如果说比特币是二维世界的话,那么以太坊就是三维世界,可以实现无数个不同的二维世界。
安全问题
ETH最大的特点就是智能合约,而智能合约漏洞也就导致了ETH的安全问题。
年黑客通过TheDao,利用智能合约中的漏洞,成功盗取万以太币。THEDAO持有近15%的以太币总数,因此这次事件对以太坊网络及其加密币都产生了负面影响。
TheDAO事件发生后,以太坊创始人VitalikButerin提议修改以太坊代码,对以太坊区块链实施硬分叉,将黑客盗取资金的交易记录回滚,得到了社区大部分矿工的支持,但也遭到了少数人的强烈反对。最终坚持不同意回滚的少数矿工们将他们挖出的区块链命名为EthereumClassic(以太坊经典,简称ETC),导致了以太坊社区的分裂。在虚拟货币历史上,这是第一次,也可能唯一一次由于安全问题导致的区块链分叉事件。
无独有偶年7月19日,多重签名钱包Parity1.5及以上版本出现安全漏洞,15万个ETH被盗,共价值万美元。
两次被盗事件都是因为智能合约中的漏洞。让我们看到,虚拟货币的安全不仅仅是平台和个人,区块链上的应用,也是我们应该
转载请注明:http://www.abuoumao.com/hyfw/1568.html