OP-TEE:Secure world OS(optee_os)、normal world client(optee_client)、test suite(optee_test/xtest)以及linux驱动

optee_os: https://github.com/OP-TEE/optee_os

optee_client: https://github.com/OP-TEE/optee_client    主要生成libteec.so, 是包含用于与可信操作系统通信的API的库

optee_test:https://github.com/OP-TEE/optee_test

可参考书籍《手机安全和可信应用开发指南:TrustZone与OP-TEE技术详解 》

CA(Client Application,运行在normal world)和TA(Trust Application,运行在secure world)

TA又分为用户TA(user ta)和静态TA(static ta),静态TA是和optee build在一起的

CA主要通过TEEC_UUID来调用TA

Java层调用库包:System.loadLibrary("ca"); 引用native层函数

调用jni函数

libca.so

Jni层:调用CA程序

加载头文件,引用CA的C函数

extern "C" 
{
    #include "ca.h"
}

CA层:通过TEEC_OpenSession调用libteec.so,其中TEEC_UUID的对应具体要通信的TA

TEEC_InvokeCommand  通过cmd_id调用TA对应函数

user TA层:TEEC_UUID.ta (换成具体对应的uuid.ta)   TA端程序

TA_OpenSessionEntryPoint  响应CA端TEEC_OpenSession

TA_InvokeCommandEntryPoint  对应函数cmd_id   响应CA端TEEC_InvokeCommand

可以通过TEEC_UUID调用具体的STA程序

TEE_OpenTASession

TEE_InvokeTACommand

STA层(static TA):

utee_open_ta_session  响应user TA端TEE_OpenTASession

utee_invoke_ta_command   对应函数commandID  响应user TA端TEE_InvokeTACommand

由于CA端与TA端是隔离的,如果需要交换数据的话,要使用:TEEC_MEMREF_TEMP_INOUT/TEEC_MEMREF_PARTIAL_INOUT  这两种内存映射,一个是临时一个是部分的

TEEC_MEMREF_TEMP_INOUT:临时内存引用指向的是共享内存缓冲区,而不是共享内存控制结构

TEEC_MEMREF_PARTIAL_INOUT :部分内存引用,指向父共享内存块的子区域,允许模块中任 意字节域共享给可信应用,需要通过TEEC_AllocateSharedMemory申请

CA如果还需要跟STA(static TA)交换数据的话,需要在user TA中重新申请内存,缓存上述所说的内存映射或者内存缓冲区,由user TA端与STA端交换数据,并把交换后的数据拷贝到相应的内存映射或者内存缓冲区,返回到CA端。

