区块链技术的风险!(转载)_工业区块链技术风险-程序员宅基地

技术标签: 区块链  互联网金融  互联网安全  

本文转载自 搜狐财经 作者: 程显峰 原文链接

一、安全隐患
包含三点:

私钥丢失;
错误的实现;
协议被攻击。
47c1301a29af9da6bc8ad176b8ce5e2435dad6ce

秘钥安全:区块链技术一大特点就是不可逆,不可伪造,但前提是私钥是安全的。秘钥安全问题看似老生常谈,其实在区块链世界里还有特别的意义。
与以往任何体系不同的是,私钥是每个用户自己生成并且自己负责保管的,理论上没有第三方的参与,所以私钥一旦丢失,便无法对账户的资产做任何操作。多重签名某种程度上能解决一部分问题,但实施起来非常复杂,而且要设计与之相配套的非常复杂的秘钥管理和使用体系。

对于普通大众用户,或者没有太多技术经验的企业用户,天然会觉得补私钥可能和补身份证或者营业执照差不多,但事实上这根本就不可能,所以私钥的安全非常重要。但遗憾的是国际通用的多因素认证体系实施得并不好。

多因素体系最常见的维度包括:

知识,知识指的是密码这类能被记忆的知识。
资产,资产包括门禁卡,令牌,手机,密码键盘,智能卡等。
本征,本征包括指纹,虹膜,DNA,声纹等。
使用一种维度因素的认证方式叫单因素认证,使用两种的叫做双因素认证。

目前单因素认证早已经被业界认为是不安全的,所以国内基本和支付相关的应用除了密码以外,至少也得发一个验证码给手机,这就是对手机这一资产的因素验证。但进行大部分资产的因素验证并不具有理论上要求的可信环境,或者称之为终端安全,这就大大提高了私钥暴露的风险。比如,严格的说大部分手机都不算可信的计算环境,但是因为太方便了,所以大家做了很多妥协。这在保护低价资产的时候还可以忍受,但往往大家用区块链都是些重要价值的业务。

那么本征因素怎么样呢?是不是三因素认证就会解决这个问题呢?

很遗憾,安全业界对使用本征因素存在非常多的争议,主要的反对理由就是,本征类别的特征,大部分是生物特征,一旦泄露将很难更改。试想一旦我们的指纹落入不法分子手里,我们将一生都会受到其困扰,从以往的经验上来看,这种事情的大规模发生只是早晚的问题。

小结两点:

私钥的补发与管理和区块链的分布式是冲突的;
私钥的认证需要可信的计算环境在很大程度上是缺失的。
错误的实现:即便是理论上很完备的算法,也会有各种实现上的错误。由于区块链大量应用了各种密码学技术,属于算法高度密集工程,出现错误也是在所难免。

历史上这类事情有很多,比如NSA对RSA算法实现埋入缺陷,使其能够轻松破解别人的加密信息。一旦爆发这种级别的漏洞,可以说区块链整个大厦的基础将轰然倒塌,不会有一个幸存者。即便我们乐观一点,假设没有人或者机构存心搞鬼,也存在工程实现上的非主观缺陷。比如OpenSSL的心脏滴血漏洞,相信有金融网站的人都经历过这个事情的这是世界上最优秀的算法工程师做的被最广泛应用的加密算法库。

我们如何能相信未来区块链使用这么多加密算法后还能独善其身呢?

假设基础类库和服务都没有问题,能将其正确地整合到应用的中技术人员也是凤毛麟角。比如blockchain.info被爆没有正确生成随机数,导致严重的安全问题;以太坊DAO合约漏洞致使业务还没有开展的时候,准备的钱已经不见了。更加可怕的事实是,技术风险已经超过业务风险成为区块链的主要风险。以往金融机构也是涉及业务风险和技术风险,虽然也重视技术风险,但是整个体系的建设还是围绕着防范业务风险展开。但是从区块链现在最成熟的应用比特币来说,目前比特币交易所遭遇的最大的危机都来自于技术风险而不是业务风险。

