基于 TEE 的机密计算虽然可以用于增强区块链的安全性和隐私性,但它本身其实存在侧信道攻击和中心化信任的问题。不过没有一种技术是完美的,目前机密计算与 TEE 已经成了 Web2 中安全防护和隐私计算的工程利器,相信未来在 Web3 中也会大放异彩。
机密计算
机密计算由机密计算联盟 (Confidential Computing Consortium,CCC) 定义,机密计算联盟是 Linux 基金会的一部分,致力于定义和加速采用机密计算,联盟成员包括阿里巴巴、AMD、ARM、Meta、Fortanix、谷歌、华为、IBM、英特尔、微软、甲骨文、瑞士电信、腾讯和VMware。
数据在其生命周期中往往以三种状态存在
- Data in Transit,网络传输过程中的数据,传输状态;
- Data at Rest,数据在磁盘和处于存储过程中的数据,存储状态;
- Data in Use,处于内存中,计算中的数据,使用状态。
使用加密技术可以保证数据在前两种状态下的安全性,比如数据链路层加密,数据库/文件系统的加密,但是数据在最终使用的时候,在 CPU 和内存里的数据都是明文的。
机密计算是通过在基于硬件的可信执行环境中执行计算来保护使用中的数据,以确保数据的安全性。因此,为了实现机密计算,基于硬件辅助的 TEE(Trusted Execution Environment,可信执行环境)是必要的。
TEE
TEE 由致力于开发、制定和发布安全芯片技术标准的全球平台组织(Global Platform)提出。是一种具有运算和储存功能,能提供安全性和完整性保护的独立处理环境。其基本思想是:在硬件中为敏感数据单独分配一块隔离的内存,确保敏感数据的计算在这块内存中进行,并且除了经过授权的接口访问之外,硬件中的其他部分并不能够访问这块内存中的数据,以此来实现敏感数据的隐私计算。
与 TEE 相对的称为 REE(Rich Execution Environment,富执行环境),即我们常用的操作系统运行时的环境,可以运行如 Window,Android,iOS 等通用的操作系统。REE 是一个容易受到攻击的开放环境,如敏感数据的窃取、移动支付盗用等等。而 TEE 是中央处理器上的一个安全区域,能够保证敏感数据在隔离和可信的环境内被处理,从而免受来自 REE 中的软件攻击。
TEE 通常采用软硬结合的方式进行安全性的保障与支持。在下图这一典型的可信执行环境架构中,TEE 内部为 REE 中的软件提供了接口,使得 REE 中的软件可以调用 TEE 对数据进行处理,但不会泄露敏感数据。
比如指纹解锁,一般来说,指纹是存储在 TEE 环境中的,保障隐私安全。另外,一些受版权保护的视频,也会在 TEE 环境中运行,我们尝试截屏某些视频时,会截取失败,原因即如此。
当前,TEE 技术较为依赖传统互联网厂商,主流的芯片架构平台的 TEE 如下:
Intel平台
Intel 平台有Software Guard Extensions(SGX),是 Intel 提供的一组指令,用于提高应用的代码和数据的安全性,用户可以把敏感数据放入到 Encalve 中,Enclave 是一种受保护的可信执行环境。归功于Intel提供的便利的SDK和开发环境,成为了目前学术界使用最广泛的一个TEE平台,也是目前已有的较多在区块链项目中使用的TEE平台。
ARM平台
ARM 平台有TrustZone,把硬件资源分为安全世界和非安全世界两部分,所有需要保密的操作在安全世界执行,其余操作在非安全世界执行,安全世界和非安全世界通过一个名为 Monitor Mode 的模式进行转换。目前我们用的安卓或苹果系统,都是通过TrustZone保护我们录入的指纹信息、脸部信息等个人隐私数据。
AMD平台
AMD 平台利用 SEV(AMD Secure Encrypted Virtualizationn),SME(AMD Secure Memory Encryption)和SEV-ES(Secure Encrypted Virtualization-Encrypted State)等技术实现虚拟机的 Guest 内存加密和安全隔离;原理是在AMD的处理器里内置一块小的ARM芯片,专门用来加密虚拟机的内存和在状态切换时加密寄存器。
机密计算与区块链
区块链是机密计算的一个应用场景。
区块链的一个关键特征是,它确保应该有一段共同数据的参与者确信他们看到的是相同的东西,并且一旦进入区块链,数据是不变的。应由应用程序开发人员确保敏感数据不存储在不可变的区块链上。
机密计算可用于增强基于区块链的系统的实施。通过结合机密计算和区块链技术的能力,用户可以利用基于硬件的 TEE 提供认证和验证服务,优化可扩展性、隐私和安全性。区块链用户之间数据一致性的保证通常取决于各方独立验证所有当前数据有效性所依赖的历史数据。这需要了解这些历史数据集,这是一个潜在的可扩展性或隐私问题。用户可以在基于硬件的 TEE 中执行智能合约,而不是自己独立访问和验证历史数据和相关智能合约。一旦交易完成,TEE 将提供认证服务,以证明交易的可靠性,这意味着后续参与者无需再次为自己进行验证。基于 TEE 的认证服务还可以帮助解决协商一致协议带来的一些计算和通信效率低下的问题。
简单地说就是机密计算可以增强区块链的安全性和隐私性。以下是几个典型场景:
公链
例如 Secret Network,用户交易时,会将信息提交链上加密智能合约中,加密的输入会在 TEE 环境中,由运行全节点的验证者解密,然后执行,将计算结果移出 TEE 环境时,再加密。
Layer2
例如 Eigen Network,将节点分为计算节点和合约节点。合约节点用于区块链本身的管理维护,计算节点用于执行用户的交易。用户的交易直接发给合约的执行节点,然后在TEE里运行,执行的结果将会以密文的形式保存在区块链上。
预言机
预言机龙头 ChainLink 基于合约可信数据源系统 Town Crier,在Town Crier系统中有专门用于运行Intel SGX的节点,它是用于和现实世界中的可信数据源建立Https连接,并且在节点的SGX内运行合约来指定数据获取的具体逻辑,确保通过此模型而获取的数据只有两种结果,要么获取不到,要么就是真实可信的数据。
跨链桥
Avalanche 跨链桥 TEE 节点,称为 Warden。用户在 Avalanche 前端提交跨链请求, Warden 会将交易传入 TEE 隐私环境进行验证,验证者通过 MPC 方式,利用自己私钥碎片签数交易。利用 TEE 环境,保护了跨链交易验证的安全性。
支付管道
TeeChan 是改善比特币支付可扩展性的解决方案之一,没有支付通道的用户可以直接在线下创建支付通道,由于TEE环境本身的隔离性,即使用户本身也无法随意的动用TEE内账户里的资产,因此只要有支付通道在对方TEE里创建,那么你就不需要担心对方在没有你允许的情况下把那笔钱用在别的地方,增加了安全性。
写在最后
这一篇是我公众号(公众号名:小猪Web3)的一篇发表,探讨了机密计算和 TEE。基于 TEE 的机密计算虽然可以用于增强区块链的安全性和隐私性,但它本身其实存在一些问题。首先是侧信道攻击,侧信道攻击一直是 TEE 固有的风险,过去几年里,针对 Intel SGX 侧信道攻击发生过多次,Intel 也不得不持续修复漏洞。其次,TEE 方案实际上依赖 Intel、ARM、AMD 等传统企业可信的安全假设,这就存在一个中心化信任的问题,相信主流的芯片架构平台不会留后门。不过没有一种技术是完美的,目前机密计算与 TEE 已经成了 Web2 中安全防护和隐私计算的工程利器,相信未来在 Web3 中也会大放异彩。
笔者来自蚂蚁链,也是一名以太坊/Solana/Sui上的开发者,熟悉主流公链技术和 Web3 项目,拉了一个学习交流群,欢迎对 Web3 有兴趣的同学加入(戳我微信号 go15810306120)。
Web3朱大胆 更新于 2024-04-25 19:24
https://learnblockchain.cn/article/8010