原文标题:《区块链安全和传统安全有什么不同》
作者:卫剑钒,卫Sir说
说起传统安全,很多朋友都比较熟悉,基本而言,就是针对漏洞的攻击,和针对攻击的防护。
但说起区块链安全,很多人就不太了解了。有人说区块链本身是安全的,传统攻击根本奈何不了它;但也经常看到区块链里的安全事件,似乎一点也不少。
那到底和传统安全有什么区别呢?
本文就是讲一讲这个。
1.总体而言
区块链在设计上大量采用密码学技术,在业务层、通信层、数据层均使用了加密、签名、Hash等技术,再加上区块链的去中心化设计,使得区块链所承载业务的保密性、完整性、可用性,达到了史无前例的高度。
但从本质上讲,区块链仍然是一个软件系统,软件可能存在的安全问题,区块链一样有。
即便区块链在底层无懈可击,其上层运行的各种Dapp、Web3应用仍可能漏洞百出。
这就好比,地基做得再安全,也不能保障其上的建筑没有安全问题。
本文的结构:
安全主要看什么?
传统安全的问题主要在哪里?
区块链,解决了什么安全问题?没有解决什么?
2.安全主要看什么?
其实,安全说来说去,就三个东西,至今没有超越:
保密性、完整性、可用性。
这三性简称CIA。
即便有其他的说法,也都不在一个层次上,比如认证性、可控性、可审计性、防抵赖性等等,这些都是CIA的附属或延伸,都是为CIA服务的。
房地产去中心化交易所Coded Estate将部署至Sei Network:2月22日消息,Coded Estate与Sei Network达成合作,将在Sei生态上部署,双方合作关系可以增进现实资产在区块链上的大规模采用。该平台将在Sei测试网上上线,并为社区提供在Sei上铸造第一个NFT的机会。
Coded Estate是第一个为房主、买家和旅行者建立的去中心化交易所,以实现短期和长期住宿和租赁。[2023/2/22 12:22:45]
如何深刻理解CIA?
熟悉UNIX的同学会比较容易理解一些,在UNIX的思维里,一切都是文件,而文件的安全,最终落实到读、写、执行上。用户对某个文件的访问权限,就是是否可读、是否可写、是否可执行。这大体就对应了保密性、完整性、可用性。
保密性,就是不想让别人知道的就不让别人知道。
实现的思路无外这么几种:
不记录,不留任何书面记录,只留在脑海里,且不露声色。
锁起来,不管是物理性还是技术性的锁,实现对访问者的访问控制,被授权者才能访问。
藏起来,只让授权者知道在哪里,其他人不知道在哪里,隐写术也可以归到此类中。
加密,使用编码或者密码的方式,有密码本或者密钥才能访问。
完整性的概念不太好理解,最简单的理解就是,如果没有授权,对一个东西的任何部分都不能添加、减少、更改,如果非授权地做了这些,就破坏了完整性。
此外,完整性还有一个比较直观的含义:一致性。也即系统数据和真实世界一致,正如完整性的英文integrity本身有「诚实」含义一样,数据被篡改就肯定破坏了一致性。
ETHW官方发布分叉时间和主网切换信息:9月13日消息,以太坊工作量证明分叉链ETHW正式发布了分叉时间,即在以太坊合并后24小时内部署。根据ETHW主网社交媒体帐户/img/20230526110501946547/0.jpg "/>
4.区块链解决了什么安全问题?
区块链和传统系统的最大区别就是两点:一是使用了大量的密码技术,二是使用了去中心化的结构。
前者使得保密性和完整性大为增强,后者使得可用性大为增强。
先说一下密码技术使用带来的好处。
在早期的WEB世界里,比如在IP协议里,在HTTP中,在FTP、TELNET中,都不太使用密码学技术。因为当时互联网处于早期,主要目的是互联互通,而且主要在高校和科研机构之间使用,并没有太多精力和心思去考虑恶意攻击。程序员在这些方面总是心思纯净的,总以为别人都是可以信任的,总认为没有人「那么无聊」。
后来他们才发现,现实世界充满了攻击、破坏、仿冒和入侵,程序员们不得不引入各种安全技术,密码学也被因此被引入,SSL、SSH、HTTPS、IPSec这些新一代的网络协议纷纷出现。
但这些大都处于传输层,主要是给传输数据加密的,并没有上升到业务层面或用户层面,最终用户并不能感受到密码学的好处。什么是用户层面的加密?举个例子:office文档的口令加密、winrar加密、truecrypt全盘加密、网银中的U盾等等。
而区块链在设计的一开始,就内置了的加密算法,这使得:
1、区块通过hash链接起来,从第一个区块,直到最后一个区块,所有区块是否正确,都可以很容易地验证,这保证了所有区块数据的完整性。
2、伪造区块的hash并不容易,只有符合特定难度的hash,才会被认可,伪造这样的hash,需要付出大量的计算,和挖矿相匹敌的算力。
3、每个用户有一个私钥,用私钥对应的公钥生成一个可以公开的地址。攻击者无法通过暴力破解的方法获得私钥。
4、由于用户体系是建立在公钥体制之上的,对用户的认证、用户的签名,对称密钥的建立都变得极为容易和便利。
5、区块中的每个交易,都要提供签名才能完成。攻击者没有私钥,无法签名,无法伪造交易;同时,有了签名,用户无法抵赖自己发出过的交易。
可以看到,区块链对hash和公钥体制的内置采用,直接提供了密码学级别的完整性、保密性。
而密码学技术,经过近一个世纪的发展,已经建立起相当坚实的基础,现代密码学的一些公开算法提供着全球顶尖级别的安全保障。这些算法中的佼佼者,目前没有任何国家力量可以破解。
然后看看去中心化的好处:
1、多一个节点,多一个备份。
以比特币为例,全球接近10000个节点提供服务,导致比特币系统自诞生以来,一直稳定地运行,任何人都未能让它停摆。因为即便有8000个节点同时失效,还有2000个在工作。事实上,即便全网只有几个节点工作,这个网络就仍然可以运转。
2、部分变节,仍可工作。
系统的稳健性并不建立在某个操作系统或某种数据库的安全之上,而是建立在其独特的区块式数据结构之上,部分节点即便失陷,即便故意作恶,也不影响大局。具体能容忍多少个失陷变节,要看具体的共识算法。
3、不依赖于某人或机构
只要你愿意,下载一份软件,你就可以加入比特币或以太坊或任何一个公链,你不用征求任何人意见,也不会因为任何人的失踪和退出而担心这个软件的前途,你只是根据你的判断、你的兴趣和你的利益运行它,也就是说,没有单人、单机构可以控制它。
去中心化,大大增强了可用性。
5.区块链无法解决什么安全问题?
从最基本的逻辑讲,区块链只是大大提升了安全性,但并不能确保没有问题。
我们已经在区块链安全经典案例「922亿个比特币」和「TheDAO被盗」中看到:
比特币因为程序员未能注意到整数溢出的问题,闹了大笑话,说好的总量2100万个比特币,居然在某个交易中出现了1845亿个比特币!
构建在以太坊之上的TheDAO,由于开发者对重入攻击一无所知,导致用户众筹而来的300多万以太币被人盗走,落得尴尬收场。
这至少告诉我们两点:
1、作为区块链本身,虽然在设计上使用了大量密码学算法,但如果设计或编码不慎,就可能会有大漏洞。
2、即便区块链本身经过千锤百炼,提供了让人完全放心的安全,其上的智能合约也不能保证安全。
因为智能合约代码中的逻辑,如果和需求、设计、编码的预期不符,就会出问题。
这和传统安全没有任何不同。
此外,还有一点非常关键:
3、区块链所使用的密码学技术,可能本身也有漏洞。
毕竟,密码学也是人搞出来的。
只要是人做出来的东西,就总会有漏洞。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。