今日成果2024-6-7 TrustZone TEE安全SDK开发指南

Rockchip Vendor Storage Application Note.pdf OK

开机下,可以实现Vendor Storage的读写。

0ms时同步RTC时间 OK

Rockchip_Developer_Guide_TEE_SDK_CN.pdf

什么是TrustZone

此系统方法意味着可以保护安全内存、加密块、键盘和屏幕等外设,从而可确保它们免

遭软件攻击。

可信应用程序采用基TrustZone技术的SoC(运行可信执行环境),与主OS分开,可防止软件/恶意软件

攻击。TrustZone可切换到安全模式,提供硬件支持的隔离。可信应用程序通常是可集装箱化的,如允

许不同支付公司的可信应用程序共存于一台设备上。处理器支持ARM TrustZone技术是所有Cortex-A类

处理器的基本功能,是通过ARM架构安全扩展引入的。这些扩展可在供应商、平台和应用程序中提供一

致的程序员模型,同时提供真实的硬件支持的安全环境。

TrustZone软硬件架构

TrustZone与TEE

《Rockchip TEE安全SDK开发指南》

主要介绍Rockchip TEE安全相关固件说明、TEE环境搭建、CA/TA开发测试、TA调试方法、TA签名方法以及注意事项。

  • TrustZone简介
    • 什么是TrustZone:ARM TrustZone技术是系统范围的安全方法,针对高性能计算平台上的大量应用,包括安全支付、数字版权管理(DRM)、企业服务和基于Web的服务。
    • TrustZone软硬件架构:硬件架构旨在提供安全框架,从而使设备能够抵御将遇到的众多特定威胁;软件架构是专用安全区域操作系统;TrustZone与TEE的关系是,TEE是基于ARM TrustZone技术的设备与开放API相结合,提供了可信执行环境,开发人员需要通过一种新型软件才能实现其功能和一致性。
  • TEE环境
    • 平台说明:Rockchip平台中Android 7.1及更高版本SDK默认均支持TEE环境,Android7.1以下版本默认不支持TEE环境。Linux版本SDK默认不支持TEE环境。
    • Parameter.txt说明:Parameter.txt文件记录了各镜像及分区的位置与大小信息,Rockchip的OP-TEE目前同时支持security与rpmb两种安全存储文件系统,具体使用哪种文件系统由TA中设置storageID参数来决定。
    • TEE固件:TEE Secure OS的源码默认不开源,binary位于目录u-boot/tools/rk_tools/bin或rkbin/bin下。
    • U-Boot中TEE驱动:目前一些安全的操作需要在U-Boot这级操作,比如读取一些数据必须需要OP-TEE帮忙获取。U-Boot里面实现了OP-TEE Client代码,可以通过该接口与OP-TEE通信。
    • TEE linux kernel驱动:TEE linux kernel驱动位于security/optee_linuxdriver/与drivers/tee/中。
    • TEE库文件:TEE环境相关组件在Android工程目录vendor/rockchip/common/security或目录hardware/rockchip/optee下(包含V1与V2版本,需根据不同平台采用不同版本文件)。
  • CA/TA开发与测试
    • 环境配置:若编译报错No module named Crypto.Signature,这是开发电脑没有安装python的算法库导致的,执行如下命令即可:pip uninstall Crypto pip uninstall pycrypto pip install pycrypto。
    • Android:目录介绍、编译开发说明、运行测试TEE环境、开发CA/TA。
    • Linux:目录介绍、编译开发说明、运行测试TEE环境、开发CA/TA。
  • TA签名
    • 原理:在编译TA时,编译脚本将自动使用rk_tee_user工程export-user_ta/keys目录或者export-ta_arm32/keys目录下的密钥对TA应用进行签名,该密钥为pem格式的2048长度RSA密钥,最终生成.ta格式的TA文件。
    • 替换公钥:为防止开发者A的TA应用运行在开发者B的板子上,建议开发者替换公钥。
  • 内置TA到安全存储
    • 原理:CA端读取非安全文件系统中的TA文件,再把TA数据发送给OP-TEE OS,OP-TEE OS接收到TA数据会先校验TA的合法性,若TA是合法的则随机生成TA加密密钥,使用TA加密密钥对TA数据进行加密,再将密文TA数据和TA加密密钥进行安全存储,安全存储所使用的密钥由硬件唯一密钥派生,每台设备都不同。
    • 参考实现:以下为CA端代码,开发者可以先读取TA文件,然后通过install_ta函数把TA数据发送到OP-TEE OS。
  • 加密TA
    • 加密TA方法:开发者需在export-ta_arm32/mk/link.mk中开启CFG_ENCRYPT_TA宏,同时修改TA_ENC_KEY为开发者自己的加密密钥,开启该宏后开发者在编译TA应用时脚本会自动对TA进行签名和加密。
    • 烧写TA encryption key:开发者使用SDK工程RKTools目录下RKDevInfoWriteTool工具(版本号大于等于1.2.8)烧写TA encryption key。
    • 解密并运行TA:加密TA与明文TA在使用上完全一致,OP-TEE OS在加载TA过程会自动识别到TA是加密的,OP-TEE OS会自动读取OTP中TA encryption key并解密运行TA,该过程由OP-TEE OS自动完成。
  • REE FS TA防回滚
    • 使用TA防回滚:REE FS的TA防回滚功能始终开启,开发者可通过在Makefile定义TA的版本号来使用防回滚功能。
  • TA调试方法
    • optee v1平台:TA出现异常时会打印如下信息。
    • optee v2平台:TA出现异常时会打印如下信息。
    • 查看调用栈:若开发者调试代码时不仅仅要查看程序异常地址,还想查看整个函数调用栈,optee v2平台提供了脚本export-ta_arm32\scripts\symbolize.py脚本实现该功能。
  • 内存相关说明
    • OP-TEE V1:ARMv8架构芯片中TEE内存分配情况如下:2M TEE RAM,24M TA RAM,4M SHMEM。
    • OP-TEE V2:各平台大小不固定,并且运行大小可能会调整,这里就不统一说明了。
  • 安全存储
    • 分区:安全存储是OPTEE OS重要的功能之一,一般用于存储用户重要数据,数据经过OPTEE OS加密存储于security分区或者rpmb分区或者REE文件系统,具体存储于哪个分区由CA传递参数告知TA,由TA负责存储。
    • 性能测试:OPTEE V1平台,RK3399 Linux平台,CPU定频1200000,DDR定频200000000,进行测试。
  • TA API说明
    • 概述:RK提供以下TA API,有两个目的:供开发者参考常用的GlobalPlatform TEE Internal Core API的用法;供开发者直接使用API。
    • API的返回值:API的返回值有:TEE_SUCCESS:成功;TEE_ERROR_BAD_PARAMETERS:参数错误;其他错误:见tee_api_defines.h。
    • API说明:Crypto API、TRNG API、OTP API。
  • 相关资料扩展ARM官方TrustZoneGlobalPlatform官网
相关推荐
_.Switch5 小时前
高级Python自动化运维:容器安全与网络策略的深度解析
运维·网络·python·安全·自动化·devops
JokerSZ.5 小时前
【基于LSM的ELF文件安全模块设计】参考
运维·网络·安全
SafePloy安策5 小时前
软件加密与授权管理:构建安全高效的软件使用体系
安全
芯盾时代5 小时前
数字身份发展趋势前瞻:身份韧性与安全
运维·安全·网络安全·密码学·信息与通信
北京搜维尔科技有限公司8 小时前
搜维尔科技:【应用】Xsens在荷兰车辆管理局人体工程学评估中的应用
人工智能·安全
云起无垠8 小时前
技术分享 | 大语言模型赋能软件测试:开启智能软件安全新时代
人工智能·安全·语言模型
ac-er88888 小时前
PHP弱类型安全问题
开发语言·安全·php
One_Blanks9 小时前
渗透测试-Linux基础(1)
linux·运维·安全
易云码9 小时前
信息安全建设方案,网络安全等保测评方案,等保技术解决方案,等保总体实施方案(Word原件)
数据库·物联网·安全·web安全·低代码