区块链网站|NFTS 区块链技术 代码 协作 密码 科学家谈论区块链的前沿技术

代码 协作 密码 科学家谈论区块链的前沿技术

广告位

代码、协同、口令,科学家谈区块链最前沿技术

区块链技术可以降低社会系统运行的信任成本。它通过软件解决信任问题,前提是保证软件的可信度。

同时,对软件运行也要求高性能。虽然目前的区块链性能足以支持我们做一些应用和探索,但它不能取代集中式系统。

如果我们想将区块链应用到社会的各个方面,我们仍然需要打破目前区块链的性能和安全性的瓶颈。

12月6日,《麻省理工科技评论》联合蚂蚁集团举办“区块链与数字经济发展论坛”。美国西密歇根大学计算机系正教授杨紫茳、中国科学院计算研究所研究员、博士生导师孙毅、南开大学教授、博士生导师、天津市网络与数据安全技术重点实验室副主任王鼎应邀参会。他们分别从代码、性能、密码领域分享了区块链技术的最新状态。

“90%的项目代码高度相似,半年后市值降至10%”——杨紫茳(美国西密歇根大学沈心科技正教授、创始人兼CEO)

人类的信息发展非常快。从古代用打结的方式记录,到现代信息时代的邮件、手机,信息流非常通畅,信息量非常大。但是有一个问题一直没有解决,那就是信任。

为什么我们要在火车站排队?因为它不放心你有票上车。相比之下,欧洲的火车站和地铁站是随机抽样机制,因为它假设你有票,它信任你已经买好了。它不收门票,所以没有时间成本。

可见,信任其实是有代价和成本的。我们每天都在为信任付出高昂的成本,无论是时间成本还是金钱成本。

区块链解决了人类历史2000年没有解决的信任问题,至少理论上是这样的。

人类历史有赖于三项技术的进步,从算盘到计算机,运算速度提高了很多。通信技术,从信鸽到互联网,大大提高了信息在传输和存储过程中的信息量以及对信息的评估;但是有一项技术还没有太大的进展,那就是存储技术,以前是用书,现在记录一张光盘,硬盘或者一个外部的云存储项,但是它的信任问题还没有得到很好的解决。

区块链技术是由多方共同记录和维护的分布式数据库。数据库通过哈希形成链式结构,其中数据的完整性由密码学保证,任何一方都难以篡改、否认或伪造。

所以归根结底,这是一种数据库技术,也是一种存储技术。但是区块链是用软件写的。这里有个问题。

比尔盖茨曾经说过,人类历史上创造的最复杂的神器就是软件,复杂到没有人能保证它的正确性。写软件和建摩天大楼不一样。当帝国大厦建成时,它是非常复杂的,因为它是第一座超过100米的高楼。但是你建第二个的时候,如果有第一个的蓝图,就简单多了。

但是软件不一样。每次写软件都是第一次写,所以里面有很多很多错误。工业软件每千行有七个错误。

区块链解决了信任的问题,但是如果写区块链的软件不安全,漏洞百出,信任从何说起?

这里存在很多安全风险,比如基础设施中的区块链时间、代码安全、共识机制、加密机制等。再比如智能合约的安全性,包括溢出漏洞、时间漏洞等。有的是通用软件的漏洞,有的是智能合约特有的漏洞。

2019年,交易所的漏洞占黑客攻击的61%。我们现在主要做的是智能合约的漏洞检查,大概占12%的损失,14%的钱包流水,8%的供应链漏洞等。

我们如何进行区块链测试?

目前我们采用了通用分析、静态分析、模糊测试、并发安全等多种技术。因为每种技术可能能够发现错误,但不是所有的错误,所以应该使用不同的技术来尽可能地确保安全性。

一般分析,如文档规范、社区治理、项目概况分析等。然后用计算分析扫描代码,再加入模糊测试。模糊测试是一种动态技术,最后专门做一个并发安全测试。因为区块链中存在大量的并发问题,并发使得软件写起来非常复杂,并发软件有很多难以琢磨的漏洞,因为人脑不适合写并发程序。

首先,模糊测试是有效的,因为模糊测试真的可以运行你的程序。不像静态分析有很多错误,不是真正的错误,静态分析经过编译器优化,可能和真正的错误不一样。当我们做模糊测试时,我们真的运行区块链软件,在运行过程中可以重复测试,并试图生成一个输入,使其更接近可能出现错误的点。当然,这些都是概率问题,我们不能保证检测出来的误差一定会发生。

那么模糊引擎的测试就是要做一个全自动的测试工具,这是人工做不到的,所以要自动创建一个测试网络,自动部署被测试的智能合约,自动选择Papifashen,根据输入类型生成输入,然后就会自动执行。

它必须反复运行,以查看其中是否有错误。还要监控过程,比如智能合约的哪一部分已经执行了,要避免再次执行。那么,需要记录智能合约遗漏了哪一部分,需要执行什么条件,遗漏部分的具体变量是如何复制的?有什么漏洞吗?所以在观察过程中,检查有没有漏洞是一个环节。更重要的是记录我们哪些地方被执行了,哪些地方没有被执行,如何更改输入,以便下次可以检测到没有被执行的地方。

