今日成果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官网。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

视频剪辑可以赚钱吗 快速学会视频剪辑的方法

由于视频剪辑的需求不断增长,学会视频剪辑成为一项自媒体必备的技能,这个技能可以为个人带来收入和职业发展带来机会。无论是作为自由职业者还是在公司工作,掌握视频剪辑技能都可以为你提供更多的工作机会和竞争优势。这篇文章将讲解视频剪辑…

springboot事务管理的机制是什么

SpringBoot的事务管理机制实质上是基于Spring框架的事务处理机制。其主要目的是确保一系列数据库操作要么全部成功,要么全部失败(回滚),从而维护数据的完整性和一致性。 SpringBoot事务管理遵循ACID四大特性: 1、原子…

VBA,VB6 LIKE 运算符有哪些转义符?

在 VB6 中,LIKE 运算符主要使用以下转义符: *:表示匹配任意字符序列(包括空字符序列)。 ?:表示匹配任意单个字符。 [ ]:用于表示字符范围。例如,[a-z] 表示匹配从小写字母 a 到 z …

前端将Markdown文本转换为富文本显示/编辑,并保存为word文件

参考:https://www.wangeditor.com/ https://blog.csdn.net/weixin_43797577/article/details/138854324 插件: markdown-it traptitech/markdown-it-katex markdown-it-link-attributes highlight.js wangeditor/editor wangeditor/editor-for-vue html…

2.深度学习-线性回归

文章目录 环境配置(必看)线性回归代码工程运行结果1.对比图2.运行结果 环境配置(必看) Anaconda-创建虚拟环境的手把手教程相关环境配置看此篇文章,本专栏深度学习相关的版本和配置,均按照此篇文章进行安装…

Carsim高级开发:VS Connect通讯开发指南

文章目录 前言一、VS Connect 概念引入二、VS Connect 通讯框架三、Carsim 工程配置1、车辆模型配置2、procedure配置3、Run Control配置4、受控车辆名称配置 四、VS Connect Server代码1、打开Sln工程2、代码修改 五、VS Connect Client代码1、函数的调用关系2、carsim_variab…

目录深度探索

目录 文件控制块和索引节点 索引节点(Inode) 结构比较 简单文件目录 目录和文件控制块 线性结构的目录 优点和缺点 使用场景 树形目录 树形目录的基本概念 树形目录的优势 树形目录的具体应用 案例分析:多层次目录结构 无环图目…

MySQL 8.0开始引入了开窗函数,使得SQL语句能够以更复杂的方式操作数据集。

在MySQL中使用ROW_NUMBER()函数时,可以通过一个简单的图表来帮助理解它是如何工作的。以下是对ROW_NUMBER()函数的图解说明: 假设我们有一个名为employees的表,其中包含以下列:employee_id(员工ID)&#x…

C语言线条样式和填充样式都有哪些? 怎样设置?

