关于区块链安全性的思考

安全性的定义,从计算机的角度,百度百科如下定义:

安全性(security)

为防止把计算机内的机密文件泄露给无关的用户,必须采取某种安全保密措施,这些措施的有效程序如何就称为计算机系统的安全性或保密性。

引用自
百度百科

针对区块链来说,安全性主要包括以下几种:

  • 密码学安全性

包括了签名、验签、Hash摘要等(不是所有的区块链都需要加密和解密操作),就当前的技术水平来说,绝大部分区块链技术采用的密码学算法都是安全的,当然不排除以后技术的迭代发展出现可能的漏洞,是相对的安全性。至少此类的安全性,目前的技术发展水平来说,暂时无需考虑。(不过作为中国人,还是建议采用国密算法,鬼知道国外的算法到底有没有问题。)

  • 网络安全性

网络安全性指的是数据在网络中传输的安全性,此部分数据还未持久化,包含内存中的数据,暂时统称为空中数据。此类的安全性问题,当前采用的技术解决方案是采用HTTP+SSL的方式进行处理(当然还有WebSocket和WebSocketS),可以保证数据网络传输过程中的防篡改和加密处理。此类问题,当前的技术手段相对来说能满足一定的要求。

  • 数据安全性

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

  • 共识机制安全性

针对区块链来说,其共识机制的选择是区块链技术的关键特征,当前的共识机制有全局化的,每个人都可以参与共识,无任何限制(例如比特币区块链网络和以太坊区块链网络);有局部化,只有指定的关键几个节点起决定性作用(例如Ripple区块链网络)。采用不同的共识机制需要考虑整个区块链网络的活性和业务安全性。像比特币、以太坊等区块链网络,更加强调活性,为了增加整个网络的活性,宁可分叉,也要保证整个网络的持续运行。而Ripple、Stellar等区块链网络,更加强调业务安全性,当网络中出现异常事务时,宁可全网停机维护升级,也要进行维护升级。两种类型的折中考虑和实现,是通过共识机制的设计进行保证,不能简单的评价谁对谁错,要按照业务的实际应用场景进行选择。当进行泛金融领域的业务时,首先应该考虑的是业务安全性,避免系统性风险。

给出一个建议:当要搭建一个公有链时更多的要考虑活性,当搭建联盟链或者专有链的时候,更多的要考虑业务安全性。

  • 业务安全性

或者语义安全性,或者逻辑安全性,此类安全性最为复杂,也是最为难以防范,比如说以太坊的DAO事件,出问题的是在智能合约,而不是底层的区块链网。越灵活使用的区块链技术,出现问题的概率越大,防范此类安全性风险当前没有一个金刚钻,能包治百病,形式化验证、静态分析、覆盖率测试等等,也是在开展基于区块链业务时需要重点考虑的一类安全风险。

汇总了区块链领域的几个主要安全性问题,供参考。

    原文作者:扶摇
    原文地址: https://zhuanlan.zhihu.com/p/26603833
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