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

举报
zyx199518 发表于 2020/05/13 17:24:04 2020/05/13
【摘要】 1.TrustZone简介 为了给移动设备提供一个安全的运行环境, ARM从ARMv6的架构开始引入了TrustZone技术。TrustZone技术将中央处理器(Central Processing Unit,CPU)的工作状态分为了正常世界状态 (Normal World Status,NWS)和安全世界状态(Secure World Status,SWS)。支持TrustZone技术的...

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.依赖包安装

  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加解密执行成功


【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。