一、问题 线条样式和填充样式都有哪些?该怎样设置? 二、解答 在画图前,要先设置线条样式和填充样式,它们直接决定图形的显⽰效果。 1.线条样式 (1) setlinestyle( ) 函数。 void far setlinestyle(int linestyle, unsigned upa…

5G消息 x 文旅 | 一站式智慧文旅解决方案

5G消息 x 文旅 | 一站式智慧文旅解决方案 文旅 x 5G 消息将进一步强化资源整合,满足游客服务需求、企业营销需求、政府管理需求,推进文化旅游项目的智慧化、数字化,增强传播力、竞争力和可持续性。5G 消息的“原生入口”、“超强呈现”、“智…

德克萨斯大学奥斯汀分校自然语言处理硕士课程汉化版(第十周) - 自然语言处理应用

自然语言处理应用 1. 问答系统 1.1. 信息检索1.2. 机器阅读理解1.3. 多跳问答 2. 对话系统3. 机器翻译4. 文本摘要 1. 问答系统 在自然语言处理领域,问答系统(Question Answering,QA)是一个广泛且重要的研究方向,其目的是让计算机根据给定的…

Unity3D TextMeshPro组件使用及优化详解

在Unity3D游戏开发中,文本渲染是一个不可或缺的部分。而TextMeshPro作为Unity的一个插件,提供了更高质量、更灵活的文本渲染功能,为开发者带来了极大的便利。本文将详细介绍TextMeshPro组件的使用技巧以及优化方法,并通过代码实例…

红队攻防渗透技术实战流程:组件安全:JacksonFastJsonXStream

红队攻防渗透实战 1. 组件安全1.1 J2EE-组件Jackson-本地demo&CVE1.1.1 代码执行 (CVE-2020-8840)1.1.2 代码执行(CVE-2020-35728)1.2 J2EE-组件FastJson-本地demo&CVE1.2.1 FastJson <= 1.2.241.2.2 FastJson <= 1.2.471.2.3 FastJson <= 1.2.801.3 J2EE-组…

帕金森病的食疗建议

帕金森病&#xff08;PD&#xff09;是一种慢性、进展性的神经退行性疾病&#xff0c;主要影响中老年人。虽然目前尚无法根治&#xff0c;但及早规范治疗可显著改善症状&#xff0c;提高患者的生活质量。饮食调理作为帕金森病综合治疗的重要组成部分&#xff0c;对于维持患者较…

jQuery中.text() 和 .val()辨析

在jQuery中&#xff0c;.text() 和 .val() 是两个用于操作DOM元素内容的常用方法&#xff0c;但它们有不同的用途和适用的元素类型。 .text() .text() 方法用于获取或设置匹配元素的文本内容。适用于以下元素&#xff1a; 普通HTML元素&#xff08;如<div>&#xff0c…

接口测试详解

接口测试详解 本文主要讲软件接口 一、什么是接口&#xff1f;硬件接口&#xff1a;硬件接口指的是硬件提供给外界的一种实体。主要作用是内部数据分离出外 部的沟通方法 目的是&#xff1a;沟通外部来改变内部的数据。如&#xff1a;USB接口&#xff0c;投影仪接口 软件接口…

速盾:linux防止ddos攻击

Linux作为一种开源操作系统&#xff0c;被广泛应用于服务器和网络设备中。然而&#xff0c;正因为其广泛使用&#xff0c;Linux服务器经常成为黑客和攻击者的目标。DDoS&#xff08;分布式拒绝服务&#xff09;攻击是一种常见的攻击方式&#xff0c;旨在通过大量恶意流量淹没目…

【CDN】逆天 CDN !BootCDN 向 JS 文件中植入恶意代码

今天在调试代码&#xff0c;突然控制台出现了非常多报错。 这非常可疑&#xff0c;报错指向的域名也证实了这一点。 因为我的 HTML 中只有一个外部开源库&#xff08;qrcode.min.js&#xff09;&#xff0c;因此只有可能是它出现了问题。 我翻看了请求记录&#xff0c;发现这…

Java -jar 运行 报 MalformedInputException: Input length = 1

Intellij IDEA 中运行正常&#xff0c;linux 运行正常&#xff0c; cmd 下运行 报&#xff1a;MalformedInputException: Input length 1 微服务项目&#xff0c;在Nacos中做了配置&#xff0c;在引用 Nacos中配置时&#xff0c;编码问题&#xff0c;导致的错误 org.yaml.sna…

【无线感知】【P3】无线感知手势识别-Ubicomp2022论文分享

前言&#xff1a; 本篇主要关于手势识别的方向的,主要参考 北京大学-《无线感知手势识别-Ubicomp2022论文分享》 目录&#xff1a; 技术背景 主要问题&#xff08;异质性问题&#xff09; 感知模型 EDP DPSense 实现效果 一 技术背景 基于WIFI的手势识别在智能家具,以…