曾经世界上最大的交易所Mt.Gox倒闭就是因为黑客攻击导致巨额资产损失。就在最近,世界知名交易所Bitfinex也因为多重签名缺陷导致12万个比特币(6800万美元)的损失。所以我们有理由相信,未来在区块链上这种技术风险的防范一定是流程中的重中之重。

协议被攻击:比特币成功与它强大的算力基础分不开。

                                                   fc01a04b31cc32bdabac6e957553013e560399cc

目前其它的区块链应用的算力都还与比特币无法相比(目前1,600,000,000 Hash/s),其他区块链应用难以有足够的算力来保证系统的稳定性,理论上也越容易收到比如51%算力攻击这样的在基础协议层面的攻击。Krypton平台最近就遭到这种攻击,而且这种攻击方法被认为是一个有效的攻击以太坊的手段。这种事情并不是偶发,而是接连发生,如果“51%算力攻击”蔓延下去,那么区块链所标榜的“不可篡改”将不复存在,任何基于区块链的信任应用都将土崩瓦解。除了这种已知的攻击方法,我们预测攻击协议的其他手段也会层出不穷。由于区块链本身的分布式特性导致其进行整体升级非常困难,所以一旦发现有效的攻击手段,可能在很长的一段时间内,对区块链系统都会造成持续不断负面影响,那是一种难以彻底清除的梦魇。

二、生态圈不成熟
区块链技术不能独立于其他关联技术而独立发展,这和云计算类似。亚马逊的云计算大规模商用的时候已经有了数十个服务,区块链目前还没有完整的生态社区。虽然目前有很多非常强大的公司联盟、开原组织的支持,但是生态体系的建设不是一朝一夕的事情。

电动汽车再好也得有充电桩,区块链再好也得有一系列为其服务的基础设施,比如适用于区块链的数据库和存储方案,为区块链加速的网络服务,提高安全性的硬件密钥的广泛应用等等。互联网70年代产生,90年代Email作为其第一个成功的应用被广泛使用,期间经历的时间比大部分人预想的都要长。构筑完善的生态系统,不但要求技术上的各种突破,也需要人们改变一些思维定式,并不是那么容易的。

目前的区块链应用,基本上一张A4纸就能写下所有的名字,当然会有很多大家还在酝酿当中搜索不到的项目,但是也不妨碍说明这个生态还很小。尝试是当然可行,但是想要形成具有规模的生产力还不太现实。妄图单点突破不切合工业社会后的社会分工协作的基本发展趋势。当然我们也看到有少数进展比较快的项目,比如IPFS,BigChainDB等等。这些项目还处于非常早期的阶段,能够达到商用至少需要两年以上的时间。

三、性能瓶颈
原来大家讲区块链是可以低成本快速转账,但从比特币的实际应用来看性能是困扰其发展的最大瓶颈。现在的比特币交易只能达到每秒7笔交易,相对于VISA公布的每秒44万笔交易相差实在太多。虽然也有些新的区块链技术号称能够做到每秒几万笔交易,但是基本上都是基于实验室环境或者不能进行大规模应用。

                                                   900df9ac3352e21eca54cf5920e93bc54e643e9c

性能会极大地制约区块链的应用场景

纽交所核心系统要求在每秒百万级别,上证深证在每秒几十万笔级别,物联网要求在每秒几千上万级别,这也就是为什么现在国外的区块链创新都围绕在一些鉴定、存证等要求处理速度不高的场景。目前市面充斥着各种性能评测报告,但多数都没有具体测试方法和实验参数导致很难验证,不得不说这是一个非常遗憾的事实。目前比特币的交易网络有大量交易需要等待5-6小时才能被确认,对于提升其性能的方法也存在很大的争议。其根本原因就是在分布式、一致性保证的前提下,性能被牺牲掉。“多快好”的方案是不存在的,我们选择了“多”(分布式)和“好”(一致性),就必须放弃“快”(性能)。由于性能瓶颈,导致了比特币转账费用持续攀升,不知道其他区块链应用如何来应对这种问题。

