龙蜥白皮书精选:机密计算平台技术

2023-09-22 11:10:40

图片

文/云原生机密计算 SIG

机密计算是一种依赖于硬件的使用中数据保护技术。芯片厂商通过提供特殊的硬件指令、受保护的加密内存区域等手段,辅以基于硬件的密钥管理和密码学操作,为使用中的数据提供了一个受保护的可信编程环境,通常称之为可信执行环境(Trusted Execution Environment,简称 TEE)。 

利用最底层硬件所能提供的安全性,在保持最小信任依赖的情况下,机密计算技术可以将操作系统和设备驱动程序供应商、平台和设备供应商、服务提供商及系统管理员从用户需要信任的实体列表中移除,从而大大降低了可信计算基(TCB, Trusted Computing Base)的大小。龙蜥社区为推动机密计算技术的应用,提供若干机密计算创新项目,目的是降低机密计算技术的使用门槛。

技术方案 

JavaEnclave 

JavaEnclave(Teaclave Java TEE SDK)是一个面向 Java 生态的 Host-Enclave 机密计算编程框架,与 Intel SGX SDK 和 OpenEnclave 具有相同的编程模型。它提供了一个 Pure Java 的机密计算开发界面和构建工具链;创新性地采用 Java 静态编译技术,将 Java 敏感代码编译成 native 包并在 SGX 环境下运行。在保证机密计算极致安全的同时,将机密计算开发生态从 C/C++ 扩展到 Java,极大降低了机密计算应用的开发与编译构建门槛,提升了开发效率与用户体验

图片

目前 JavaEnclave 已经在 Apache 开源社区开源并更名为 Teaclave Java TEE SDK,作为 ApacheTeaclave 孵化项目的一个子项目继续发展。JavaEnclave 将立足龙蜥社区云原生机密计算 SIG 生态,支持更多操作系统和 TEE 硬件平台,吸收社区广大开发者的反馈意见和贡献,持续改进并不断完善功能特性。

Occlum 

Occlum 是基于 Intel SGX 实现的一套轻量级的具有内存安全的 LibOS,大大简化了 SGX 应用开发的难度。使用 Occlum 后,用户的工作负载只需要修改极少量(甚至无需修改)源代码即可在 Intel SGX 上运行,以高度透明的方式保护用户数据的机密性和完整性。

图片

今年年底即将发布的 Occlum v1.0 版本应用了 SGX 的 EDMM (Enclave 动态内存管理)特性,大大降低了应用运行于 Enclave 的适配难度,以及提升了 Enclave 里应用的启动速度和内存相关性能。

RATS-TLS 

RATS-TLS 设计了一种支持异构硬件机密计算技术的双向传输层安全协议,它在 TLS 的基础上增加了将 TLS 中的公钥与 TEE 远程证明 Evidence 绑定的能力,解决了不同 TEE 之间难以通过安全可信的方式传输数据的问题。

图片

从 RATS-TLS 项目衍生出的新项目 librats 已经支持多家主流芯片厂商的远程证明认证格式,并允许异构 TEE 之间进行双向远程证明认证。librats 已经支持最新定义的 TCG DICE Evidence 扩展,并计划捐赠给 CCC(机密计算联盟,Confidential Computing Consortium)。

SGX 虚拟化 

SGX 虚拟化允许将 SGX 硬件能力透传给虚拟机和容器,以允许用户将敏感工作负载运行在基于 Intel SGX Enclave 的 TEE 中。

图片

目前 SGX 虚拟化已支持 Anolis OS 8,可为云上用户提供基于 Intel SGX Enclave 技术的应用级安全防护能力。

CCZoo 

Intel 发起并开源了 Confidential Computing Zoo (CCZoo)。CCZoo 提供了不同场景下各种典型端到端安全解决方案的参考案例,增强用户在机密计算方案实现上的开发体验,并引导用户结合参考案例快速设计满足自己需求的机密计算解决方案。

图片

CCZoo 目前提供了基于 LibOS Gramine + Intel SGX + OpenAnolis 容器的 E2E 安全解决方案参考案例,其中包括在线推理服务和横向联邦学习等。后续,CCZoo 计划基于 OpenAnolis,提供更多的机密计算参考案例,为用户提供相应的容器镜像,实现敏捷部署。

Intel HE 

Intel 提供了对于同态加密技术的全栈式支持,包括一系列工具套件和加速库,如 Intel HE Toolkit、Intel HE Acceleration Library (Intel HEXL) 、Intel Paillier Cryptosystem Library (IPCL),以及标准的性能测试基准 Homomorphic Encryption Benchmarking Framework (HEBench)。

图片

更多龙蜥白皮书精选内容,点击这里查看。

相关链接:

云原生机密计算 SIG 主页:https://openanolis.cn/sig/coco