为了进一步证明不会发生错误,我们使用另一种算法,符号执行。符号执行的计算量相对较大,但它的优点是可以系统地测试软件中的每一条路径。

我们在代码分析方面做了一些有趣的事情,统计了现有开源项目的代码相似度。2019年3月我们拿了485个发币项目,2019年9月我们拿了500多个和66个项目做他们的代码分析。平均而言,他们每个项目的代码量大约是500或600行。

最后的结论是,90%以上的项目代码有80%以上的相似度,90%的项目代码至少有一个其他项目代码有80%的相似度,极少数项目自己写代码。

代码相似度在80%以上,半年后市值已降至发表时的10%以下。如果一个项目的原创性很强,你的市值不会那么容易下跌,也就意味着投资人也会看技术,所以这其实是一个技术实力的问题。

图片|杨紫茳博士

“用协同思维优化区块链性能”——孙毅(中国科学院计算研究所研究员、博士生导师)

我们主要关注区块链技术。底层技术尚未成熟,存在性能、安全性、互操作性、契约强化等一系列技术挑战。性能挑战是目前非常关注的话题。

为什么要使用协同?因为区块链的表现受到许多因素的制约,而这些因素实际上是相互关联的,就像把一块木板放在木桶里一样。当我们补上这个短板的时候,会发现另一个可能会成为新的短板。所以,当我们真正要优化的时候,需要用协同的思想来考虑。

怎么做协同优化?从三个层面分析:

第一,存储计算和传输的协调,存储计算和传输,这是在区块链软件里面。第二,软硬件协同的思想提高了区块链的性能。其实蚂蚁也做了很多软硬件一体化设计,这是一个非常好的思路。第三,作为一个分布式系统,区块链在性能上很难和一些集中式系统竞争,所以更多的是一种互补合作的关系。

在第一部分中,我们在计算、传输和存储级别进行链内优化。在计算层面,我们采用区块链并行化架构模型和算法,通过一条主链连接多个分片和子链,然后将分片和子链并行化,并通过主链进行交互,提高我们的性能。之后,与创新工场的联合实验室提出了异步共识算法,为了防止其安全性被降低,我们还提出了联合共识的机制。通过将同步通信改为异步通信。

在性能研究过程中,我们初步提出了并行多链架构,不需要中间。它没有将传统的新架构分解成纯粹的网状架构,这可以进一步提高我们的整体性能。

除了计算层,存储和传输也需要改进。我们提出了双重压缩方法、K域的数据压缩方法和Y域的两层哈希压缩方法。这是一种基于数据压缩的存储方法BZIP,有效解决了验签的吞吐量瓶颈。它可以显著减少我们对磁盘LO的访问,进而使我们的性能在存储方面得到一系列这样的提升。

在传输层,我们提出了分层传输协议,这是一种基于无连接数据传输和低延迟区块链的传输优化算法。我们在现网上对这个协议做了一些实验,效果也很好。

在第二部分中,我们研究了适用于区块链的特殊计算体系结构,并提出了适用于区块链(KPU,内核处理单元)的特殊计算体系结构。这是专用计算芯片的想法。我们将区块链中的常见操作划分到独立的IP盒中,然后我们使用软件定义的思想。需要的时候,我们把这些IP盒组合起来,形成区块链需要的一些计算逻辑。

本节我们划分了功能区和非功能区,一部分是计算的工作,一部分是数据管理的工作。在这一点上,软硬件一体化是我们未来可以大胆尝试的。

第三部分是区块链系统的协调与协同优化。我们主要做二层渠道和二层网络的优化。例如,我们优化链外的支付通道网络或状态通道网络的路由。但是目前我们支付通道网络中的路由算法相对于互联网中的路由算法来说还是比较初步的。所以我们借鉴了互联网上基于域和层次路由的思想,然后通过一个定制的标签实现了一个层次路由,有点类似于我们互联网上的域间路由和域外路由。通过这种方法,我们优化了我们的路由通道算法,这是我们在链外通道方面的一些工作。

区块链的性能优化重要还是不重要?

对于我们区块链目前正在探索的这些场景和应用,区块链的表现足以支持我们区块链在各个行业进行意向部署和应用探索。在这个层面上,性能的优化可能没那么重要,但为什么还要再做一次呢?

如果能把区块链的表演做得更好,很多未来在区块链还难以做到的场景,未来可能会迁移到区块链。比如每年双十一那天,我们都很期待看到阿里和蚂蚁发布的TPS能达到什么量级。现在,这样的高性能系统确实是由我们的一些集中式系统来实现的,但是在未来,如果我们的区块链真的能够通过我们的努力建立几十万的这样的每秒吞吐量,那么在未来,我们也可以尝试通过应用其中的一些应用,在我们的分布式区块链系统上做一些探索。所以,从这个角度来看,区块链的性能优化其实是非常重要的。

