【机密计算实践】OPEN Enclave SDK 安装与构建

news2024/12/23 0:17:23

        机密计算是基于硬件支持的可信执行环境的,比如 Intel SGX 硬件技术上面的 enclave 以及 Arm Trustzone 上的 OT-TEE,不过这些异构的 TEE 之间差异还是蛮大的,所以亟需一种能够屏蔽 TEE 差异软件中间件或者 SDK,这就是本文将要提到的微软 Open Enclave SDK。

        Open Enclave 提供了异构 TEE (SGX 和 OP-TEE)的兼容,为上层机密应用提供了同一的接口,同时为机密计算提供了远程证明、多高级语言支持等功能。

        机密计算是一项持续的工作,旨在保护静态、传输中和正在使用中的数据的整个生命周期安全。通过使用信任执行环境,客户可以构建应用程序,以保护数据在使用时免受外部访问。Open Enclave SDK 是一个开源 SDK,旨在为开发人员创建单个统一的安全区抽象,以构建基于可信执行环境 (TEE) 的应用程序。随着 TEE 技术的成熟和不同实现的出现,Open Enclave SDK 致力于支持一个 API 集,允许开发人员一次构建并部署在多个技术平台,从云到混合云再到边缘的不同环境,同时兼容 Linux 和 Windows 操作系统。

一、环境构建

        主机操作系统建议采用 ubuntu 18.04,为了更好的构建 openenclave,建议安装一下必要的软件库:

sudo apt update && sudo apt install -y android-tools-adb                       \
    android-tools-fastboot autoconf automake bc bison build-essential ccache   \
    cgdb cscope curl device-tree-compiler expect flex ftp-upload gdb-multiarch \
    gdisk iasl libattr1-dev libc6 libcap-dev libfdt-dev libftdi-dev            \
    libglib2.0-dev libhidapi-dev libncurses5-dev libpixman-1-dev libssl-dev    \
    libstdc++6 libtool libz1 make mtools netcat python-crypto                  \
    python-pyelftools python-serial python-wand python3-pyelftools repo unzip  \
    uuid-dev xdg-utils xterm xz-utils zlib1g-dev qemu-user-static

二、目录结构

        最终我们构建的整体目录结构如下:

openenclave    根目录
    -sdk       openenclave 源码目录
    -emulation  optee 源码目录
    -build     sdk 构建目标

       openenclave 为我们手动创建,在后续步骤中假定该目录已存在;

       sdk 目录用来存放 openenclave 源代码;

       emulation 用来存放 optee 源码;

       build 用来构建基于 optee 和 openenclave 的机密计算环境。

三、optee 构建

3.1 创建模拟器目录

       创建 optee 目录文件夹,因为我们构建的是 qemu 版本,所以命名为模拟器 emulation。

mkdir emulation
cd emulation

3.2 同步 optee 代码 

       这里需要使用附带的 repo 程序来拉取 optee 代码,这里通过 manifest 指定了用于 openenclave 的 qemu 版本,分支是 3.6.0。从路径可以看出,这是微软维护的一个版本,并不是 optee 官方版本。

repo init -u https://github.com/ms-iot/optee_manifest -m oe_qemu_v8.xml -b oe-3.6.0
repo sync

3.3 构建

       进入 build 目录,来下载&安装相关工具链,这个时间可能会长一点。

       最后,通过 run 指令,对 optee 进行构建。

cd build
make toolchains -j2
make run -j$(nproc)

四、openenclave 构建

4.1 代码树

       以下是 openenclave 的源码树,包含了一些常用的组件,比如 libc、libcxx,同时也包含了 host 和 enclave 等目录,此外还有包管理器、脚本、测试、工具、调试器、文档等。

4.2 代码获取

       代码获取使用 git 递归获取代码到 sdk 目录下,这里不仅会下载 openencalve 源码,还会下载依赖的 openssl、mbedtls、optee os 等代码。

//返回到 openenclave 根目录

git clone --recursive https://github.com/openenclave/openenclave.git sdk

