今日成果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官网
相关推荐
athink_cn7 小时前
HTTP/2新型漏洞“MadeYouReset“曝光:可发动大规模DoS攻击
网络·网络协议·安全·http·网络安全
zzc9218 小时前
TLSv1.2协议与TCP/UDP协议传输数据内容差异
网络·测试工具·安全·wireshark·ssl·密钥·tlsv1.2
huluang10 小时前
医院网络安全重保行动方案
网络·安全
九州ip动态10 小时前
如何安全使用改IP软件更改异地IP地址?
网络·tcp/ip·安全
杭州泽沃电子科技有限公司10 小时前
告别翻山越岭!智能监拍远程守护输电线路安全
运维·人工智能·科技·安全
wha the fuck40411 小时前
攻防世界—unseping(反序列化)
安全·序列化和反序列化
David WangYang15 小时前
基于 IOT 的安全系统,带有使用 ESP8266 的语音消息
物联网·安全·语音识别
合作小小程序员小小店16 小时前
SDN安全开发环境中常见的框架,工具,第三方库,mininet常见指令介绍
python·安全·生成对抗网络·网络安全·网络攻击模型
数据智能老司机17 小时前
实现逆向工程——汇编指令演练
安全·逆向·汇编语言
网络研究院19 小时前
新的“MadeYouReset”方法利用 HTTP/2 进行隐秘的 DoS 攻击
网络·网络协议·安全·http·攻击·漏洞