区块链系统是降低了安全性,而不是增加了安全性
区块链技术有一个“不可能三角形“,就是高效低能、去中心化和安全性不可能同时做到最优。
这就有一个大问题了,去中心化是区块链技术的核心价值,它是共识、不可篡改、可信的基础,去中心化是区块链价值观中的第一原则。
在完全去中心化的系统中,如比特币,效率一定是存在问题的,所以在更加商业化的EOS等系统中,通过牺牲“去中心化”来提高效率,大家是不是记得360给EOS上的那一课,看来不是“去中心化”和“效能”取得平衡就可以了,安全性成了对EOS的一个重大挑战。
所以,安全性是每一个区块链系统都要面对的问题,不管是去中心化的比特币,还是多中心化的EOS,亦或是其他区块链系统。
区块链系统,是一个复杂的技术组合系统,不同技术层面都可能存在安全问题,在节点层,与传统服务器的安全防范措施相比,基础公链系统中的每一个计算节点可以说都是“裸奔”的,就好像是银行的银库和自己家的存钱柜。每一个计算节点很容易受到各种非法攻击。
在合约层,以太坊上的智能合约,可能只是一段代码,存在很多潜在的漏洞,这些漏洞很容易被人利用,用户在区块链上的账户名需要公布出来,通过用户的账户名,很容易获得用户的账户的交易信息和账户余额,隐私问题也是个大问题。用户的私钥是唯一的,一旦丢失,就意味着资产的损失。
因此,区块链系统是一个分布式系统,它增加了威胁和风险的可能,就系统本身而言,是降低了安全性而不是增加了安全性。
我们经常说区块链系统的数据是安全的,是指数据存储的安全,即作为一个全冗余的系统,即使只有一个节点,数据仍然是存在的,同时,这些交易数据是不可篡改的,从这个角度,它是安全的。
那么,对于区块链系统的安全风险,如何进行防范呢?解决方案也是从不同角度出发的。
区块链系统,首先是一个互联网上的系统,传统互联网安全防范的措施,对区块链系统也一样适用。
对节点安全而言,节点加固的安全措施可以从物理层、网络层、系统层、用户访问层等不同角度进行加固,但这些措施是要提给加入网络的每一个节点的,操作难度是很大的,在公有云上运行节点,这些加固措施可以交给更为专业的云服务商。
在合约安全层面,智能合约的安全漏洞扫描和检测是很重要的一个工作,这部分工作可以交给更加专业的合约漏洞检测团队来做,很多研究人员在利用形式化验证来解决智能合约的安全性问题,但形式化验证技术的成熟性也需要保证,这并不是一件容易的事情。
校验一个事件正确与否,并不需要验证者重现整个事件,一笔比特币转帐交易合法与否,只要证明三件事:
第一、发送的钱属于发送交易的人,
第二、发送者发送的金额等于接收者收到金额,
第三、发送者的钱确实被销毁了。
zcash 就是用这个思路实现了隐私交易,在数据交换的安全性方面,动态加密、多方安全计算等也是正在研究和应用的技术,既保护了数据安全,又能推进数据的应用;在用户钱包端安全层面,私钥保护加上各种KYC的验证手法,就是为了保护好钱包的安全性。
魔高一尺,道高一丈,安全的问题是区块链这样的数字货币和数字资产系统首要解决的问题,没有人能够忍受账户资产的丢失或者被盗窃,这关系着区块链应用能否进入寻常百姓家,虽然对区块链技术提出更大的挑战,但这一步是必须要夯实的,而且,区块链安全本身也是区块链的一个大产业和大市场。