4.3 依赖工具安装

       通过运行以下脚本,即可安装依赖的工具。

cd sdk

# Set up the build environment (only once).
sudo scripts/ansible/install-ansible.sh
sudo ansible-playbook scripts/ansible/oe-contributors-setup-cross-arm.yml

4.4 构建

       openenclave 采用 cmake 组织源代码,同时通过 ninja 来进行构建,来实现很好的效率。

cd ..

mkdir build
cd build

# Configure the SDK
cmake ../sdk \
    -G Ninja \
	-DCMAKE_TOOLCHAIN_FILE=../sdk/cmake/arm-cross.cmake \
	-DOE_TA_DEV_KIT_DIR=$PWD/../emulation/optee_os/out/arm/export-ta_arm64 \
	-DCMAKE_BUILD_TYPE=Debug

# Build the SDK
ninja

cd ..

总结

       通过以上步骤,openenclave 机密计算环境即构建完成,剩下的就是如何运行机密计算环境以及如何在机密计算环境中运行机密程序。运行机密计算环境稍微复杂一些,我们会在下一篇单独介绍。

皮格马利翁效应心理学指出,赞美、赞同能够产生奇迹,越具体,效果越好~
“收藏夹吃灰”是学“器”练“术”非常聪明的方法,帮助我们避免日常低效的勤奋~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/877422.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

我学会这些车载技术,是不是就可以进【小米】车企?

作者:阿刁 随着智能化和电动化的发展,车载开发领域的前景非常广阔。许多手机厂商也纷纷加入进来,华为、小米等手机巨头也相继推出新能源汽车。所以在未来,车载系统将成为汽车的核心部分,涵盖车辆的控制、信息娱乐、智能…

“先锋龙颜美学”,比亚迪宋L 完成工信部申报,单双电机正式上市

根据工信部最新发布的《道路机动车辆生产企业及产品公告》(第 374 批),我们得知比亚迪汽车公司的新款车型宋 L 已经顺利完成申报,并成功获得核准。这款车型将会有两个版本,分别是单电机和双电机版本。 此外&#xff0c…

Redis——String类型详解

概述 Redis中的字符串直接按照二进制的数据存储,不会有任何的编码转换,因此存放什么样,取出来的时候就什么样。而MySQL默认的字符集是拉丁文,如果插入中文就会失败 Redis中的字符串类型不仅可以存放文本数据,还可以存…

GloVe、子词嵌入、BPE字节对编码、BERT相关知识(第十四次组会)

GloVe、子词嵌入、BPE字节对编码、BERT相关知识(第十四次组会) Glove子词嵌入上游、下游任务监督学习、无监督学习BERTGlove 子词嵌入 上游、下游任务 监督学习、无监督学习 BERT

强制Edge或Chrome使用独立显卡【WIN10】

现代浏览器通常将图形密集型任务卸载到 GPU,以改善你的网页浏览体验,从而释放 CPU 资源用于其他任务。 如果你的系统有多个 GPU,Windows 10 可以自动决定最适合 Microsoft Edge 自动使用的 GPU,但这并不一定意味着最强大的 GPU。 …

8.14 刷题【7道】

