社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  区块链

布鲁斯·施耐尔:区块链技术不值得信任

安全牛 • 7 年前 • 1049 次点击  

近日,密码领域大师布鲁斯·施耐尔,在《连线》针对发文评论区块链技术。



2008年首篇提出比特币的白皮书中,中本聪写道:


我们提出了一套不依赖任何信任体系的电子交易系统。


他指的就是区块链——比特币背后的支撑技术。绕过信任的前景相当美好,但并不现实。诚然,比特币摒除了信用卡之类其他支付系统中固有的受信中介环节。但你仍需信任比特币,以及关于比特币的一切。


讲述区块链的文章很多,各种描述区块链将如何取代、重塑,或终结信任。但如果仔细分析区块链和信任,你很快就会发现这其中炒作多于价值。区块链解决方案比它们号称要替代的旧有信任系统糟糕得多。


首先,为防止误解,本文讨论的区块链所指非常具体:组成公共区块链的数据结构和协议。共有3个基本元素:第一个基本元素是分布式(多个副本)但集中化(同一内容)的账本——用来按时序记录所发生的一切。账本是公开的,意味着任何人都可以读取;同时也是不可更改的,意味着没人可以改变过去发生过的事件。


第二个基本元素是共识算法——确保账本的全部副本都是相同的。这就是所谓的挖矿了;该系统中的一个关键部分就是任何人都能参与。共识算法也是分布式的,意味着你无需信任共识网络中的任何特定节点。该算法还有可能超级昂贵,不仅仅体现在数据存储上,还体现在维护的电力消耗上。目前为止,比特币是世界上最昂贵的共识算法。


最后,第三个基本元素是货币——具备价值并公开交易的某种数字令牌。货币是激励区块链参与者的必备元素。涉及这些令牌的交易都存储在账本上。


私有区块链完全没意思。(这里的私有区块链指的是使用区块链数据结构,但并不具备上述三种元素的系统)。私有区块链通常对谁能与区块链及其功能互动有些外部限制。这种东西并不新鲜,也就是仅限追加的分布式数据结构,不过附带一张有权往链上增加节点的人员名单。分布式系统中共识协议的研究有超过60年的历史。仅限追加的数据结构也同样被研究得很透彻了。这些不过是名义上的区块链罢了,运营这么一套系统,也就是想乘上区块链炒作的东风而已。


公共区块链的三个基本元素有机结合在一起形成一张单独的网络,能够提供新的安全属性。问题在于:真的有什么好处吗?归根结底还是个信任问题。


信任是社会的基础。人类是靠信任联结彼此的物种。离了信任,社会便不能运转。而我们绝大多数人压根儿没思考过信任问题的事实,正是信任运作良好的明证。


信任这个词有许多含义。有个人和亲密关系上的信任,比如朋友之间的信任。当我们说我们信任某个朋友时,指的是我们相信他们的意图,并且知道这些意图能够揭示他们的行动。也有不那么亲密也不那么个人的信任——我们可能不认识某个人或者不清楚他们的动机,但我们可以信任他们未来的行为。区块链实现的就是后一种信任:我们不认识任何比特币挖矿者,但我们相信他们会遵守挖矿协议并维持整个系统运转。


大多数区块链狂热爱好者都有一种很不自然的对信任的狭隘定义。他们很喜欢使用一些引人注意的流行语,比如“信任代码”、“信任数学”、“信任加密”等等。这是把验证当信任,但验证并不等同于信任。


2012年出版的《骗子与外行》一书探讨了信任与安全问题。书中列出了人类用以激励可信行为所用的4套通用系统,前两个是道德和声誉。这两套系统的问题是只能扩展至一定的人口规模。原始系统在小社区运作良好,但大社会就要求委托机制和更多的形式化了。


第3套系统是制度。制度就是引导人们按群体规范表现的规则和法律,对不遵从群体规范的个体施以制裁。某种意义上讲,法律就是形式化的声誉。


最后,第4套系统是安全系统,也就是各种各样的安全技术:门锁、高墙、警报系统与警卫、取证和审计系统等等。


这4个元素联动产生信任。以银行业为例。金融机构、商家和个人都要考虑各自的声誉,声誉就是防止盗窃与欺诈的凭借。围绕银行业方方面面的各种法律与监管约束参与各方都不越界,包括限制欺诈风险的最后防线。还有从防伪技术到互联网安全技术的各种安全系统。


2018年,Kevin Werbach 出版了一本新书——《区块链与信任新架构》,书中描述了4类信任架构。第一种是点对点信任。这种信任与上文提到的道德和声誉系统相一致:人们两两信任。他的第二类信任是利维坦式信任,与上文所述制度式信任相同。我们在契约/合同系统中可以看到这种信任:因为共同信任政府系统会帮助解决争端,互不信任的各方可以凭借契约达成一致。第三种是中介信任。这种信任的一个良好案例就是信用卡系统:即便不存在信任关系,卖家和买家仍可凭借信用卡系统进行商业交易。他的最后一种信任架构是分布式信任,也就是区块链这种特定安全系统中的新兴信任。


区块链所做的就是将存在于人们之间和制度中的信任转换成对技术的信任。你得信任那套密码、协议、软件、计算机及网络。而且需要绝对信任它们,因为它们一旦出现故障往往就是单点故障。


该信任一旦错付,追讨无门。如果你的比特币交易所被黑,你会失去所有投入其中的金钱。如果你的比特币钱包被黑,所有投资血本无归已成定局。如果你忘记了登录凭证,金山银山锁在里面也取不出来。如果你的智能合约代码存在漏洞,小钱钱必然打水漂。如果有人成功黑掉区块链安全,你将损失全部加密资产。从很多方面看,信任技术比信任人更难。你更愿意信任人类司法系统,还是信任那些你根本不具备专业技术去审计的计算机代码细节呢?


