由于区块链技术的特性,在设计之处就想要从不同维度解决一部分安全问题:
01 Hash唯一性
在blockchain中,每一个区块和Hash都是以一一对应的,每个Hash都是由区块头通过sha256 计算得到的。因为区块头中包含了当前区块体的Hash和上一个区块的Hash,所以如果当前区块内容改变或者上一个区块Hash改变,就一定会引起当前区块Hash改变。如果有人修改了一个区块,该区块的 Hash 就变了。为了让后面的区块还能连到它,该人必须同时修改后面所有的区块,否则被改掉的区块就脱离区块链了。由于区块计算的算力需求强度很大,同时修改多个区块几乎是不可能的。
由于这样的联动机制,块链保证了自身的可靠性,数据一旦写入,就无法被篡改。这就像历史一样,发生了就是发生了,从此再无法改变,确保了数据的唯一性。
02 密码学安全性
以比特币为例,数字货币采用了非对称加密,所有的数据存储和记录都有数字签名作为凭据,非对称加密保证了支付的可靠性。
03 身份验证
在数字货币交易过程中,由一个地址到另一个地址的数据转移都会对其进行验证:
- 上一笔交易的Hash(验证货币的由来)
- 本次交易的双方地址
- 支付方的公钥
- 支付方式的私钥生成的数字签名
验证交易是否成功属实会经过如下几步:
- 找到上一笔交易确认货币来源
- 计算对方公钥指纹并与其地址比对,保证公钥的真实性
- 使用公钥解开数字签名,保证私钥真实性
04 去中心化的分布式设计
针对区块链来说,账本数据全部公开或者部分公开,强调的是账本数据多副本存在,不能存在数据丢失的风险,区块链当前采用的解决方案就是全分布式存储,网络中有许多个全节点,同步所有账本数据(有些同步部分,当然每个数据存储的副本足够多),这样网络中的副本足够多,就可以满足高可用的要求,丢失数据的风险就会低很多。所以建议部署区块链网络时,全节点尽量分散,分散在不同地理位置、不同的基础服务提供商、不同的利益体等。
05 传输安全性
在传输过程中,数据还未持久化,这部分空中数据会采用HTTP+SSL(也有采用websocket+websocketS)进行处理,从而保证数据在网络传输中防篡改且加密处理。