大家好,欢迎来到IT知识分享网。
近年来,区块链技术发展迅速,随着区块链被应用于各个领域,区块链安全也开始面临新的挑战。
为加深学术界与产业界的结合,将区块链安全研究学术成果转化成产业实践优势,更好的推动数字金融发展。8月28日下午,云象联合VNT Chain技术社区举行了以《区块链安全》为主题的meet up。会议由云象区块链创始人黄步添主持,并邀请到山东大学计算机科学与技术学院副教授万志国、云象区块链基础设施研发负责人石太彬、浙江工商大学软件工程系系主任 云象区块链研究中心首席科学家刘振广、成都链安联合创始人郭文生副教授、云象-浙江大学联合区块链实验室负责人陈建海副教授等嘉宾,从零知识证明账户模型、中国人民银行金融区块链安全评价标准、智能合约安全和网络防护、智能安全漏洞检测以及区块链安全&跨链研究进展等各个方面展开分享和深入讨论。以下为分享要点内容整理。
零知识证明账户模型
山东大学计算机科学与技术学院副教授万志国分享了我们合作的最新研究《BlockMaze:一种基于zk-SNARKs的高效隐私保护区块链账户模型》,这个方案主要针对区块链账户模型,解决在区块链网络里发送方跟接收方之间转账关系和转账金额的隐私保护。
区块链系统分为UTXO(unspend transaction output)和账户两种模型体系。UTXO是指地址上所有未花费交易的总和,它的最小单位是交易,每个交易对应到金额,是比特币最原始的一种模式;账户模型系统中由每一个账户负责对应的事务处理,类似于银行账户,账户模型对于我们来讲使用的习惯会更接近一些,也是我们日常生活中最成熟的交易模型。
相对来说,UTXO模型具有较好的隐私保护特性,在分片机制上面它有更好的兼容性,同时在区块链上的整个交易生命周期中,交易过程可以看得比较清楚,而账户模型它的交易过程则不太透明。但是UTXO有一个很大的问题,就是在支持智能合约的时候,交易金额必需达到合约条件才能够参与智能合约。而账户模型它的好处,首先就符合我们的使用习惯,其次在上面存储和使用有更好的效率,此外它还具有互换性。但现有的基于账户模型的区块链模型比如以太坊并不能保护用户的隐私,交易的双方关系以及金额都会明文记录在区块中,任何人都可以查看这些内容。
为此,我们针对账户模型,设计了一种叫BlockMaze的隐私保护方案。关于区块链的隐私保护问题,目前有混币、环签名、同态加密、零知识证明等几种方式,该方案我们采用了零知识证明技术。
零知识证明作为一种密码学技术,起源于最小泄漏证明,证明者能够在不向验证者泄露任何交易相具体信息的情况下,使验证者相信某个论断是正确的。零知识证明的安全性依赖于离散对数等数学难题,具备安全性高,过程计算量小,交互信息少,完成数据验证高效等特性。此外零知识证明还具有非常关键的三个特性,一个是完备性,二是可靠性,三是零知识性(即它不会泄露任何的隐私)
在BlockMaze里面,我们用的是一种特殊的零知识证明的算法叫做zk-SNARKs。它是一种非交互式零知识证明算法,能够在不进行任何人工交互,且不泄露任何交易信息的情况下,在链上完成交易正确性的验证。普通的零知识证明,它可以证明knowledge of x given y = gx这种离散对数的关系,而zk-SNARKs它的功能更强大,它可以证明几乎是任意的这类等式算术关系。zk-SNARKs还具有简洁性,即证明非常短,不管你要证明的东西有多复杂,最后这个证明是固定大小,而且只有300字节不到,特别适用于区块链。在实际交易过程,为保护收发双方之间的这种关联关系,我们还设计了一种明文余额和零知识余额交替的双余额的模式以及两步转账法。
它的流程主要分为4个步骤:首先从明文余额里面转化一部分货币变成零知识余额,然后从零知识余额里边再转出一部分货币给别人,接着别人再把货币再存到自己的零知识账户里面,最后如果对方觉得零知识余额比较多,可以再把一部分零知识余额变成明文余额。其中每一个操作我们有一个对应的电路,这个电路实际上就是一个计算的过程。这个电路固化了他们的转账之后和转账之前的账户余额关系,因此通过零知识证明就可以在不泄露转账金额的前提下,能够保证转账前后余额是逻辑上面是没有任何问题的。
经过我们研究实践,目前该方案在学术上面已经有一个严谨的理论基础,接下来我们将结合具体场景应用实践落地。
中国人民银行金融区块链安全评价标准
云象区块链基础设施研发负责人石太彬从区块链金融场景实践的角度带来中国人民银行《区块链技术金融应用评估规则》要点分享,以及实际应用难点分析探讨。
《区块链技术金融应用评估规则》于今年7月由中国人民银行数字货币研究所发布,云象与多家金融机构、科技公司、大学共同参与起草,涵盖了区块链应用在商业场景的硬件安全、软件安全、存储安全、共识安全、密码算法安全、智能合约安全、通信安全、身份管理、隐私安全、监管支撑、运维要求、治理机制等12 大安全模块。
1.硬件与软件安全
硬件方面,主要是指的实际上部署环境。基本要求是硬件环境满足国家GB/T 22239-2009三级及以上物理和网络安全要求;其次是物理安全要求,包括场地安全(位与安全区域等)、硬件设备安全(异常报警、硬件异构)、节点部署安全(冗余部署,高可用、可扩展)、硬件加密设备安全(加密机、加密终端符合国家标准)等;最后是网络安全要求,包括网络架构安全(无单点故障)、通信传输安全等。
软件方面,它其实针对的是一整个项目而不仅仅是区块链这么一个基础设施的安全。例如,我在区块链做了一个供应链金融业务,它需要供应链金融业务系统整个系统都要满足它的安全要求。规范里软件安全要求主要包括账本结构、共识模块、分布式组网、数据存储、智能合约、接口设计、数据传输、时间同步、操作系统等方面。其中时间同步,它要求每个节点机器上面的时间都是要一致,时间容错误差不能太大。但目前规范里还没有给定一个具体标准值,整个部署环境可能也是多种操作系统的软件来进行容错。
2.密码算法与节点通信安全
密码算法相对发展比较成熟,无论是通常的密码算法还是国家的国密,都有很多标准。规范里要求符合国家多种密码安全标准,包括保密性、完整性、真实性、不可否认性、随机性(安全随机数的生成)、密钥管理(存储)等。目前保密性、完整性、真实性、不可否认性等密码学都可以保证,但随机性,目前在区块链上并没有得到很好的解决,因为它需要通过硬件生成随机数,来保证随机数的安全。还有密钥的管理,现在区块链上的密钥实际上都是选在节点上的,这里面存在一个很大的安全风险点。
然后节点通信方面,规范里要求节点通信安全包括节点身份验证、通信完整性、通信保密性等。目前这些实现起来没有太大问题,基本都可以保证。例如,有单位要求进行节点身份验证访问你所有的节点,这时候你可以给他颁发证书,所有的访问都是基于证书去访问,这样可以保证我们通信数据的完整性,还有保密性。
3.账本数据与共识协议安全
账本数据方面,规范里要求账本数据安全包括完整性(不可被非授权方式更改和破坏)、一致性、保密性(存储密文,不能被其他访问到)、有效性、账本冗余性、访问与使用、安全审计(账本的所有操作都要留有记录可供审计)。
共识协议方面,规范里要求共识协议安全包括合法性(节点的身份是经过认证的)、正确性、终局性、一致性、不可伪造性、可用性、健壮性、容错性、可监管性(共识历史可审计)、低延迟、激励机制、可拓展(动态增删共识节点)等。
4.智能合约与身份管理安全
实现智能合约的安全以及身份管理的安全,目前是行业普遍面临的难题。
智能合约方面,规范要求支持图里完备和非图灵完备、支持版本控制(包括升级与降级)、访问控制、复杂度限制(不可无限执行)、原子性、一致性、安全审计(逻辑安全、源码安全、运行环境、响应机制都需要记录并审计)、生命周期管理、攻击防范(包括预防和干预攻击)、安全验证(检测漏洞)等。
身份管理安全方面,我们现在发布一个联盟链节点需要基于证书,这个证书对身份是有要求的,无论是对于人或终端,电脑服务器节点都要有身份,都要去注册并进行审核,然后才能把身份给给颁发出去。规范里要求包括身份定义、身份注册、身份核实、账户管理(身份鉴别、凭证管理、节点标识管理、身份更新和撤销)、身份信息安全(密钥管理、身份监管)等。
5.隐私保护与监管安全
隐私保护与监管安全一直是金融项目都很关心的两点。
隐私保护方面,规范里要求隐私数据要分等级保护,保护策略包括公开验证、加密验证、验证节点验证等;技术要求通过加密和认证技术,保证未授权者不可访问隐私数据;还有就是在金融系统的话,对监管还有审计都是比较严格的,所以对隐私保护具体所使用的策略还有技术,都要去进行审计。
监管安全方面,规范里要求包括进行系统监管、信息管理、事件处理、交易干预、智能合约监管等。其中系统监管支持监管机构和监管部门,信息管理需要匿名标识对监管要能还原真实身份,事件处理需要将故障向监管部门报送,交易干预要求为监管提供账户冻结、限制交易等功能,智能合约监管简要要求写入合约强制执行。
6.运维安全与治理安全
运维安全和硬件安全具有一定相关性,但是它更偏向运维。规范里要求包括设备管理、节点监控、节点版本升级、漏洞修复、备份和恢复、应急预案,以及权限管理包括非授权不可访问账本、日志等数据。
最后是治理安全,目前规范里还没有明确提出非常细致的要求。规范里只是要求需要有一个块链管理委员会来治理,包括制定一些我们的业务上的风险偏好、安全策略,以及对节点加入、退出进行重点管控,其中等级与验证等都要登记、审计、追溯。
以上便是《区块链技术金融应用评估规则》关于安全模块的主要要求,而在实际应用中目前行业还面临以下难点,亟待我们去深入研究解决。
一是身份管理,身份管理他的安全主要在密钥管理,管理的时候就会涉及到密钥的存储,实际上行业里现在还没有比较好的解决办法,让节点保证密钥存储的安全;二是存储安全,保护敏感数据的密钥要和账本数据本身分开存储,如何进行账本数据的加密存储,既能兼顾监管需求又能保护数据隐私;三是智能合约安全,如何确保智能合约没有漏洞或证明它是安全的,目前主要包括智能合约审核确保代码无漏洞、对合约进行漏洞检测、生成安全智能合约模板、通过形式化验证证明智能合约正确性等方式,这些都不是很好的解决方案;四是隐私安全,账户信息、鉴别信息、交易信息、财产信息等的隐私保护,例如两家银行要合作,如何在不泄露用户数据隐私的情况下进行KYC。
智能合约安全漏洞检测
浙江工商大学软件工程系系主任、云象区块链研究中心首席科学家刘振广带来《基于图神经网络的智能合约安全漏洞检测》分享。
智能合约安全漏洞主要来自两个方面:第一个是现有写智能合约的工具粗糙。这些工具大多是2017年、2018年之后产生的,虽然很新但也很粗糙,里面存在很多的漏洞,另外这方面的编程人员也大多是新人,他们对这些工具不是特别了解,所以很容易写出BUG。第二个是智能合约的设计对编程人员要求非常高。因为一旦把它写好之后存到链上就无法更改,尤其是面向公链的,所有人都能运行合约的这种情况下,他要考虑到未来无穷多种情况,甚至未来10年后这个合约会遇到什么样的问题都必须提前想好,那么这个时候也容易产生漏洞。
合约漏洞主要包括可重入漏洞、整数溢出、时间戳依赖等。据有关统计,2011-2018期间合约安全事件占比6.67%,但损失却达到12.4亿美元(2011-2018)。例如最著名的“DAO事件”,2016年5月,黑客利用合约可重入漏洞反复取钱,DAO合约“先转账后清零” 导致重入漏洞,市值6000 万美元的以太币被盗,以太坊社区分裂硬分叉成ETC和ETH。可见合约一旦出现漏洞后果非常严重,如何正确防范智能合约安全漏洞成了当务之急。
目前市面上虽然有一些合约漏洞检测工具,但准确度较低。一方面基于有限的专家规则,易错且无法覆盖复杂漏洞;另一方面这些工具具有不可扩展性,只能检测已知漏洞。针对这一问题,利用机器学习对智能合约进行形式化验证是很好的解决方法,其能够分析领域新趋势,打破基于规则的漏洞检测方法,并且具有可扩展性,能够检测未知漏洞。
那么如何形式化描述智能合约?这里问题挑战是智能合约虽然是一段简短的代码,但它里面涉及的关系较为复杂,怎么把这些关系给显示建模出来是一大难题。智能合约主要有三种关系,第一种是代码的顺序执行关系,就这一行代码,它有着怎样的顺序;第二种是函数调用关系,相当于一个程序执行的跳转;第三种是数据依赖关系,即可能某个变量,依赖于前面有某个变量,或者后面有某个变量,这就叫数据依赖。
为此,我们针对形式化智能合约安全漏洞检测展开深入研究,主要论文贡献包括一种基于图神经网络的智能合约漏洞检测方法,一种基于数据&函数依赖关系的智能合约图及其消融处理,一种基于多平台智能合约的漏洞检测实验。其中我们重点做了可存入安全漏洞、死循环即无限循环、时间戳依赖三种漏洞检测,首先进行合约图生成,用图表示保留程序元素之间的语义关系;其次进行合约图消融,将普通节点特征传递给相邻的核心节点进行消融;最后进行图神经网络处理,通过DR-GCN和TMP模型给出漏洞标签。总的来说,我们提出一个基于图神经网络的智能合约漏洞检测方法,深度挖掘了智能合约中数据与语句依赖关系,探索了图神经网络模型在漏洞检测上的可能性。
以上是我们在深度学习面向智能合约安全漏洞检测领域的新尝试。
智能合约安全和网络防护
成都链安联合创始人郭文生副教授带来《智能合约安全和网络防护》主题分享。
智能合约是区块链应业务逻辑运行的关键,对区块链安全体系建设至关重要。目前智能合约安全性问题大致可以分成四类:一是代言代码,由于语言本身的一些规范,然后撰写的不符合规范所导致的一些安全问题;二是就是系统机制所导致的核源安全问题;三是合约执行带来的问题,在合约执行过程当中存在溢出和零除等错误;四是业务安全问题,即业务实现的正确性问题。
其中业务安全是当前智能合约安全主要问题。这里实际上的业务安全问题,主要体现在用户的真实业务需求和代码实现的正确性,他们之间的等价性,即如何去验证代码实现就是用户想要的,然后如何验证在代码实现的过程当中不存在隐蔽的通道能够实现破坏。而智能合约安全,实际上主要就是利用整个代码当中存在的未知路径去执行相关操作,如何在整个智能合约代码当中去验证和代码当中执行的路径,就是用户需求要达到的目标,这个是现在业务安全比较重要的一个验证方面。
如何在进行智能合约时保障安全,我们也给了一些智能合约安全的建议:
一是简化智能合约的设计,做到功能与安全的平衡。智能合约越复杂,它的安全风险就越高,因此在智能合约设计时需要权衡其安全性。
二是严格执行智能合约代码安全审计。在智能合约进行上线之前,要做智能合约的代码安全审计,例如计算检测、动态的测试、形式化验证等,甚至包括刚才刘老师讲的图神经网络方式去检测一些存在的漏洞。
三是强化智能合约开发者的安全培训。让他们知道已经存在的安全问题有哪些,然后在写合约的时候去避免这些安全问题。
四是在区块链应用落地上,需要逐步推进,从简单到复杂,在此过程中不断梳理合约与平台相关功能及安全属性。
五是考虑DevSecOps(Development+Security+Operations)的思想。
除了考虑智能合约的安全性,我们针对区块链的全生态也建立了相关安全产品体系,包括一键式的智能合约自动形式化验证平台、区块链安全态势感知平台、防火墙、威胁情报系统等。在区块链运行过程当中,我们对整个运行过程中的数据进行流转,对运行过程当中的核心的事件进行实时的监控,因为安全审计想要达到100%安全,在安全领域几乎不可能实现。因此进行安全审计,实际上只能保证它尽量的安全,但是可能还会面临着一些在验证过程当中没有考虑到的一些情况,这时可以通过链上态势感知实现运行时的安全监测,一旦在运行过程当中发现有异常,可以实时进行预警和报警,甚至可以触发防火墙进行相应的处置,然后还可以提供链上的一些威胁情报,对整个区块链网络安全形成全方位的保护。
此外,针对区块链安全服务,主要包括智能合约安全审计开发服务、链平台安全检测服务、虚拟资产追踪溯源调查取证服务、移动端APP(钱包)安全检测服务、Web应用安全检测服务、威胁情报推送服务、安全咨询服务、安全应急响应服务等方面。
以上就是我们目前在区块链安全领域所做的研究实践。
区块链安全以及跨链研究进展
云象-浙大联合区块链实验室负责人陈建海副教授就实验室的区块链安全与跨链研究最新进展进行了分享。
区块链本身就融合很多安全机制,其本质就是互联网延伸的安全机制。这几年云象-浙大联合区块链实验室积累了很多技术成果和实践经验,目前也有一些在做的重点研发计划项目。其中区块链安全这块,我们重点研究方向包括SGX安全保护技术、智能合约服务与安全技术以及多链跨链技术。
SGX安全保护技术主要探究区块链架构中急需隐私安全保护的部分,研究SGX安全保护机制及其应用;挖掘区块链中SGX安全保护机制的应用方面,提高区块链系统安全性;开展SGX+其他领域及其应用的扩展研究。智能合约服务与安全技术主要研究智能合约形式化验和Tako智能合约在线服务平台。多链跨链技术主要研究面向多链跨链的数据访问和实时监管。
这里重点介绍一下SGX安全技术进展和跨链研究进展。
SGX安全技术进展主要有以下几方面:
1.基于SGX的区块链用户密钥保护
该研究设计了一种基于 SGX 的区块链用户密钥保护装置,在区块链应用系统的客 户端节点引入 SGX,该区块链用户密钥保护装置与各式区块链网络相互兼容,可作为 区块链网络的节点管理组件,为区块链网络用户提供密钥保存与验证服务。能够保护区块链系统中用户节点涉及密钥的交易处理过程,将密钥和关键函数放置于SGX安全区内,防止来自外部的篡改与窥探。
2.区块链节点用户请求处理优化装置
基于智能合约与SGX,实现了一种区块链节点用户请求处理优化装置,对用户请求通过多层防护和中转处理,保护节点对于用户请求处理的关键功能,实现一种通用解决方案。能够保护区块链系统中用户请求到区块链处理过程的安全性,采用智能合约进行对接,充分发挥区块链本身优势。
3.模糊测试系统保护装置
模糊测试技术依赖“大数定律”执行自动化的有条件相对随机测试,以自动化技术提高测试速度,从而通过大量和随机的测试让隐藏在程序内部的概率极低的软件漏洞(bug)被发现。该研究提供了一种基于SGX的模糊测试系统保护装置,通过引入Intel的SGX硬件安全机制,构建受保护的模糊测试系统。同时该系统能够作为一个模块,能够适应和其他所有安全保护系统等的协同运作,共同保护模糊测试系统的安全。
4.区块链交易安全保护系统
该研究提供一种基于SGX的区块链交易安全保护系统。通过引入SGX的硬件保护机制,构建受保护的区块链安全交易环境。轻量型客户端与全节点服务端建立可信加密渠道,轻量型客户端通过该可信加密渠道向全节点发送加密的用户请求,包括交易验证、交易构造等。全节点在SGX安全区内解密并处理用户请求,通过茫然随机访问(Oblivious Random Access Machine, ORAM)来进行交易数据的本地存取,从而满足请求处理需求。
5.基于区块链的SGX远程认证开放平台
该研究提供一种基于区块链的SGX(Software Guard Extensions)远程认证开放认证平台与机制。用户侧用户安全区在用户侧认证服务安全区和服务端认证服务安全区的协同处理下完成远程认证机制,确保用户侧用户安全区的正常运行。认证过程中的认证凭证通过区块链网络在各节点间共享,并确保数据可信与不可篡改。用户侧认证服务安全区与服务端认证服务安全区遵照SGX远程认证机制,通过定期远程认证来确保自身的正常运行。这种机制可确保远程认证过程数据不全部经由Intel中心化服务器处理,确保远程认证过程的隐私安全性。
6.基于SGX的GPU运算保护方法
基于Graviton(OSDI2018),Telekine(USENIX2020)探讨基于SGX的云端GPU运算保护方法,通过改造GPU的数据传输和处理过程,将GPU的运算指令交由云端机器上的SGX安全区保护,其他第三方程序不能进行窥探或篡改。用于加密运算指令的密钥可由客户端程序指定,这在实际场景中,例如用户使用云端机器进行神经网络计算或部署神经网络程序时,能确保关键隐私数据不会被云端服务提供者窃取,从而建立用户对该云端机器的信任。
7.安全应用:区块链多机器人协作
该研究提出了一种基于区块链的多机器人协作多目标点负载均衡搜索方法及系统,方法包括以下步骤:
(1)各机器人私有链状态初始化,获取周围地图信息,并将自己私有地图传递给其他机器人;
(2)机器人收到来自别的机器人的地图信息后进行拜占庭共识,将完成共识的地图信息打包进入下一区块并上链;
(3)各机器人根据负载参数和搜索重心以及距离等集成因素分配各目标点;
(4)每个机器人完成对分配的目标点的搜索。系统采用了区块链实用拜占庭共识机制和负载均衡机制,保证少数机器人引入的错误信息不会影响到整个系统的稳定性,实现了多机器人多目标点搜索中最难以处理的信息传递和一致性,保证了多机器人目标点搜索任务分配的高效和合理性。
跨链应用研究进行主要有以下两方面:
1.多链跨链的数据访问方面
我们设计了一种支持富查询应用的区块链中间件Fabric Layer2。Fabric账本的数据结构是基于区块链结构进行了进一步的延伸。从结构上看,账本包括区块链(blockchain)结构,以及多个数据库。其中区块链结构一般通过文件系统进行存储;状态数据库支持levelDB、CouchDB两种实现;历史数据库和索引数据库主要支持levelDB实现。对于联盟链来说couchDB是世界状态数据库,直接参与peer节点对于区块提交验证的生命周期,所以字段要合理设计,不是一个链下分析区块链数据的数据库。因此需要设计一个链下的数据库,提供对于区块数据的富查询,即为智能合约的交易提供时序查询、条件查询、多源查询等语义。我们定义这类数据库为区块链中间件Layer 2 。
Layer 2 可以进行时序查询 、条件查询、多源查询、分段查询。关键技术包括使用Couch DB中提供的map-reduce查询方法;在多源查询中,使用Merkel tree来快速比对查询结果;构建自己的索引结构,进行高效查询。
2.多链跨链的监管治理方面
我们研究构建了一种面向区块链的实时监管系统。通过链上链下相结合构建实时监管平台,基于VNT Chain平台的可信监管组件进行链上处理,基于交易行为的账户异常检测进行链下分析。
目前区块链应用监管普遍面临数据获取不丰富、数据分析支持弱、业务管控手段少等问题。实时、可靠、全面的获取链上数据有助于管理者掌握区块链整体的运行状态 ,充分的数据挖掘与分析能够提升决策的准确性 ,底层平台支持的穿透式介入手段可满足监管的应急需要。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/48461.html