区块链狂热爱好者常拿一些更传统的信任形式说事儿,比如指称银行收费太高。但区块链信任的成本也不低,只不过都是隐藏成本。就比特币而言,成本就是挖掘更多比特币的消耗、交易费用,以及大量的环境废料。


区块链不能根除对人类制度信任的需求。技术本身不能解决所有问题。总要有人去负责,总要有系统外的监管。这一点在当前热议的比特币区块大小修改或以太坊DAO攻击修复上体现得很明显。修改规则的需求总是存在,做出永久性规则修改的能力需求一直存在。只要存在硬分叉可能性,就需要人去负责。(硬分叉是负责区块链的人跳出系统外去改变该系统。)


区块链系统将不得不与其他更传统的系统共存。比如说,现代银行系统允许撤销操作,区块链却不行。这就让二者很难兼容,其结果往往是不安全性。Steve Wozniak 就因为忘了这一点而被骗走了价值7万美元的比特币。


区块链技术往往是集中式的。比特币理论上基于分布式信任,但在实际操作中却不是这样的。使用比特币的每个人都必须信任少数可用钱包中的一种。使用少数可以用交易所中的一个。人们不得不信的那些软件和操作系统,以及承载着所有这些东西的计算机。而我们已经见证过了对加密货币钱包和交易所的攻击。我们见识过了加密货币木马、网络钓鱼和密码猜解。网络罪犯甚至利用人们用以修复手机的系统中的漏洞,来盗取比特币。


而且,任何分布式信任系统中,都有供中央集权潜入的后门。在比特币身上,这一点表现为只有少数挖矿者手握大权。提供绝大多数挖矿硬件的仅一家公司。主流交易所就那几家。这就造成参与比特币的绝大多数人都是通过这些集中化的系统进行操作的。于是,对基于区块链的系统进行攻击并非不可能。


这些问题不是当前区块链应用中的漏洞,而是区块链机制中固有的。对此类系统的安全评估需将整个社会-技术系统纳入考虑。太多区块链狂热爱好者都只关注了技术而忽略了其他。


以至于不使用比特币的人就是因为他们不相信比特币,而与加密或协议无关。事实上,仅仅忘记密钥或下载了恶意软件,就会损失毕生积蓄的系统,没那么值得信任。再怎么解释SHA-256如何防止重复消费都没用。


同样的,确实使用区块链的人也就是因为他们信任区块链。这些人要么拥有比特币,要么并不依靠声誉;这一点甚至对相信比特币能让自己一夜暴富的投机者来说也是适用的。人们基于声誉为自己的加密货币选择一种钱包,为自己的交易选择一家交易所。我们甚至基于该算法的声誉来评估和信任支撑区块链的加密。


看看使用区块链的各种供应链安全系统就可以知道这一机制会出什么问题了。区块链不是这些系统的必备功能。这些系统之所以成功,是因为每个人都用单一的软件平台输入他们的数据。尽管区块链系统建立在分布式信任的基础上,人们却未必接受。举个例子,有些公司就不信任IBM/马士基系统,因为这不是他们自己的区块链。


听起来似乎不理性?也许吧,但这正是信任运作的机制。信任不能被算法和协议替代,这是一种比单纯的技术更为社会化的东西


而区块链终将根除对信任的需求的想法依然存在。一家使用区块链实现了安全消息传递的公司就曾表示:


正如我们所实现的,区块链的运用根除了对信任的需求。


这种想法表露出此人误解了区块链的作用以及信任的运作机制。


你真的需要公共区块链吗?答案几乎可以肯定是“不”。区块链很可能解决不了你想象中它能够解决的那些安全问题。区块链解决的安全问题很可能不是你面临的那些。(审计数据篡改可不是你的主要安全风险。)对区块链的错误信任本身就是一种安全风险。区块链的低效,尤其是在扩展上的低效,很可能并不值得你投向区块链的怀抱。很多区块链应用即便不采用区块链,也可以达到相同的安全功能,当然,不使用区块链它们就没那么酷的名头了。


老实说,加密货币没什么用处。只有想赚热钱的投机者、不信任政府发行货币的人,以及想在黑市上洗钱的罪犯会用加密货币。


想知道自己是否需要区块链,不妨扪心自问:区块链是有效改变了信任系统,还是仅仅做了一些调整?区块链是否只是用验证代替了信任?区块链到底是强化了现有信任关系,还是削弱了它们?区块链系统中信任会遭到怎样的滥用?相比旧有系统中的潜在滥用是更好还是更糟了?最后:如果你根本不使用区块链,你的系统会是什么样子?


只要你问问你自己上面几个问题。你就很可能会选择不使用公共区块链的解决方案。这将会是个好决策——尤其是在区块链炒作消散的时候。


中本聪的比特币白皮书:


https://bitcoin.org/bitcoin.pdf


《骗子与外行》:


https://www.schneier.com/books/liars_and_outliers/


《区块链与信任新架构》:


https://mitpress.mit.edu/books/blockchain-and-new-architecture-trust


区块链应用:


https://www.oreilly.com/ideas/blockchain-applications


相关阅读

企业区块链应用的5种攻击方法

布鲁斯·施奈尔:让企业严肃对待信息安全的唯一办法就是

安全大师施奈尔:全球各国都应该开始考虑监管IoT安全

钱包、智能合约、交易所都不安全 区块链安全由其最弱一环决定



Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/29209