基于可信执行环境的区块链隐私保护

作者: 殷媛

基于可信执行环境的区块链隐私保护0

摘要:数字经济的蓬勃发展促进了区块链技术在各行各业的应用探索,但其公开透明特性带来的身份隐私泄露风险,成为阻碍其广泛应用的一大瓶颈。可信执行环境 (Trusted Execution Environment,TEE) 为解决这一问题提供了极具前景的技术方案。该文提出一种基于TEE的区块链身份管理方案,引入分布式证书签发机构 (Distributed Certificate Author⁃ity,DCA) 的概念,设计了分布式公钥证书签发基础设施,利用区块链智能合约实现DCA中CA的功能,并通过TEE保证智能合约的隐私性,在智能合约执行过程中保护私钥的机密性。

关键词:区块链;可信执行环境;智能合约;身份管理;隐私保护

中图分类号:TP393 文献标识码:A

文章编号:1009-3044(2025)01-0099-03 开放科学(资源服务) 标识码(OSID) :

0 引言

数字经济的蓬勃发展为区块链技术[1]在金融、供应链管理、医疗健康和物联网等多个领域的广泛应用带来了巨大前景。区块链去中心化、不可篡改和透明的特性备受瞩目。然而,其公开透明特性也导致身份隐私问题日益突出。例如,在区块链上,任何人都可通过区块链浏览器查看所有交易记录。尽管交易双方可能匿名,但通过分析交易模式和交易之间的关联性,仍可能追踪到真实身份。

TEE是一种运行在隔离内核上的防篡改处理环境,可确保代码真实性、运行时状态完整性和持久存储数据机密性。通过将敏感逻辑和数据在TEE中处理,区块链仅需将执行结果上链,而不暴露具体交易数据或合约逻辑。英特尔软件防护扩展(SoftwareGuard Extensions,SGX)技术是TEE的一种实现方式,而“飞地”是其中的一项重要设计[2],飞地是硬件中虚拟构造出的一块安全数据区域,确保了只有经可信硬件验证的实体才能访问。

为解决区块链身份隐私问题,本文提出了一种基于TEE的区块链身份管理方案。该方案引入了分布式证书签发机构的概念,通过设计分布式公钥证书签发基础设施,以区块链智能合约完成分布式公钥证书签发基础设施中CA的功能,实现了证书签发、证书验证和证书吊销等身份数据相关的重要功能在TEE中的安全执行。

1 分布式公钥证书签发基础设施框架

1.1 概述

身份管理在区块链[3]中起着至关重要的作用,它是确保系统安全、保护数据隐私和执行智能合约的关键组成部分。PKI是一种利用公钥密码学技术来管理公钥和证书的基础设施[4]。在PKI中,CA充当信任点来保证用户、设备和服务等实体的身份,并且仅允许经过身份验证的实体连接到系统。CA 的运行形式主要分为公有和私有两种。公有 CA 由备受社会信任的公司运营,服务对象覆盖整个互联网。相较于公有CA,私有 CA 的运营要求相对宽松。尽管私有 CA 在签发公钥证书方面与公有 CA 功能相同,但它们仅在特定组织或域内运营。然而,在传统的身份管理方式中,CA很难满足灵活多变的身份管理需求,而私有CA在由单一管理实体控制的单域场景中可能增加证书签发的监管难度。因此,亟须设计一种适合多组织合作运营的身份管理方法,保障区块链及其各类应用场景下的身份信息及使用过程安全。

联盟型服务是在区块链网络中,由多个机构或组织共同运营和管理的服务类型。在联盟型服务中,多个组织合作提供服务,服务不应受到任何特定组织的影响[5]。因此,联盟内的参与组织必须能够合作运营CA。如果CA的私钥被联盟中的任何组织泄露,则该组织可以使用泄露的私钥签发任意公钥证书。为了确保CA私钥的安全,私钥的使用仅限于基础设施中的智能合约,因为私钥在某些情况下的可用性会导致滥发公钥证书。智能合约具有所有组织都同意的业务逻辑。只要智能合约中使用了私钥,就可以认为其使用是经过参与组织授权的。然而,智能合约并不能保护其使用的数据的机密性,私钥在智能合约执行过程中可能会被泄露。本章提出了一种分布式公钥证书签发基础设施,通过引入可信执行环境,允许多个组织合作运营适合联盟型服务的CA,使用SGX技术保证智能合约的隐私性,并在智能合约执行期间保护私钥的机密性。