OPTEE CA和TA通信 实现从java到ca相关推荐

  1. optee中User TA的加载和运行

    文章目录 1.optee中的TA简介 2.TA的调用 2.tee_entry_std :std smc的调用 3.open_session 思考: User TA是怎样编译的? User TA是怎样签 ...

  2. 一文看懂REE OS、TEE OS、CA以及TA概念、架构、流程

    目录 一.概念 二.使能方式 三.TEE软件框架 四.TEE软件流程 一.概念 REE(Rich Execution Environment):比如Android系统,是一个开放的环境,容易收到恶意软 ...

  3. optee中User TA的加载/验签和运行

    文章目录 1.TA的加载到TEE内存 思考:- User TA是怎样编译的?- User TA是怎样签名的?- User TA是怎样被load到内存的?- 怎样验证TA签名的?- 如何解析TA hea ...

  4. 【CA-TA实战系列六】CA与TA背后的故事一:TEE OS

    一.前言 TEE OS就是可信环境的操作系统,这里我们的参考资料是前辈的<手机安全和可信应用开发指南>,因此这里我们的TEE OS就是OP TEE. 那么为什么在搞TA CA的设计实现要关 ...

  5. OPTEE之静态TA的创建与调用

    先简单介绍下optee:TEE是智能手机主处理器中的一块安全区域,保证代码和数据的机密性和完整性:TEE中的数据不会被REE中的程序非法访问:TEE中的 可信应用(TA)在隔离的环境中运行,其 安全性 ...

  6. TLS就是SSL的升级版+网络安全——一图看懂HTTPS建立过程——本质上就是引入第三方监管,web服务器需要先生成公钥和私钥,去CA申请,https通信时候浏览器会去CA校验CA证书的有效性...

    起初是因为HTTP在传输数据时使用的是明文(虽然说POST提交的数据时放在报体里看不到的,但是还是可以通过抓包工具窃取到)是不安全的,为了解决这一隐患网景公司推出了SSL安全套接字协议层,SSL是基于 ...

  7. 加密通信(三):CA证书

    一 出现背景 加密通信(二):加密通信模型 所述的加密通信中还有两个问题: 如何确认公钥的安全性(确保你拿到的接收者的公钥是真正的接收者的.没有被篡改的).如果每次通信开始时接收者将公钥发送给发送者, ...

  8. Java 解析CA证书 对数据进行签名和验签

    Java 解析CA证书 对数据进行签名和验签 话不多说直接上代码(pfx证书) pom依赖 <dependency><groupId>org.apache.commons< ...

  9. 架构设计:系统间通信(4)——IO通信模型和JAVA实践 中篇

    接上篇<架构设计:系统间通信(3)--IO通信模型和JAVA实践 上篇> 4.多路复用IO模型 在"上篇"文章中,我们已经提到了使用多线程解决高并发场景的问题所在,这篇 ...

  10. 架构设计:系统间通信(5)——IO通信模型和JAVA实践 下篇

    接上篇:<架构设计:系统间通信(4)--IO通信模型和JAVA实践 中篇>,我们继续讲解 异步IO 7.异步IO 上面两篇文章中,我们分别讲解了阻塞式同步IO.非阻塞式同步IO.多路复用I ...

最新文章

  1. Python 动态生成多维数组
  2. YARP+AgileConfig 5分钟实现一个支持配置热更新的代理网关
  3. iOS开发之TableView去掉单个cell的间隔线和去掉全部间隔线和去掉tableView多余的间隔线
  4. chrome安装silverlight之后不识别
  5. MATLAB简单解决输出某个数(组)内自然数的阶乘和问题
  6. cpu和接口之间数据传送控制方式
  7. 怎么获取计算机的最高权限,获取win8 64位旗舰版系统最高权限的方法【图文详解】...
  8. ctf工具整理-持续更新
  9. 3D设计软件中怎么快速建模?浩辰3D快速建模教程
  10. OSG KML文件解析
  11. 多平台epub阅读器分享
  12. Odoo客户成功案例访谈:机加工厂企业信息化的心路历程探讨
  13. 517编程3380造素数
  14. 计算机专业java餐厅点餐系统,Java实现餐厅点餐系统的实例代码.pdf
  15. log4j在线视频教程【讲的很详细,不了解的情况下,听一遍就都了解】
  16. “神似充气娃娃”的人形机器人,made in China
  17. adm浏览器识别为linux,QQ浏览器Linux版qqbrowserlinux_1.0.0-1_amd64.deb能正常使用
  18. LoRa和NB-IoT的对比,LoRa感觉毫无胜算可言
  19. java栈实现--顺序栈
  20. 惠普superdome2 小机故障灯清除方式

热门文章

  1. 解决ubuntu12.04 virtubox xp 有道词典发音问题
  2. 用最简单的方法解决:linux系统重启网络delaying initialization错误
  3. 怎么用计算机名称共享打印机设置,如何共享打印机设置教程
  4. 公众号获取token失败_如何利用公众号获取电影引流?如何利用电影网站嫁接公众号?...
  5. token验证失败 java_“Token校验失败,请检查确认”解决方法
  6. android 气泡尖角边框,CSS3制作的带阴影效果的尖角气泡框效果
  7. 升级bigsur_苹果,Big Sur,新拟物化的兴起
  8. 共享远程计算机文件夹,怎么远程访问共享文件夹
  9. 手把手教你使用SPSS做出亚组分析的交互作用效应(p for Interaction)
  10. win10 远程桌面卡顿_主编教你win10系统使用远程桌面卡顿的步骤