四、智能合约困境
智能合约就是潘多拉魔盒,它的出现只是噩梦的开始。

                                                   90e81945c3a77eaedfa7bc56bd5998f18e930699

现在的智能合约是图灵完备的,也就是理论上它的计算能力和我们用的计算机是完全等价的,所以它会带来非常大的好处,是区块链质的飞跃,但同时也会带来与之相对应的灾难。比如计算机出现后出现了计算机病毒,智能合约理论上一样存在智能合约病毒。这种病毒通过感染修改其他合约的方式来实现合约作者意图之外的功用。(这不是科幻小说,相信这一天不久就会到来,其影响一定会远远超过计算机病毒。)

另外智能合约很难与人的真实意图完美对应,理论上也不存在这样的系统。智能合约的编写需要专门的技术,相信短时间内这方面的人才会非常短缺。由于智能合约在编写上的困难性,会导致一批衍生机会,比如智能合约律师,负责验证智能合约与法律的衔接问题,智能合约保险,一旦智能合约不能表达产权人的真实目的可以获得一定的赔偿。

正确性验证与证明(validation and verfication),某种程度上能解决问题,但其缺点是不成熟,实施成本巨大,所以也有待新的技术突破。

现阶段的智能合约有非常大的限制,就是升级非常困难。一旦发现合约漏洞,将很难通过升级的方式来解决问题。以太坊因为DAO事件,无奈采取硬分叉策略是大家都不愿意看到的。

现实的合同基本上都有一条“未尽事宜协商解决”,那么智能合约的协商解决如何定义,如何同步就是问题了,目前开来智能合约在这方面还有很多值得研究和探讨的问题。随着这些问题的深入解决,预计智能合约也会变得非常复杂,甚至一般的程序员都很难理解。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_16414307/article/details/78707460

智能推荐

90岁了,褚时健罕见反思:活着是为了什么?-程序员宅基地

文章浏览阅读378次。他,传统企业的爆品王,造酒、制糖、产烟,种橙子,干什么都是最好的。他,影响企业家的企业家,他的故事和创业精神,深深影响了中国企业界包括柳传志、王石等一些大佬,以及无数要为明天而奋斗的年轻人。他,就是褚时健。褚时健,这个曾被报告文学形容为像太阳一样灿烂的男人,淡然外表下的内心,似乎没有一个人能触碰到。观其容,听其语,你也许读不出跌宕起伏的人生,看不到在老人温暖笑容中刻下的沧桑,但一定不会忽略那亲自铸_90岁了,褚时健罕见反思

算法特训营第12周刷题题目-程序员宅基地

文章浏览阅读114次。算法特训营本周内容:1. 录播视频:树状数组,二维树状数组。2. 直播刷题题目:POJ2352、POJ3067、POJ3321、POJ1195。友情提示:以下是直播刷题链接(收费),不需要看直播请忽略。【直播地址】https://www.epubit.com/courseDetails?id=PCCbf16b01a6788&recommenderCode=1540556欢迎大家一起刷题。...

NBT:5万个基因组和1.2万个新种的地球微生物基因组集-程序员宅基地

文章浏览阅读3.6k次,点赞4次,收藏14次。地球微生物组的基因组集A genomic catalog of Earth’s microbiomesNature Biotechnology [IF:36.558]2020-11-09..._ani 新属

algorithm第三周作业 Collinear Points_algorithm i collinear points-程序员宅基地

文章浏览阅读889次,点赞2次,收藏2次。cousera 上algorithm part I第三周课程讲述的是排序,包括插入排序、选择排序、希尔排序、归并排序和快速排序。其配套作业为Collinear Points,题目大意为给定若干点,求出其中的有四个及以上点共线的线段。要求提交三个文件,Point.java,BruteCollinearPoints.java,FastCollinearPoints.java。Point类给定的的..._algorithm i collinear points