二叉树 1. 树中两个结点的最低公共祖先 原题链接 方法一:公共路径 分别找出根节点到两个节点的路径,则最后一个公共节点就是最低公共祖先了。 时间复杂度分析:需要在树中查找节点,复杂度为O(n) /*** Definition for a binary…

CUDA、cuDNN以及Pytorch介绍

文章目录 前言一、CUDA二、cuDNN三、Pytorch 前言 在讲解cuda和cuDNN之前,我们首先来了解一下英伟达(NVIDA)公司。 NVIDIA是一家全球领先的计算机技术公司,专注于图形处理器(GPU)和人工智能(…

买机票系统---(java实现)

/* * 案例 * 卖机票 * 需求:机票价格按照淡季和旺季,头等舱和经济舱收费,输入机票原价,月份和头等舱或经济舱 * 旺季(5-10月):头等舱9折,经济舱8.5折 * 淡季(11-来年4月&…

小目标检测(5)——有线硬触发和有线软触发架构学习

文章目录 引言正文PLC介绍有线硬触发有线软触发硬件接口 总结引用 引言 之前花了很多时间也就是仅仅看懂了基本代码,最近和老师交流之后,发现还有很多东西都需要弄.最终的灯检机,并不是直接接上计算机就使用的,并不是单纯通过计算机控制的,还有一个叫做PLC(可编程逻辑控制器),…

Python自动化实战之使用Selenium进行Web自动化详解

概要 为了完成一项重复的任务,你需要在网站上进行大量的点击和操作,每次都要浪费大量的时间和精力。Python的Selenium库就可以自动化完成这些任务。 在本篇文章中,我们将会介绍如何使用Python的Selenium库进行Web自动化,以及如何…

免费敏捷工具做敏捷需求管理

传统的瀑布工作模式使用详细的需求说明书来表达需求,需求人员负责做需求调研,根据调研情况编制详细的需求说明书,进行需求评审,评审之后签字确认交给研发团队设计开发。在这样的环境下,需求文档是信息传递的主体&#…

vscode自带的代码诊断工具在为 c++17 的特性报错,如何取消这些报错

ctrlshiftP 打开设置界面,找到这个项 调整为 c17 即可

ssh做端口转发

问题 主机1能访问外网,主机2 不能访问外网外部主机想要访问主机2 解决 在主机1上做本地端口转发。可以用ssh来做本地端口转发(转发到远端)。 方法: 在(本地)主机1上执行 ssh -C -f -N -g -L 10.0.8.3:18888:10.0.8.4:8888 li…

【深度学习】PyTorch快速入门

【深度学习】学习PyTorch基础 介绍PyTorch 深度学习框架是一种软件工具,旨在简化和加速构建、训练和部署深度学习模型的过程。深度学习框架提供了一系列的函数、类和工具,用于定义、优化和执行各种深度神经网络模型。这些框架帮助研究人员和开发人员专注…

Autoware感知02—欧氏聚类(lidar_euclidean_cluster_detect)源码解析

文章目录 引言一、点云回调函数:二、预处理(1)裁剪距离雷达过于近的点云,消除车身的影响(2)点云降采样(体素滤波,默认也是不需要的)(3)裁剪雷达高…

linux shell快速入门

linux shell快速入门 0 、前置1、简单使用 0 、前置 一安装linux的虚拟环境 1、简单使用 1、新建/usr/shell目录 2、新建hello.sh 文件 3、编写脚本文件# !/bin/bashecho "hello world"查看是否具备执行权限 新增执行权限 chomd x hello.sh执行hello.sh文件 /b…

AI大模型自动生成PowerPoint(PPT)

1,使用现有开源大模型工具,生成markdown语言文件(我这里使用chatGLM2-6B) eg,请用Markdown语言生成一个大纲,主题是:给小白用户的第一课,如何快速的学好Python markdown语言文本如下…

[C++ 网络协议编程] UDP协议

目录 1. UDP和TCP的区别 2. UDP的工作原理 3. UDP存在数据边界 4. UDP的I/O函数 4.1 sendto函数 4.2 recvfrom函数 4. 已连接(connected)UDP套接字和未连接(unconnected)UDP套接字 5. UDP的通信流程 5.1 服务器端通信流程 5.2 客户端通信流程 1. UDP和TCP的区别 主要…

电脑系统重装日记

重装原因 电脑C盘几乎爆炸故重装系统一清二白 此片原因 记录重装过程,强调一些要注意的点,以防日后重装。 重装过程 1.清空电脑文件后重启,电脑冒蓝光,一直蓝屏反复重启,故只能重装系统以解难题。 2.准备一个U盘&…

英语翻译,纯人工翻译哪里比较专业?

我们知道,人类语言是复杂的,给定的单词或短语含义会根据上下文内容和目标受众的不同而有所不同。机器翻译的准确率比较低。而专业的人工翻译是保持原文真实、原意的唯一保证。那么,针对英语翻译,如何做好人工翻译,北京…