一文看懂区块链技术安全,在安全行业区块链又有什么用

2018-01-26 09:03 稿源:雷锋网  0条评论

注:本文作者,360CERT 。原文出处: Seebug Paper 。

区块链技术是金融科技(Fintech)领域的一项重要技术创新。

作为分布式记账(Distributed Ledger Technology,DLT)平台的核心技术,区块链被认为在金融、征信、物联网、经济贸易结算、资产管理等众多领域都拥有广泛的应用前景。区块链技术自身尚处于快速发展的初级阶段,现有区块链系统在设计和实现中利用了分布式系统、密码学、博弈论、网络协议等诸多学科的知识,为学习原理和实践应用都带来了不小的挑战。

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

  • 维护一条不断增长的链,只可能添加记录,而发生过的记录都不可篡改;

  • 去中心化,或者说多中心化,无需集中的控制而能达成共识,实现上尽量分布式;

  • 通过密码学的机制来确保交易无法抵赖和破坏,并尽量保护用户信息和记录的隐私性。

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

区块链安全性思考

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

01 Hash唯一性

在blockchain中,每一个区块和Hash都是以一一对应的,每个Hash都是由区块头通过sha256 计算得到的。因为区块头中包含了当前区块体的Hash和上一个区块的Hash,所以如果当前区块内容改变或者上一个区块Hash改变,就一定会引起当前区块Hash改变。如果有人修改了一个区块,该区块的 Hash 就变了。为了让后面的区块还能连到它,该人必须同时修改后面所有的区块,否则被改掉的区块就脱离区块链了。由于区块计算的算力需求强度很大,同时修改多个区块几乎是不可能的。

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

02 密码学安全性

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

03 身份验证

在数字货币交易过程中,由一个地址到另一个地址的数据转移都会对其进行验证:

- 上一笔交易的Hash(验证货币的由来)

- 本次交易的双方地址

- 支付方的公钥

- 支付方式的私钥生成的数字签名

验证交易是否成功属实会经过如下几步:

- 找到上一笔交易确认货币来源

- 计算对方公钥指纹并与其地址比对,保证公钥的真实性

- 使用公钥解开数字签名,保证私钥真实性

04 去中心化的分布式设计

针对区块链来说,账本数据全部公开或者部分公开,强调的是账本数据多副本存在,不能存在数据丢失的风险,区块链当前采用的解决方案就是全分布式存储,网络中有许多个全节点,同步所有账本数据(有些同步部分,当然每个数据存储的副本足够多),这样网络中的副本足够多,就可以满足高可用的要求,丢失数据的风险就会低很多。所以建议部署区块链网络时,全节点尽量分散,分散在不同地理位置、不同的基础服务提供商、不同的利益体等。

05 传输安全性

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

数字货币安全性思考

01 BTC

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

比特币区块结构

一文看懂区块链技术安全,在安全行业区块链又有什么用

钱包和交易

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

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

交易验证流程大概为:

  • 验证交易双方的钱包地址,也就是双方的公钥。

  • 支付方的上一笔的交易输出,前面也说到了钱包里面是没有存放你的比特币数量的,而你每一笔交易都会产生交易输出记录到区块链中。通过交易输出可以确认支付方是否能够支付一定数量的比特币。

  • 支付方的私钥生成的数字签名。如果使用支付方的公钥能解开这个数字签名便可以确认支付方的身份是真实的,而不是有人恶意的使用当前的支付方的钱包地址在做交易。

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

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

相关文章

相关热点


本网页浏览已超过3分钟,点击关闭或灰色背景,即可回到网页