基于openEuler 云场景TrustZone 开发环境搭建

网友投稿 1038 2022-05-29

1.TrustZone简介

为了给移动设备提供一个安全的运行环境, ARM从ARMv6的架构开始引入了TrustZone技术。TrustZone技术将中央处理器(Central Processing Unit,CPU)的工作状态分为了正常世界状态 (Normal World Status,NWS)和安全世界状态(Secure World Status,SWS)。支持TrustZone技术的芯片提供了对外围硬件资源的硬件级别的保护 和安全隔离。当CPU处于正常世界状态时,任何应用都无法访问安全硬件设备,也无法访问属于安全世界状态下的内存、缓存(Cache)以及其他外围安全硬件设备。

TEE基于TrustZone技术提供可信运行环境,还为开发人员提供了应用程序编程接口(Application Programming Interface,API),以方便他们开发实际应用程序。在整个系统的软件层面,一般的操作系统(如 Linux、Android、Windows等)以及应用运行在正常世界状态中,TEE运行在安全世界状态中,正常世界状态内的开发资源相对于安全世界状态较为丰富,因此通常称运行在正常世界状态中的环境为丰富执行环境(Rich Execution Environment, REE),对应的客户端应用统称为CA(Client Application),而可信任的操作系统以及上层的可信应用 (Trusted Application,TA)运行于安全世界状态,运行在安全世界状态中的系统就是TEE(Trusted Execution Environment)。

鲲鹏处理器基于ARM CPU架构,提供TrustZone硬件TEE技术. 本文在搭载鲲鹏芯片的Taishan服务器上,基于官方demo和openEuler操作系统搭建云场景Trustzone开发环境。

2.openEuler OS环境搭建

首先在https://repo.openeuler.org/openEuler-20.03-LTS/ISO/aarch64/ 中下载openEuler镜像,建议选择Everything版本。

在华为iBMC中选择Taishan服务器,在远程控制中选择HTML5集成远程控制台

加载之前下载好的镜像

选择启动方式为光盘启动。

强制重启服务器

重启后进行初始化配置,选择简体中文语言

选择“安装位置”,这里选择sda,并选择回收空间

配置网络,选择“网络和主机名”,在安装过程中可以使用图形界面配置网络信息。

在这里手动添加IP地址和网关

返回到主菜单,选择“软件选择”

依次选择服务器->标准->开发工具->网络服务器

配置完成后,点击“开始安装”,安装系统,中间按要求输入账号密码即可

3.升级BIOS固件

进入iBMC 选择系统管理->固件升级->选择指定固件->开始升级

升级完成后,重启iBMC。

4.依赖包安装

基于openEuler 云场景TrustZone 开发环境搭建

python安装

工具名称

建议版本

说明

Python

python2.7.13及以上

此工具用于对TA进行签名

Gcc

V 7.3.0(2019.02x86_54)

openssl

签名脚本调用

进入https://www.python.org/downloads/release/python-2716/ 下载合适版本,这里选择的是2.7.16版本

下载完成后,传输文件Python-2.7.16.tar.xz到对应服务器的/opt路径中解压并安装,在/opt目录下依次执行

tar -xzvf demo.tar.xz  ./configure make make install

等待完成,查询python版本验证是否安装成功

python -V

出现对应的版本号说明已经成功安装

openssl安装

将demo中提供的openssl-1.0.2d.tar.gz(或者自行下载更新的包)传入服务器中,执行:

tar –vxf openssl-1.0.2d.tar.gz  // 解压

进入openssl-1.0.2文件夹下,执行:

./config make make install

将/usr/local/ssl/lib文件下的全部内容拷贝到/usr/local/lib64下

cd /usr/local/ssl/lib cp -rf * /usr/local/lib64/

将/usr/local/ssl/include文件下的内容拷贝到/usr/local/include/下

cd /usr/local/ssl/include cp -rf * /usr/local/include/

zilb安装

将demo中提供的zlib-1.2.8.tar.xz(或者自行下载更新的包)传入服务器中,执行:

tar –vxf zlib-1.2.8.tar.xz

进入zlib-1.2.8/文件夹下依次执行:

./configure make make install

5. CA、TA的RSA加解密demo执行

环境变量和路径配置

创建/vendor/bin和/data两个路径,将demo包中的/vendor/bin下的所有文件传到服务器/vendor/bin下,其中应该有 tzdriver.ko和teecd和其他库文件。

mkdir /vendor/bin mkdir /data

进入/root文件夹,编辑.bashrc文件添加库环境变量

cd /root/ vim .bashrc

在.bashrc文件中添加一行export LD_LIBRARY_PATH=/vendor/bin/:$LD_LIBRARY_PATH

加载驱动模块

insmod /vendor/bin/tzdriver.ko

开启守护进程teecd

/vendor/bin/teecd

TA sec文件编译

将demo包中TA demo程序拷贝到/home/中(或指定自定义路径),进入ta/demos文件夹下

cd /home/ta/demos

文件夹下有build_TA.sh文件和rsa-demo文件夹(内包含rsa加解密TA端的c代码)

打开build_TA.sh,修改CODE_PATH为rsa-demo

执行脚本进行编译

./build_TA.sh

生成*.o文件后需要输入账户密码对文件签名:

编译成功后,在ta/demos/output/路径下生成编译输出RSA加解密对应的可信应用.sec文件,格式为ID+.sec

拷贝ta/demos/output/下生成的.sec文件到/data文件夹下

CA执行程序编译

进入/tee_usr/rsa-demo文件夹中,可以看到RSA加解密的CA demo源码和对应的makefile文件

执行make命令,生成对应的可执行文件和.o文件

拷贝对应的可执行文件rsa-demoCA到/vendor/bin下

cp rsa-demoCA /vendor/bin

此时执行/vendor/bin下的rsa加解密可执行文件

/vendor/bin/rsa-demoCA

执行成功,则可以看见对应的rsa的加解密过程和数据打印,说明rsa加解密执行成功

云计算

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:没别的,就聊聊两个华为的自动驾驶网络平台
下一篇:走过内卷的To C,走向实体的To B
相关文章