区块链是Web3.0构建可信互联、价值互联的关键技术。作为一种新的去中心化基础设施,区块链自身技术也在不断发展。结合Web3.0背景,介绍了区块链的去中心化身份、智能合约、激励机制和隐私保护等相关技术进展和问题,以助力实现基于Web3.0的数据安全共享、业务流通、用户权益保障,从而达到更加公平的价值分配和价值流动。 随着区块链、人工智能、无线边缘计算等技术的快速融合发展,下一代互联网Web3.0的技术研究越来越多。2007年,T.O’Reilly提出Web2.0的概念,对比以门户网站提供静态网页浏览服务为主的Web1.0,Web2.0强调以网络为平台的连接和为用户提供互动等多种增值服务。2014年,以太坊(Ethereum,ETH)的联合创始人Gavin Wood称:现有技术已经无法适用于未来社会和技术的互动,称Web3.0为“后斯诺登网络”(post-Snowden),描绘了一个零信任(zero-trust)下的去中心化、安全、自治的网络。 截至目前,Web3.0作为下一代互联网,学术及企业界对其概念仍然没有统一的认识和定义。有研究者强调其“智能化”“语义化”“个性化”特征;有研究者关注其“去中心化”“安全”“可信”的特征;也有研究者注重其基于数字资产化和资产数字化的价值互联特性;还有研究者强调其可验证性(verifiable),认为Web3.0的核心特征为应用程序的关键计算是可验证的。无论对Web3.0的理解有何异同,区块链是Web3.0的核心支撑技术为普遍共识。 Web3.0与区块链 目前的Web2.0互联网,无论是采用传统的客户服务器架构还是云计算模式,都还是集中化处理的分布式网络。虽然Web2.0极好地实现了用户和网络、网络与网络、用户与用户之间的连接、互动,也极大地改变了人们的生产生活方式,但随着网络应用的深入以及新一代信息技术的快速发展,现有Web2.0网络面临着诸如安全性、隐私性、透明性、真实性等多个方面的技术挑战,同时还存在着权力或利益严重聚集于第三方平台的问题。因此下一代互联网——Web3.0的“去中心化”(decentralized)特点被普遍认同。 区块链是利用块链式数据结构来验证和存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式来保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构和计算范式。 与传统分布式网络相比,区块链更多关注节点平等、不互信、存在有拜占庭节点下的异步网络以及节点如何自治、平等、安全地实现网络服务,更加接近于实际网络情况。来源于比特币的区块链技术天生强调节点平等和去中心化。通过大多数节点的共识是利用密码算法,基于智能合约的同步、严格执行及分布式账本的不可篡改记录等组合,区块链可以实现与分布式网络不同的去中心化和社会资源去中介化,解决Web2.0由于中心化所出现的信任危机、数据及隐私泄露、用户自主性差等问题,实现基于Web3.0的数据安全共享、业务流通、用户权益保障,并进一步通过区块链的加密货币或通证(token)等技术,实现更加公平的价值分配和价值流动,如图1所示。 图1 基于区块链的Web3.0环境 一个基于区块链的更加自主、安全、开放、公平的Web3.0互联网环境,首先要建立用户的去中心化身份,鼓励用户积极参与,需要保障传输及处理数据的安全和隐私,还要构建安全的去中心化应用程序(Dapp)。 Web3.0的去中心化事务处理方式是解决中心平台垄断和利益分配失衡问题的一种尝试,利用区块链的可信协作、分布式执行、数据保护、资产转移等能力进一步整合信息流、业务流和价值流,以更加标准化、更加简洁的链上智能合约来代替现有互联网应用服务,消除对中心机构的依赖。目前,区块链技术研究活跃,所涉及的共识、可扩展性、跨链、分片等技术进展很快。本文从Web3.0去中心化特征的角度介绍去中心化身份、智能合约、激励机制、隐私保护4个方面的相关进展。 Web3.0与去中心化身份 在现有网络环境下,用户身份和个人识别信息PII(personal identifying information)由一个中心化第三方管理,用户缺少对自己数字身份和身份信息所有权的管理,导致容易出现个人隐私泄露等问题。基于去中心化理念的Web3.0的发展,首先需要实现适应去中心化环境的身份管理,同时需要改进现有身份认证中对个人信息的过度泄露,加强用户对自我身份信息的管控权。因此,去中心化身份(decentralized identity,DID)作为一种新的身份认证架构和方法,将区块链的分布式账本、隐私计算等技术融入身份治理当中。 与传统身份管理不同的是,DID分离了用户身份数据的所有权和使用权。为了保障用户身份的所有权和管理权,提出了自我主权身份(self-sovereign identity)的概念和方法,强调在身份信息使用过程中用户可选择性泄露部分敏感信息,实现用户身份信息的有效管理,避免身份隐私过度泄露。 去中心化身份系统的构建方法有多种,比较通用的模型是使用代表实体的身份标识符和与之关联的属性声明凭证。2021年8月万维网联盟图1基于区块链的Web3.0环境 (W3C)发布了《去中心化身份1.0版:核心结构、数据模型和表征》标准,是目前使用较为广泛的去中心化身份方法。 如图2所示,W3C标准中的DID由基础层和应用层组成。基础层主要由DID标识符(DID URL)和DID文档(DID Document)组成。DID标识符是标识用户全网唯一的数字身份的特殊字符串,DID Document是一个JSON-LD格式的数据,包含DIDURL、时间戳、JSON-LD签名、加密参数、加密协议、服务端点等6部分。应用层主要是可验证凭证(verifiable credentials,VC),VC提供了一种表征用户实体具有的某种属性的规范。一般情况下,DID的实体向其他实体出示自己的VC全文,以此来证明自己某些属性的真实性。但是在一些特殊情况下,出于对隐私信息的保护,并不需要出示完整的VC内容,用户可以出示可验证表达(verifiable presentation,VP)来选择性地披露信息,VP是VC持有者向验证者表明自己身份的数据。 图2 分布式数字身份DID的组成模型 虽然以W3C为代表的去中心化身份,通过VC生成VP的方式,实现了在身份认证过程中选择性出示有限的PII信息,最大程度保障了用户的隐私信息,但现有的去中心化身份仍然存在不少问题,针对这些问题,去中心化身份系统研究有很多新进展。文献提出了一种名为PDID(password-authenticated decentralized identities)的基于口令身份验证的去中心化身份系统,允许用户在全局命名空间中注册自己的用户名和密码对,并将其用作通用凭证,此外还可以实现向任何服务器认证用户身份的同时,不向服务器泄露任何密码信息。针对当前的加密方法将去中心化的标识符与公钥绑定,可能会引起身份窃取攻击和单个实体存在多个标识符的问题,文献提出了一种基于新的加密原语——无限单向哈希链的去中心化身份模型,用户只需要一次注册,就可将用户的公钥嵌入到无限单向哈希链中,解决一个实体多个标识符的问题。文献提出了具有可审计性和保密性的DID认证协议,可审计性保证系统能够检测恶意认证事件,保密性防止敌手将认证事件链接到对应的用户和服务提供商。此外,现有的DID文档高速缓存方案中的侧通道可能引起隐私问题,文献提出了一种新的DID解析设计,称为Oblivira(不经意DID解析),Oblivira是一个占用空间小的安全解析代理,可以强制通用解析器在不知道请求内容的情况下解析请求。文献中提出一个CanDID系统,授权最终用户管理自己的凭证,除签发证书外,CanDID的身份识别系统还可以抵抗Sybil攻击,并且允许用户将其密钥存储在CanDID委员会中,实现密钥丢失时的恢复。 智能合约预言机与智能合约安全 Web3.0的目标仍然是通过去中心化应用程序为用户提供网络服务。在区块链中,这些去中心化的应用程序由智能合约实现。由于智能合约部署在链上、运行在链上,智能合约的安全和链下数据的调用一直是难点。 智能合约预言机 区块链系统依靠其共识机制和密码学的相关技术,使得链上的数据难以被篡改,能够保障链上数据的真实性和可靠性,但是对于链下数据缺乏可信保障机制。智能合约预言机(Oracle)是智能合约进行链上链下数据交互的主要技术,用以保证链下数据的完整性和真实性。预言机为链下数据提供了一种可信保障机制,能够实现链下数据的可信上链。基于这种特性,预言机可应用于任何需要与链下进行数据交互的Dapp。区块链预言机本质上是区块链与链下数据调用和访问的可信媒介,是一种为区块链智能合约提供可信链下数据的工具。 2017年,基于以太坊的第一个去中心化预言机Chain Link被提出,通过在链下采用多数据源及多预言机节点的方式获取源头数据,提高源头数据采集的可信性。2019年,国内去中心化预言机Dos Network白皮书发布,从预言机节点选择的角度出发,基于可验证随机函数实现去中心化网络中工作节点的随机选取,并通过门限签名技术实现数据验证。预言机工作角色主要由链上用户智能合约即区块链智能合约、链上预言机智能合约及链下的外部数据源3个部分组成。 目前智能合约预言机也有较多研究进展。文献提出了一种基于门限聚合签名的区块链预言机数据传输模型,该模型将签名与数据聚合到一个预言机上,与链上智能合约进行单次交互,减少区块链存储空间开销和通信负载。文献研究了基于分布式预言机的链下数据源可信评估激励技术,提出了基于分布式预言机的可信数据上链技术。针对提高车联网中的用户身份安全可信问题,文献提出了一种基于区块链预言机的车联网可信身份注册方案。该方案使用智能合约、分布式预言机、机器学习算法等技术构建预测模型,可以保证车联网用户在注册阶段的可信。文献提出了一种基于预言机和零知识证明的区块链数据上链方案,该方案能够提高数据源的可信性并增强数据的隐私安全性。 智能合约安全 智能合约是存在于区块链上以代码形式定义的承诺,一经部署,很难修改。基于区块链的Web3.0应用,最终是以智能合约的形式实现的,而且可能会涉及一些代币交易,因此保证智能合约安全非常重要。 1、智能合约漏洞分类 作为应用最为广泛的主流区块链系统,以太坊上的智能合约漏洞最为典型和丰富。表1以以太坊为例,总结了智能合约编写、编译、区块链交易驱动3个阶段共14种类型的漏洞。 在智能合约的编写阶段,高级语言是主要的工具。在开发者利用高级语言对智能合约进行编写时,安全漏洞主要由高级语言设计模型本身和开发者编程能力参差不齐的问题导致。在编译完成之后,虚拟机是智能合约字节码的执行器。在以太坊环境下,虚拟机层面上智能合约的安全威胁存在于智能合约字节设计规范和运行机制本身的缺陷等。智能合约在区块链平台运行时,由于区块链本身的特性,也会产生如时间戳和事务顺序依赖等安全风险。