瑞芯微RK3288对接Link TEE
本文档说明了如何使用RK3288芯片对接阿里云Link TEE-Pro,开发者按照文档操作就可以在相应平台上成功部署TEE-Pro并运行SDK包中的示例:TA、CA程序。
注意:Link TEE激活之前有试用限制:只能使用100条命令,超出100条命令后将拒绝执行。Link TEE在部署到设备后,需要激活才能正常使用。
一、配套系统
Android版本:基于RK3288_ANDROID7.1_TABLET-SDK_V1.00_20170629-20190731。
Uoot版本:基于RK3288_ANDROID7.1_TABLET-SDK_V1.00中默认提供的uboot-2014-10版本。
Linux版本:基于RK3288_ANDROID7.1_TABLET-SDK_V1.00中默认提供的kernel-4.4.143版本。
二、Rockchip 系统TEE-Pro补丁
阿里云Link TEE 基于Rockchip RK3288的补丁包。
2.1 阿里云Link TEE SDK
alitee_rk3288_sdk-20200413目录是阿里云Link TEE的SDK包,在rk3288平台,请将该目录整体复制到rk3288_android71的代码仓库,并重命名目录名称为alitee。
如下:vendor/rockchip/common/security/alitee。
注意:阿里云Link TEE的SDK包内容的详细说明请参考第三章内容。
2.2 RK3288 Android7.1 patch
由于安卓相关的配置修改无法通过Git完成,因此需要手动进行修改完成对阿里云TEE的支持。
注意:需要修改的文件列表参考android71_patch目录,该目录文件是基于RK3288_ANDROID7.1_TABLET-SDK_V1.00修改,如果您的系统有出入,请参考以下文档说明完成修改。
2.2.1增加alitee的tstd tafsd
在device/rockchip/common/init.rockchip.rc中增加:
on post-fs-data
# for optee data storage
mkdir /data/tee 0700 root root
# for alitee storage
mkdir /data/tee/tas 0700 root root #增加TA目录
mkdir /data/tee/tst 0700 root root #增加安全存储目录
增加文件init.alitee.rc: 注意:该文件会通过alitee sdk自动导入编译系统:
service alitee-tstd /system/bin/tstd /data/tee/tst
class core
seclabel u:r:tee:s0
service alitee-tafsd /system/bin/tafsd /data/tee/tas
class core
seclabel u:r:tee:s0
on property:dev.bootcomplete=1
start alitee-act
service alitee-act /system/bin/sh /system/bin/aliteereg.sh
class main
user root
group root
oneshot
seclabel u:r:alitee_act:s0
在device/rockchip/common/init.rk30board.rc中增加:
import init.alitee.rc
2.2.2 增加alitee支持
在device/rockchip/common/device.mk中配置:
#for enable alitee support
ifeq ($(strip $(PRODUCT_HAVE_ALITEE)),true)
PRODUCT_COPY_FILES += \
device/rockchip/common/init.alitee.rc:root/init.alitee.rc
endif
在device/rockchip/rk3288/device.mk中配置:
PRODUCT_COPY_FILES += \
device/rockchip/rk3288/fstab.rk30board.bootmode.unknown.rk3288:root/fstab.rk30board.bootmode.unknown.rk3288 \
device/rockchip/rk3288/fstab.rk30board.bootmode.unknown.rk3288w:root/fstab.rk30board.bootmode.unknown.rk3288w \
device/rockchip/rk3288/fstab.rk30board.bootmode.emmc.rk3288:root/fstab.rk30board.bootmode.emmc.rk3288 \
device/rockchip/rk3288/fstab.rk30board.bootmode.emmc.rk3288w:root/fstab.rk30board.bootmode.emmc.rk3288w \
device/rockchip/common/init.alitee.rc:root/init.alitee.rc #修改增加alitee
# device/rockchip/common/init.optee.rc:root/init.optee.rc #修改删除optee
在device/rockchip/rk3288/BoardConfig.mk中配置:
# Enable optee service
PRODUCT_HAVE_OPTEE := false #关闭optee
# Enable alitee service
PRODUCT_HAVE_ALITEE := true #使能aitee
2.2.3 sepolicy增加阿里TEE的支持
在./device/rockchip/common/sepolicy/file_contexts增加:
#for alitee
/system/bin/tstd u:object_r:tee_exec:s0
/system/bin/tafsd u:object_r:tee_exec:s0
/system/bin/teerd u:object_r:tee_exec:s0
/system/bin/tee_act_app u:object_r:alitee_act_exec:s0
/system/bin/aliteereg.sh u:object_r:alitee_act_exec:s0
/dev/tzdd u:object_r:tee_device:s0
/data/tee/tst(/.*)? u:object_r:tee_data_file:s0
Alitee sdk会自动导入alitee_act.te sepolicy到/device/rockchip/common/sepolicy/目录中。
2.2.4 vendor目录增加alitee sdk
将alitee sdk目录置于./vendor/rockchip/common/security/ 目录,并命名为alitee。
同时在vendor/rockchip/common/device-vendor.mk增加如下脚本:
# ALI-TEE
ifeq ($(PRODUCT_HAVE_ALITEE),true)
$(call inherit-product-if-exists, vendor/rockchip/common/security/alitee/alitee.mk)
endif
2.3 Linux patch:
将 kernel_patch/ 0001-kernel-add-support-alitee.patch置于和rk3288_android7.1/kernel同级目录下。
$ patch -p1 < 0001-kernel-add-support-alitee.patch
由于需要修改DTS文件,目前patch修改的是RK3288公版对应的rk3288-evb-android-rk808-edp.dts,因此为了适配您自己的DTS文件,请在打入patch后,在您的DTS文件增加如下代码:
dts:
#include "tzdd-rk3288.dtsi"
2.4 Uboot patch:
将 uboot_patch/0001-uboot-add-support-alitee.patch置于rk3288_android7.1/uboot根目录下$ git apply -p1 < 0001-uboot-add-support-alitee.patch
注意:Uboot patch会默认提供rk3288_alitee.img,但请不用使用默认版本,请按TEE SDK说明编译生成您自己的rk3288_alitee.img替换默认版本
三、TEE-Pro SDK发布包
Alibaba-cloud-link-tee-pro-sdk:
四、TEE-Pro的开发部署
在按第二章内容将RK3288的各个补丁包打入完成后,请按如下操作执行:
4.1 阿里云Link TEE镜像制作及编译
1、cd vendor/rockchip/common/security/alitee/tw/tools
2、openssl genrsa -out rsa_private.pem 2048
生成您自己的TA签名私钥。
3、chmod +x *
4、./rel-rk3288.sh
此时生成的rk3288_alitee.bin将自动复制到u-boot/tools/rk_tools/bin/rk32目录。
5、单独编译u-boot,生成uboot.img及trust.img。
6、单独编译kernel,生成kernel.img。
7、编译安卓整体系统镜像。
8、烧录所有镜像,启动系统。应当看到如下串口日志:
**********************************************
* Alibaba Cloud Link TEE Pro
* This is a trial version!!!
* Version number: 1.0.7.
**********************************************
4.2 TA的开发编译运行
TEE-Pro支持TA的动态加载,编译生成的TA二进制程序可以单独的保存在系统的文件系统目录中,在需要该TA的服务时,被TEE加载运行。TA的签名需要独立的公私钥对进行认证。
注意:由于需要对TA进行RSA签名认证,因此需要开发者自行维护TA签名的公私钥对。
4.2.1 CA的编译:(以xor为例说明)
1. cd vendor/rockchip/common/security/alitee/ntw/lib
在安卓编译环境执行mm,将libtee_client.so导出编译依赖到out目录,后续CA编译需要使用。
2. cd vendor/rockchip/common/security/alitee/samples/xor/ntw
在安卓的编译环境中直接执行mm,将在out/target/product/rk3288/system/bin目录直接输出ca_xor可执行程。序。您也可以手动通过adb push
置于/system/bin目录中。
4.2.2 TA的编译:(以xor为例说明)
1. cd vendor/rockchip/common/security/alitee/samples/xor/tw
2.请在该目录的Makefile中添加您安卓编译系统的arm-eabi-的路径。
CROSS_COMPILE ?= [path]/arm-eabi-
正常路径:……/prebuilts/gcc/linux-x86/arm/arm-eabi-4.8/bin/arm-eabi-
在当前目录生成68572413bdacdfce0112233445566778.bin TA文件。
请将68572413bdacdfce0112233445566778.bin文件通过adb push
或其它方式置于开发板的/data/tee/tas目录。
4.2.3 示例程序测试
在开发板环境中已经置入了ca_xor及其对应的TA执行文件。
68572413bdacdfce0112233445566778.bin后,可以在开发板命令行中执行/system/bin/ca_xor验证TEE基本流程。
注意:SDK包中默认放置了一个rsa_private.pem用于TA的签名验证,请在您的ubuntu系统中使用[openssl genrsa -out rsa_private_key.pem 2048]
命令重新生成一个用于产品TA的签名认证,该公私钥对关系您TA的安全,务必妥善保管。
- 本页导读