今日成果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官方TrustZone、GlobalPlatform官网。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/700735.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

GIS之arcgis系列07:conda环境下安装arcpy环境

首先将python27环境下的“Desktop10.8.pth”拷贝到anaconda环境下。 路径如下(仅参考): C:\Python27\ArcGIS10.8\Lib\site-packages\Desktop10.8.pth D:\Anaconda\Lib\site-packages 在anaconda prompt中穿创建一个新环境 conda create -…

CentOS 7 下gdb任意版本的升级

文章目录 前言查看gdb版本升级步骤 小结 前言 在做项目的过程中,遇到了难缠的bug,使用gdb调试的时候,bt调用堆栈看的一震头疼,于是就想起把gdb升级一下 当前环境:Centos7,gdb:7.6 稍微好看了那…

CD工具AWX之作业模板与工作流模板

一、概要 本文以php和h5项目为示例,讲述从初始化项目到更新发布的实现详情。 它们跟java/go等进程程序不同,只需要下发.php等静态文件即可,不涉及进程的重启。 对于php项目,除了php文件外,还包括.env配置文件。&…

java之IO流和集合框架的笔记

1 File类的使用 1.1 概述 File类及本章下的各种流,都定义在java.io包下。 一个File对象代表硬盘或网络中可能存在的一个文件或者文件目录(俗称文件夹),与平台无关。(体会万事万物皆对象) File 能新建、删…

Android14音频进阶之CarAudioManager::getOutputDeviceForUsage流程分析(七十七)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒体系统工程师系列【原创干货持续更新中……】🚀 优质视频课程:AAOS车载系统+AOSP…

经典神经网络(11)VQ-VAE模型及其在MNIST数据集上的应用

经典神经网络(11)VQ-VAE模型及其在MNIST数据集上的应用 我们之前已经了解了PixelCNN模型。 经典神经网络(10)PixelCNN模型、Gated PixelCNN模型及其在MNIST数据集上的应用 今天,我们了解下DeepMind在2017年提出的一种基于离散隐变量(Discrete Latent va…

网页五子棋对战项目测试(selenium+Junit5)

目录 网页五子棋对战项目介绍 网页五子棋对战测试的思维导图​ 网页五子棋对战的UI自动化测试 测试一:测试注册界面 测试二:测试登陆界面 测试三:测试游戏大厅界面 测试四:测试游戏房间界面以及观战房间界面 测试五&#…

使用开源的zip.cpp和unzip.cpp实现压缩包的创建与解压(附源码)

目录 1、使用场景 2、压缩包的创建 3、压缩包的解压 4、CloseZipZ和CloseZipU两接口的区别 5、开源zip.cpp和unzip.cpp文件的下载 VC++常用功能开发汇总(专栏文章列表,欢迎订阅,持续更新...)https://blog.csdn.net/chenlycly/article/details/124272585C++软件异常排…

Redis集群(5)

集群原理 节点通信 通信流程 在分布式存储系统中,维护节点元数据(如节点负责的数据、节点的故障状态等)是关键任务。常见的元数据维护方式分为集中式和P2P方式。Redis集群采用P2P的Gossip协议,这种协议的工作原理是节点之间不断…

使用 FormCreate 快速创建仿真页面

在现代前端开发中,快速创建和迭代仿真页面是提高开发效率和用户体验的关键。FormCreate 是一个强大的工具,它通过 JSON 生成具有动态渲染、数据收集、验证和提交功能的表单组件,支持多种 UI 框架。本文将介绍如何使用 FormCreate 快速创建一个…

svg图标封装--基于vue2适配uniapp全端

第一步&#xff1a;新建svg目录 在static目录下新建svg目录,后将所有svg图标都放到此文件夹 第二步&#xff1a;封装注册全局组件 (注意&#xff1a;在根目录下新建components文件夹) 代码实现&#xff1a; <template><!-- svg图标 --><image :style"{ …

【python】OpenCV—Background Estimation(15)

文章目录 中值滤波中值滤波得到图像背景移动侦测 学习来自 OpenCV基础&#xff08;14&#xff09;OpenCV在视频中的简单背景估计 中值滤波 中值滤波是一种非线性平滑技术&#xff0c;主要用于数字信号处理&#xff0c;特别是在图像处理中去除噪声。 一、定义与原理 定义&am…

MATLAB算法实战应用案例精讲-【数模应用】多分类Logit分析(附python、R语言和MATLAB代码实现)

目录 算法原理 成对类别有序logit 簇族数据中的超散布性 条件独立性检验 SPSS-有序多分类Logistic回归 SPSSAU 参照项设置 案例应用 代码实现 R语言 逻辑回归 决策树 随机森林 支持向量机 评价分类的准确性 MATLAB python 算法原理 成对类别有序logit libr…

maven基本操作和配置(idea版基础版)

写在前面&#xff1a;为一位朋友写的一个博客&#xff0c;有需要都可以查看&#xff01; 一、maven是什么&#xff1f; 一句话&#xff1a;管理依赖工具&#xff0c;统一项目结构便于开发&#xff0c;把项目开发和管理的过程抽象成对象模型来管理&#xff08;pom模型&#xf…

Milvus 2.4 向量库安装部署

1、linux 已有docker环境 2、安装fio命令 yum install -y fio 2、mkdir test-data fio --rwwrite --ioenginesync --fdatasync1 --directorytest-data --size2200m --bs2300 --namemytest ctrlc 3、lscpu 4、docker -v 6、安装docker compose组件 yum -y install python3-…

八、C语言:操作符详解

一、移位操作符 1.1左移操作 左边丢弃&#xff0c;右边补0 1.2右移操作 算数右移&#xff1a;右边丢弃&#xff0c;左边补原符号位 逻辑右移&#xff1a;右边丢弃&#xff0c;左边补0 int main() {int a -1;int b a >> 1;printf("b%d\n",b);return 0; } 原码…

贪吃蛇小游戏简单制作-C语言

文章目录 游戏背景介绍实现目标适合人群所需技术浅玩Window API什么是API控制台程序窗口大小,名称设置 Handle(句柄)获取句柄 坐标结构体设置光标位置 光标属性获取光标属性设置光标属性 按键信息获取 贪吃蛇游戏设计游戏前的初始化设置窗口的大小和名称本地化设置 宽字符Waht …

采用PHP开发的一套(项目源码)医疗安全(不良)事件报告系统源码:统计分析,持续整改,完成闭环管理

采用PHP开发的一套&#xff08;项目源码&#xff09;医疗安全&#xff08;不良&#xff09;事件报告系统源码&#xff1a;统计分析&#xff0c;持续整改&#xff0c;完成闭环管理 医疗安全确实是医疗领域中不容忽视的重要问题。医院不良安全事件&#xff0c;即医疗质量安全不良…

宋街宣传活动-循环利用,绿色生活

善于善行回收团队是一支致力于推动环保事业&#xff0c;积极倡导和实践绿色生活的志愿者队伍。我们的宗旨是通过回收再利用&#xff0c;减少资源浪费&#xff0c;降低环境污染&#xff0c;同时提高公众的环保意识&#xff0c;共同构建美丽和谐的家园。 善于善行志愿团队于2024年…

免费、无广告、界面简洁、简单好用的轻量级思维导图软件

一、简介 1、一款免费、无广告、界面简洁、简单好用的轻量级思维导图软件。它目前支持 Windows、MacOS 平台。其中 Windows 版大小在 104MB 左右&#xff08;UWP 应用&#xff09;&#xff0c;Mac 版大小在 167MB 左右。 二、下载 1、下载地址&#xff1a; MindAtom官网&#…