区块链的性能优化不能是单一的突破。一些主要的性能突破通常是与底层技术的这个架构级别和新框架级别一起出现的一些工作。如果单纯做一个算法,一个协议,我们提升的空间不会很大。如果采用协同的方式,我们可以在更多不同的层次、不同的架构上做一些协同优化的思路,可能是我们未来在性能优化上取得突破的一个重要的技术方向。

“诱饵密码技术是兼顾安全与效率的好方法”——王鼎(南开大学教授、天津市网络与数据安全技术重点实验室副主任)

密码自诞生以来,就一直面临着记忆和防猜的矛盾。

其中,记忆密码要求规则且不复杂的密码,而防猜密码正好相反。密码应该尽可能的长且不规则,越复杂越好。而且现在这种情况越来越严峻。我们人类的记忆和认知能力是非常有限的。与2000多年前的祖先相比,我们今天的记忆能力并没有增加多少。

但是攻击者的能力越来越强,比如大家熟悉的云计算和大数据深度学习,使得攻击者的能力越来越强,密码安全问题也越来越严重,所以大家一直在寻找另一种替代密码的认证方式。

密码其实是老生常谈,我们每天都在使用,但长期以来,我们低估了它的问题和研究的难度。

早在2004年,比尔盖茨就是当时的微软CEO。他提出了密码替代计划,谷歌和其他许多大公司也纷纷效仿,但后来这些计划就悄然消失了。

从2000年开始,学术界也提出了大量可供选择的认证方案,但没有一个能够取代密码,密码至今仍主导着我们的认证世界。

这是有深层次原因的。身份验证方法可以分为三类。

第一种是基于用户知道的东西,比如密码和口令。比如我们输入的6位数字也是一个数字密码。

第二类是基于用户所有权,比如我们之前用的银行的u盾,USB Key,我们的智能卡。

第三类是基于用户的主要生物特征。包括我们的指纹和人脸,这些都是传统的身份认证方式。包括手势、键盘敲击的频率等。这是一种基于新行为的身份认证方法。

后两种认证方式,无论是基于硬件还是基于生物特征,都存在严重的问题,其中硬件成本比较高,最大的问题是没有,用户无法随身携带几十个u盾。

在过去的几年里,生物特征特别受欢迎。在过去的两年里,人们逐渐意识到了它的问题。比如很多城市前两天刚出来禁止刷脸,法律明确规定禁止刷脸。不仅仅是刷脸,我们的指纹,包括我们的步态等身份认证方式都不适合互联网认证和网络认证。生物识别有它的优势,哪里适用,现场认证没有问题,比如门禁。

如果你没有联网,比如解锁我们的手机,没有问题,只要我们的生物特征没有上传到服务器。

但是在实际使用中,我们上传的是自己的生物特征数据,这里存在一个巨大的问题,就是不可再生。密码和生物特征以01代码存储在我们的计算机中。密码会被泄露,生物特征也会被泄露。我们的密码分分钟可以改,但是我们的生物特征是改不了的。我们只有一张脸,只有10根手指。一旦泄密,将终身泄密。

图|王鼎博士

所以现在学术界已经逐渐形成共识,在可预见的未来,密码仍将是最重要的认证方式。

近年来,发生了数百起“拖库”事件,其中包括一些大型网站,如雅虎、Linkedin、Adobe、CSDN等大量用户密码泄露,部分加密货币交易所也遭遇此类危机,导致用户经济损失严重。

比起被“拖到图书馆”,更可怕的是,网站并没有发现自己被“拖到图书馆”,数据直到N年后才浮出水面。如果密码文件泄露,网站及时发现并通知用户更新密码,可以挽回一些损失。但现实中很多网站并不知道密码文件被泄露,包括几十个用户量很大的网站,都泄露了500万以上的用户账号,而且往往是8、4年后很久文件才被黑客窃取。

如何减少用户密码泄露带来的危害?目前主要用三种技术。

首先,使用机器相关的功能。比如密码猜测一般涉及哈希运算,可以使用一个只有特定服务器才能计算的哈希函数。黑客窃取密码文件后,没有这样的服务器,无法计算机器相关的哈希函数,这是一个机器相关的函数。

第二,使用门限密码。这是一个经典而传统的思路,把密码分成多份,存放在不同的地方,不同的服务器上。

第三种方法是放置假密码,以假乱真,蒙混过关,及时察觉。

前两种技术往往对客户端或者服务器的影响很大,所以需要对服务器和客户端进行修改。然而,设置假密码的技术不会改变用户。现在业内经常有一句话:什么东西最贵,改变用户的习惯成本最大,所以尽量不要改变用户的习惯。

因此,分布式密码技术在现实中不太可能被使用,并且机器相关的功能存在可扩展性问题。所以,虽然放置假密码不是最好的方法,但从综合安全性和效率来看,还是可以接受的。

广告位
本文来自网络,不代表区块链网站|NFTS立场,转载请注明出处:https://www.qklwz.com/qkl/jishu/32919.html

作者: 未来已来

上一篇
下一篇

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

返回顶部