window.location.hash使用总结_$(window).bind('hashchange',-程序员宅基地

文章浏览阅读7.7k次。如果a的name和页面中某个元素的id同名的话,在Safari、Chrome浏览器中会跳到id元素的位置,在IE中则会跳到a元素的位置可以使用jQuery的haschange事件来侦听浏览器点击后退时的hash变化的事件.$(window).bind('hashchange', function () { //});不过以上方案在IE浏览器只能支持到IE8_$(window).bind('hashchange',

[C#]替换字符串中的斜杠和反斜杠_c# 替换斜杠-程序员宅基地

文章浏览阅读6.8k次,点赞2次,收藏2次。含有斜杠的字符串 中的 斜杠 替换为 反斜杠... string a = "X:\Data Backup\UnityProjects\TestAssetBundle\Assets";//Application.dataPath a = a.Replace("\\", "/");...显示结果X:/Data Backup/UnityProjects/TestAssetBundle/Assets..._c# 替换斜杠

随便推点

Python中如何使用matplotlib给柱状图添加数据标签(bar_label())_matplotlib柱状图添加标签-程序员宅基地

文章浏览阅读2.4w次,点赞15次,收藏91次。Python中如何使用matplotlib给柱状图添加数据标签(bar_label())    本文主要记录如何用使用matplotlib给柱状图添加数据标签,是以matplotlib.pyplot.bar_label()为例。目录Python中如何使用matplotlib给柱状图添加数据标签(bar_label())0.更新matplotlib库1.导入库2.数据准备3.绘制柱状图4.绘图结果5.完整代码6.bar_label()相关参数的补充说明7.参考文献0.更新matplotlib库    _matplotlib柱状图添加标签

java持续集成soapui_集成testNG到JavaAPI测试-执行多条用例-程序员宅基地

文章浏览阅读102次。*****************************************************************在这门课里你将学到Web Services(SOAP WebService和REST API)的手动测试及自动化测试,熟练使用Groovy脚本自动化测试WebService。这门课程设计的是从零基础入门开始学,然后以循序渐进的方式提升到高级水平,不需要在学习课程之前有任..._testng 可以提供soap

Serverless 框架之Kubeless 实战-(一)安装-程序员宅基地

文章浏览阅读1.4k次。1. 创建命名空间,创建kubeless 控制管理容器>kubectl create ns kubeless#自行安装方便切换空间的kubens>kubens kubeless#根据官方提供的yaml ,创建Kubeless Controller Manager容器:>kubectl create -f https://github.com/kubeless/kubeless/releases/download/v1.0.7/kubeless-non-rbac-v1.0..._kubeless

linux eclipse设置颜色,Linux Eclipse美化:解决工具栏过大和 Javadoc背景色修改-程序员宅基地

文章浏览阅读154次。Eclipse 在Ubuntu 下总是感觉上面的工具栏感觉特别的大,控件之间的空隙非常的大,和在Windows 下的感觉非常的不一样(毕竟是刚刚从windows叛逃出来),其实也不光光是Eclipse 是这样,其他也软件也同样有这个问题。尝试过通过更换主题来解决这样的问题,老是看着一个主题,审美总是会疲劳的。在网上找来一圈,解决方案:修改或者新建(系统默认是没有的)/home/Your_usern..._eclipse toolbar颜色

python基本图形绘制第二周答案_考试 嵩天老师 :测验2: Python语法程序与设计(第2周)...-程序员宅基地

文章浏览阅读1.1k次。测验2: Python基本图形绘制 (第2周)单项选择题1、哪个选项不能正确引用turtle库进而使用setup()函数?A、import turtle as tB、import setup from turtleC、from turtle import*D、import turtle正确答案 Bimport只有三种使用方法,以turtle库为例:import turtlefrom turtle ..._00390037003900301688536597255哪个选项不能正确引用turtle库进而使用setup()函数

[蓝桥杯2018初赛]乘积尾零(思路)_乘积尾零思想-程序员宅基地

文章浏览阅读343次。说实话,刚开始想简单了,只考虑了每个数的最后一位,但是没想到还能因式分解,每个数的因子里的2的个数和5的个数需要统计一下,因为2*5==0#include<stdio.h>#include<queue>#include<math.h>#include<map>#include<iostream>#include<string>#include<algorithm>#include<sstream>._乘积尾零思想