分布式公钥证书签发基础设施的结构如图1 所示。

组成分布式公钥证书签发基础设施的实体如下:

1) 证书持有者(Certificate Holder,CH) :CH是向所提基础设施请求证书发行的实体。

2) 证书验证机构(Certificate Verifier,CV) :CV是验证证书的实体。

3) 证书签发机构(Certificate Issuer,CI) :CI是调用智能合约签发证书的实体。

4) 基础设施管理机构(Infrastructure Manager,IM) :IM是设置所提基础设施的实体。它负责设置区块链隐私网络,部署智能合约,并创建和封装用于创建公钥证书的密钥对。设置完成后,它充当证书签发机构。

5) 智能合约:智能合约是在区块链上读写数据的程序。在分布式公钥证书签发基础设施中,它实现了CA的功能。

6) 数据存储:数据存储是存储数据的账本。在分布式公钥证书签发基础设施中,账本受到Intel SGX的保护,并存储用于签发的私钥和已签发的公钥证书。

1.2 基础设施事务与流程

分布式公钥证书签发基础设施包含4个事务:初始化设置、证书签发、证书验证和证书吊销。

初始化设置:CI先在SGX飞地内设置证书签发所需信息(如签发机构信息和最大有效期) ,确保配置信息的安全性与隐私性。SGX飞地加密和验证所有配置数据,防止数据泄露和篡改。然后,生成两个密钥对:skCA用于证书签发,skAudit用于证书验证。密钥对在SGX飞地内封装后,传输至区块链网络存储,确保其完整性和保密性。最后,IM在SGX飞地内删除本地密钥副本,增强系统安全性。

证书签发:CH生成自己的公私钥对,创建证书签名请求(CSR) ,并将其发送给CI。CH可利用SGX远程证明功能验证CI的真实性和安全状态,必要时使用CI的公钥加密CSR。CI的SGX飞地解密CSR,验证其有效性后,使用CA私钥对公钥证书签名,并将加密后的证书(使用CH的公钥) 发送回CH。

证书验证:CV获取CH的公钥证书(certCH) 和一个随机数(r1) ,发送给CI进行验证。CI将数据传递给SGX飞地中的验证函数checkCert。checkCert函数在SGX飞地内查询区块链账本,验证certCH的有效性。若验证成功,智能合约使用私钥(skAudit) 对r1签名,生成sigr1。CI将验证结果、sigr1和用于验证sigr1的证书certAudit发送回CV。CV使用CA证书验证certAudit和sigr1的真实性,并最终使用CA证书certCA验证certCH的有效性。

证书吊销:CH将要吊销的证书序列号发送给CI。CI生成随机数r2,发送给CH并请求其私钥签名。CH 生成sigr2并发送回CI,CI的SGX飞地验证sigr2的真实性。验证通过后,SGX飞地更新账本,将证书标记为已吊销。

2 基于TEE 的CA 智能合约设计与实现

2.1 初始化设置

初始化设置(setConfig) 算法用于在区块链隐私网络上设置分布式公钥证书签发基础设施的配置信息,包括签发机构信息和最大有效期。该算法接收签发机构名称(iss)和最大有效期(med)作为输入,并返回操作结果。算法首先进入SGX安全环境,确保后续操作的安全性。然后,验证输入参数iss和med是否有效,如果任一为空则退出SGX环境并返回错误。接着,使用SGX的密封功能对配置数据进行加密,保证数据即使在飞地外部也不会被篡改或泄漏。如果密封失败,则退出SGX环境并返回错误。然后,将密封后的数据安全地存储在SGX飞地内部。最后,退出SGX安全环境,并返回“OK”,表示配置数据已成功设置并安全存储。