更多龙蜥技术特性解析可移步《龙蜥特性百科》:https://anolis.gitee.io/anolis_features/

2022 龙蜥社区全景白皮书(或公众号【OpenAnolis龙蜥】回复关键字“白皮书”获取):https://openanolis.cn/openanoliswhitepaper

—— 完 ——

更多推荐

数据结构 - 链表

线性表的链式存储结构概念将线性表L=(a0,a1,…,an-1)中各元素分布在存储器的不同存储块,成为结点,通过地址或指针建立元素之间的联系。结点的data域存放数据元素ai,而next域是一个指针,指向ai的直接后继ai+1所在的结点。下图中的首元结点(头结点)A的data不重要,next域指向链表的真正的第一个结点

js同级弹窗实现数据传输修改

window.postMessage是一种用于实现跨窗口通信的HTML5特性。它允许在不同窗口或iframe之间安全地传递数据,即使这些窗口来自不同的域名。window.postMessage方法接受两个参数:message:要发送的消息,可以是一个字符串或一个对象。targetOrigin:指定接收消息的窗口的源(o

C语言每日一题(7):获得月份天数

文章主题:获得月份天数🔥所属专栏:C语言每日一题📗作者简介:每天不定时更新C语言的小白一枚,记录分享自己每天的所思所想😄🎶个人主页:[₽]的个人主页🏄🌊目录前言编程起因项目介绍设计思路1.整体逻辑2.具体逻辑代码展示效果展现结语前言编程起因最近在牛客网上刷到了一个很好的训练分支语句的题目,于是想出了求两个数

NeRF-RPN:一个通用的目标检测框架

论文标题:NeRF-RPN:AgeneralframeworkforobjectdetectioninNeRFs代码:https://github.com/lyclyc52/NeRF_RPN图1:在NeRF上的Regionproposal结果视频演示效果:https://www.youtube.com/watch?v=

进程与线程

1进程1.1进程的概念进程就是正在运行的程序,它代表了程序所占用的内存区域1.2进程的特点独立性进程是系统中独立存在的实体,它可以拥有自己独立的资源,每个进程都拥有自己私有的地址空间在没有经过进程本身允许的情况下,一个用户进程不可以直接访问其他进程的地址空间动态性进程与程序的区别在于.程序只是一个静态的指令集合,而进程

spring security为啥是个垃圾框架?

古时候写代码,权限这块写过一个库,基本就是一个泛型接口,里面有几个方法:如验证输入的principal和credentials,返回token和authorities和roles,role就是一堆authorities集,也就说就是返回一堆authorities。然后每次请求会拿token找到authorities,然

C语言之指针进阶篇(3)

目录思维导图回调函数案例1—计算器案例2—qsort函数关于qsort函数NO1.NO2.NO3.NO4.演示qsort函数的使用案例3—冒泡排序整型数据冒泡排序回调函数搞定各类型冒泡排序cmp_int比较大小cmp传参数NO1.NO2.解决方案交换swap总代码今天我们学习指针难点之回调函数🆗🆗🆗。首先我们用思

springcloud3 分布式事务实现逻辑思想2

一分布式事务逻辑1.1CAP理论CAP原则又称CAP定理,指的是在一个分布式系统中,Consistency(一致性)、Availability(可用性)、Partitiontolerance(分区容错性)这3个基本需求,最多只能同时满足其中的2个。总结:1.2CAP的应用场景假如现在有这样的场景:用户访问了N1,修改了

【再识C进阶2(下)】详细介绍指针的进阶——利用冒泡排序算法模拟实现qsort函数,以及一下习题和指针笔试题

前言💓作者简介:加油,旭杏,目前大二,正在学习C++,数据结构等👀💓作者主页:加油,旭杏的主页👀⏩本文收录在:再识C进阶的专栏👀🚚代码仓库:旭日东升1👀🌹欢迎大家点赞👍收藏⭐加关注哦!💖学习目标:在上一篇博客中,我们学习了回调函数,以及怎么使用qsort函数去排序;那么在这一篇博客中,我们来更加详细

HTTP各版本差异

HTTP1.0无法复用连接HTTP1.0为每个请求单独新开一个TCP连接#mermaid-svg-9N3exXRS4VvT4bWF{font-family:"trebuchetms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-9N3e

基于Matlab实现图像分割技术(附上源码+图像)

Matlab是一种功能强大的编程语言和开发环境,被广泛应用于图像处理和计算机视觉领域。图像分割是图像处理中的重要技术之一,它将图像分割成若干个具有相似特征的区域,以便更好地理解和处理图像。在Matlab中,实现图像分割可以使用多种方法和函数。下面将介绍几种常用的图像分割技术及其在Matlab中的实现。基于阈值的分割:基

热文推荐