查看原文
其他

「PrimiHub TEE」由原语科技打造的一套专业 TEE 隐私保护计算解决方案

PrimiHub 原语科技 2024-01-09


扫码关注保护消费者权益我们在行动
原语科技在相继推出 PrimiHub、PrimiHub 一体机后,又发布了一个重量级项目「PrimiHub TEE」。

PrimiHub TEE 是原语科技基于 Intel SGX 技术打造的一套专业 TEE 隐私保护计算解决方案,基于 SGX SDK 开发,分为远程认证和机密计算两大模块,其中远程认证使用 DCAP+PKI x509 证书链实现自建远程认证服务。更多详细信息请继续滑动阅读~

TEE 全称 Trusted execution environment,中文可信执行环境,是和安全多方计算(MPC)、同态加密(HE)并存的隐私保护计算的三大流派之一。TEE 是基于硬件安全的 CPU,实现了基于内存隔离的安全计算,并可高效完成隐私保护计算的技术。01 代码目录介绍https://github.com/primihub/primihub/tree/develop/src/primihub/sg
Cert:证书申请和私钥生成工具Common:通用基础功能,包括文件读写、对 openssl 接口封装后的加解密接口、日志输出等dcap_server:基于 dcap 的远程认证服务Engine:隐私计算引擎,包含基础算子Ra:远程认证工具库,包含远程认证和会话密钥管理功能Util:基础工具地址:https://github.com/primihub/primihub/tree/develop/src/primihub/sgx02 认证介绍
在可信执行环境构成的系统中,系统的安全基于受信任的处理器,而处理器的安全依赖于软件证明。这个软件在受信任的硬件内部创建的隔离容器中运行,软件可以要求硬件对认证数据进行签名,生成认证签名。除了这个认证数据外,被签名的消息还包括一个度量值。这个度量值可以作为容器中软件的唯一身份标识。因此一个认证签名可以很方便的用来验证认证数据是由运行在容器中的程序产生的,而这个容器是被受信任的硬件隔离的,不会受到外部干扰。远程认证方案在基于 SGX 技术的可信执行环境系统中,认证过程是一个运行于 enlave 中的程序向其他 enclave 证明其完整性和真实性的过程。SGX 认证即是一个在 SGX 平台上运行的 ISV enclave(证明者) 希望来向远程 enclave(验证者) 证明其身份(MRENCLAVE)以及确实是在真实的 SGX 处理器上正确的隔离执行。软件认证可以和一个密钥协商协议结合在一起,由软件认证提供密钥协商协议所需的验证。PrimiHub TEE 的远程认证方案是基于 DCAP+PKI x509 证书链的设计,并且和密钥协商协议结合在一起。在开始运行之前,每个节点都需要使用证书申请工具为自己生成私钥和证书请求,并在 CA 系统将证书请求签发为证书。证书申请工具产生公私钥对和度量信息的过程都在 enclave 中完成,度量信息作为 x509 扩展项和公钥信息一起添加到证书请求中,签发证书后,度量信息和此证书绑定在一起。证书申请工具最终生成私钥文件和证书请求文件,其中私钥文件通过 SGX 内置的密钥进行加密,只有在此 CPU 的 enclave 中才能解密。证书请求文件提交给 CA 系统签发为节点证书文件。在远程认证时,证明者需出示自己的证书,验证者则将证书中的度量信息解析出来进行验证。远程认证+密钥协商流程PrimiHub TEE 的远程认证是和密钥协商结合在一起的,可以把远程认证过程视为密钥协商之前的身份认证。远程认证过程有 3 个参与方,证明者、验证者以及认证服务。
  • 验证者:主动发起远程认证流程的一方。
  • 证明者:被动响应远程认证请求的一方,通过出示自己的可信环境度量信息来证明其合法性。
  • 认证服务:做为一个可信的第三方,验证证明者提供的度量信息是否合法有效。其信任链的根源是处理器制造商。
  1. 验证者向证明者发起远程认证请求
  2. 证明者收到认证请求后,首先验证请求方的身份,然后将自己的证书和认证请求信息签名后发送给认证请求方,其中证书中包含标识计算节点度量值的信息。
  3. 验证者收到证明者返回的的信息后,首先验证证明者证书的有效性,然后将证明者证书发送到 dcap 服务,验证证明者节点是否为合法的可信计算环境。
  4. 验证通过后,验证者生成共享密钥,并用证明者公钥加密,发送给证明者。
  5. 证明者接收到加密的共享密钥后,导入 enclave 并用私钥解密,因为这是用证明者公钥加密的,只有证明者才可以用对应私钥解密出共享密钥。至此,远程认证和密钥协商流程完成。
03 计算流程
下图描述了一个典型的通过可信执行环境完成计算的过程。这个过程包含以下组件,CLI、scheduler、alice、bob、exectuor、dcap 服务。这个例子只有两个数据提供方,可以根据实际情况扩展成更多的数据提供方。
  • CLI:任务提交工具
  • scheduler:一个完成调度功能的 PrimiHub 节点
  • alice:一个作为数据提供方的 PrimiHub 节点,本示例中还作为结果接收方
  • bob:一个作为数据提供方的 PrimiHub 节点
  • executor:一个部署在第三方的可信计算节点
  • dcap 服务:提供可信执行环境认证的第三方服务
  1. CLI 提交一个任务到调度节点(scheduler)
  2. 调度节点根据任务配置中的任务类型(TEE_TASK)、参与节点、数据源信息等信息,将任务配置分发给参与任务的节点 alice、bob、executor。其中 alice、bob 是数据提供方,executor 为计算节点。
  3. Alice 和 bob 作为数据提供方,根据任务配置中指定的计算节点信息,发起对 executor 的认证请求。
  4. Executor 节点收到认证请求后,将自己的证书和认证请求信息签名后发送给认证请求方,其中证书中包含标识计算节点度量值的信息。
  5. Alice 和 bob 收到计算节点的证书后,首先验证证书的有效性,然后将证书发送到 dcap 服务,验证计算节点是否为合法的可信计算环境。验证通过后,Executor 与请求远程认证的节点分别完成密钥协商过程。密钥协商完成后,Executor 和请求远程认证的节点都得到一个相同的对称密钥,用于完成数据的机密性和完整性保护。该密钥的生命周期仅为这一个任务会话中,任务结束后密钥销毁。
  6. Alice 和 bob 得到共享密钥后,分别使用各自的共享密钥,将本次任务所需的数据加密,发送给 executor 进行计算。Executor 收到加密后的数据后,解密数据并根据任务配置中指定的算法进行计算。计算完成后,使用共享密钥加密计算结果,返回给任务配置中指定的结果接收方。这个过程中,Alice、bob、executor 所有的操作均在 encalve 中进行。
  7. 结果方使用共享密钥解密数据,得到最终的明文计算结果,任务结束。


END


原语科技自主研发的隐私计算平台PrimiHub及管理平台PrimiHub-Platform均已在GitHub和Gitee上开源,欢迎交流体验 -


官方文档:

https://docs.primihub.com

GitHub 地址:

https://github.com/primihub/primihub

Gitee 地址:

https://gitee.com/primihub/primihub


往期推荐




原语科技

primihub.com


击“
继续滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存