2.2 密钥封装

密钥封装(encloseKeys) 算法用于生成和封装用于创建公钥证书的密钥对。该算法接收CA的公私钥、用于证书验证的私钥、CA公钥、用于签名公钥证书的私钥和证书过期日期作为输入,并返回操作结果。算法首先进入SGX安全环境,确保后续操作的安全性。然后,使用SGX的创建飞地功能,加载并初始化名为CertGenEnclave.signed.so的飞地应用程序。接着,通过ECALL调用飞地内部函数在飞地安全环境中执行证书生成和签名操作。证书生成和签名完成后,销毁飞地实例,释放资源。最后,将生成的CA证书(certCA) 和审计证书(certAudit)存储到区块链状态数据库中,并更新相关状态信息。在SGX飞地内部生成CA证书和审计证书,并将证书存储到区块链状态数据库中。

2.3 证书签发

证书签发(issueCert) 算法用于在区块链隐私网络上生成并签发公钥证书。该算法接收证书签名请求(csr) 和证书有效期(ed) 作为输入,并返回一个签发后的证书对象(cert)。算法首先获取当前序列号、配置信息和有效密钥信息,然后根据输入的csr和配置信息设置证书的各项属性,包括版本、颁发机构、主体、序列号、公钥和扩展信息。之后,检查提供的到期日期是否超出了配置中定义的最大到期日期,如果超出,则返回错误。最后,在SGX飞地内部使用CA的私钥对证书进行签名,并将签名后的证书和更新后的序列号存储到区块链状态数据库中。

2.4 证书验证

证书验证(checkCert) 算法用于验证区块链隐私网络中公钥证书的有效性。该算法接收证书持有者的公钥证书(certCH) 和一个随机数(r1) 作为输入,并返回签名(sig)和用于验证签名的审计证书(certAudit)。算法首先获取证书持有者的公钥证书(certCH),检查证书是否有效且未被吊销。然后,在SGX飞地内部使用审计私钥对随机数(r1) 进行签名,并从状态数据库中获取审计证书(certAudit) 。最后,算法返回签名(sig) 和审计证书(certAudit) 。

2.5 证书获取

证书获取(getCert) 算法用于获取指定的公钥证书。该算法接收证书序列号(sn) 作为输入,并返回对应的公钥证书(cert) 。算法首先进入SGX安全环境,确保操作的安全性。然后,使用输入的序列号从状态数据库中检索证书。如果检索到的证书为空,则退出SGX环境并返回错误信息。接着,检查证书是否已过期,如果已过期,则退出SGX环境并返回错误信息。最后,退出SGX环境并返回检索到的有效证书。

2.6 证书吊销

证书吊销(revokeCert) 算法用于吊销指定的公钥证书。该算法接收证书序列号(sn) 、吊销日期(rd) 和吊销原因(rc) 作为输入,并返回操作结果。算法首先进入SGX安全环境,确保操作的安全性。然后,从状态数据库中获取当前证书吊销列表(CRL)。接着,遍历CRL以检查输入的序列号是否已存在。如果已存在,说明证书已被吊销,此时退出SGX环境并返回错误信息。如果证书尚未被吊销,创建一个新的吊销条目并添加到CRL中。这一步骤在隔离的环境中执行,以保护操作的安全性。然后,将更新后的CRL保存回状态数据库。这是在SGX环境中完成的,确保了数据写入过程的安全性。所有敏感操作完成后,通过sgx_exit指令退出SGX环境。最后,返回“OK”表示吊销操作已成功完成。

3 实验结果

本节评估了所提基础设施的性能,重点关注证书签发、验证和吊销过程的时间开销。

为了进行实验评估,本文实现了如图2所示的系统。系统创建了两个对等节点和一个排序节点,并用它们实现了一个区块链隐私网络。本文构建的智能合约在区块链隐私网络上执行,并测量了其处理时间。

上一篇 点击页面呼出菜单 下一篇