1.5 安全性考量

区块链的安全性考虑除了密码算法、网络安全、数据安全和共识机制等方面的技术因素,同时也需要考虑业务安全,此类安全与业务逻辑(语义上)相关,需要谨慎处理。

1.密码算法安全性

区块链主要的密码学算法包括签名/验签、Hash摘要和加密/解密等。当前业界通常选择主流的国际通用密码学算法。就当前的技术水平来说,绝大部分区块链技术采用的密码学算法都是相对安全的,不排除随着新兴技术(量子计算)的迭代发展出现可能的漏洞或者安全性问题。

未来随着量子计算的工程化应用,确实会对当前的密码学算法提出挑战,但随着技术的进步,密码学算法的可靠性和复杂度亦会逐步优化提升以应对周遭环境的改变。

注意

量子计算终结区块链?所有应用密码学算法的系统都将面对挑战。

在选择密码算法时有以下两条建议。

❏ 采用国际通用的密码算法。

❏ 某些场景可以采用专有的密码算法,例如SM2、SM3等。

2.网络安全性

网络安全性指的是数据在网络中传输的安全性,一方面要解决防篡改问题,另一方面要解决加密安全性问题,当前区块链网络通常采用HTTP+SSL(或者WebSocket SSL)方式进行处理。

由于区块链网络的开放性,尤其是公有链网络,需要应对DDoS攻击等网络安全问题,所以通常采用发行原生资产的方式处理,提高网络攻击的成本,提高网络的健壮性。

注意

原生资产指的是区块链网络创世启动运行后就存在的资产。

3.数据安全性

考虑到数据安全性,针对区块链来说,分布式账本强调的是账本数据多副本存储,网络中拥有多个(甚至是大量)全节点,同步所有账本数据,自身就是一种高可用的存储网络。

在部署区块链网络时有以下建议:

❏ 部署区块链网络时,全节点的部署要尽量分散在不同地理位置;

❏ 部署区块链网络时,全节点的部署要尽量分散在不同的基础服务(云服务)提供商;

❏ 部署区块链网络时,全节点尽量属于不同利益体所有;

❏ 应用场景需要加解密时,需要采用相应密码学算法进行区块链功能增强。

4.共识机制安全性

针对区块链来说,其共识机制的选择是区块链技术应用的关键,当前的共识机制有全局化的,每个人都可以参与共识,无任何限制(例如比特币和以太坊区块链网络);也有局部化的,只有指定的几个关键节点起决定性作用(例如Ripple和Stellar区块链网络)。

共识机制的选择需要综合考虑区块链网络的活性、业务安全性和性能。

像比特币、以太坊等公有区块链网络,更加强调活性,为了增加整个网络的活性,宁可硬分叉,也要保证整个网络的持续运行。

而联盟链、专有链等区块链网络,更加强调业务安全性,当网络中出现异常事务时,宁可全网停机维护升级,也要保障业务的安全性。

上述两种处理类型的折中考虑和实现,是通过共识机制的设计来保证的,不能简单地评价谁对谁错,要按照业务的实际应用场景进行选择。

在选择共识机制时有以下建议:

❏ 当进行泛金融领域的业务时,首先应该考虑的是业务安全性,避免系统性风险;

❏ 当要搭建一个公有链网络时要更多地考虑活性;

❏ 当搭建联盟链或专有链网络时,要更多地考虑业务安全性和性能。

5.业务安全性

业务安全性又称为语义安全性,或者逻辑安全性,此类安全性最复杂,也最难以防范,比如说以太坊的DAO(Decentralized Autonomous Organization,分布式自律组织)事件,问题就出在智能合约,而不是底层的区块链网络。

建议如下:

❏ 使用形式化验证和静态分析等方法充分验证测试。

❏ 除了系统监控系统,还要搭建业务监控系统,构建业务检查表(checklist),进行实时业务检查。