历经一年多时间的系统整理合补充,《手机安全和可信应用开发指南:TrustZone与OP-TEE技术详解 》一书得以出版,书中详细介绍了TEE以及系统安全中的所有内容,全书按照从硬件到软件,从用户空间到内核空间的顺序对TEE技术详细阐述,读者可从用户空间到TEE内核一步一步了解系统安全的所有内容,同时书中也提供了相关的示例代码,读者可根据自身实际需求开发TA。

为方便和及时的回复读者对书中或者TEE相关的问题的疑惑(每天必看一次),也为了大家能有一个统一的交流平台。我搭建了一个简单的论坛,网址如下:

https://www.huangtengxq.com/discuz/forum.php

关于您的疑问可在“相关技术讨论“”中发帖,我会逐一回复。也欢迎大家发帖,一起讨论TEE相关的一些有意思的feature。共同交流。同时该论坛中也会添加关于移动端虚拟化的相关技术的板块,欢迎各位共同交流学习

非常感谢在此期间大家的支持以及各位友人的支持和帮助!!!。

若觉得书中内容有错误的地方,欢迎大家指出,私信或者在博文中留言联系方式亦可发邮件至:shuaifengyun@126.com,多谢各位了!!!!我会第一时间处理

  

OP-TEE根据GP标准支持当前主流的基本算法,包括RAS/AES/HMAC/SHA/RANDOM等,本文将介绍在OP-TEE中添加一个TA和CA来调用上述算法的GP接口实现对数据的加密,解密,签名,验签,计算hash值等操作。

  在xtest中也有上述算法的接口调用用例,但是查看下来比较零散,并不符合使用者直接调用。例如在xtest中,如果要对数据进行AES的加密操作,在xtest中可能需要在TA和CA之间多次传递数据来完成。而正常的用户希望能达到的效果是只要在CA中带需要被处理的数据调用接口就能够对数据的完成AES操作。代码中的TA实现了在TEE侧完整调用GP接口实现上述算法。代码可以从如下链接中下载,

basicAlog_use源代码

本文中的示例代码已经上传到gitHub,可使用如下命令从gitHub中获取示例代码:

git clone https://github.com/shuaifengyun/basicAlg_use.git

  上述代码在OP-TEE+qemu的环境下测试通过,但是AES的cts模式解密和解密有点问题,计算的结果跟openssl的AES cts模式的结果不大一样,貌似是OP-TEE的AES的cts算法的软件实现有问题,这个不大确定,有高手找到root cause还望不吝赐教。下面将介绍如何将上述TA和CA添加OP-TEE中并允许。首先可以参考《2. OP-TEE中添加自己的TA和CA》一文熟悉如何在OP-TEE中添加TA和CA。

Note:   由于OP-TEE代码更新,在上述git链接中已经添加了两个patch,读者可以直接应用包中的patch后就可以将链接中的

示例集成到最新的op-tee中并运行。

1. 测试编译下载的代码

  下载上述代码后,将代码放在OP-TEE的根目录下,进入到basicAlg_use目录然后运行build_ta_cryverify_qemu.sh脚本来测试代码是否能够编译通过(需要OP-TEE已经编译通过)。

2. 将basicAlg的TA和CA集成到系统中

  如果运行build_ta_cryverify_qemu.sh脚本测试编译通过之后。可以将basicAlg_use这个TA和CA添加到系统中去,代码在qemu+OP-TEE的方式运行是通过的。

2.1 修改Makefile文件

  修改build目录中的Makefile或者qemu.mk,我将build目录下的Make链接成了qemu.mk,在Makefile中添加编译basicAlg_use的target,内容如下:

2.2 修改comm.mk文件

  修改build目录下的common.mk文件,添加basicAlg_use所在目录变量:BASIC_ALG_USE_PATH

添加编译basicAlg的相关配置变量,添加的内容如下图所示

在filelist-tee-common的target中添加对basicAlg_use的依赖

在filelist-tee-common的target中添加basicAlg的相关操作,主要是在编译的时候将basicAlg_use的TA image和CA binary添加到REE中的文件系统中。添加的内容如下图中的红框中部分:

3. 其他

  在basicAlg_use目录中可以修改CA binary的名字,记得修改之后也需要同步修改comm.mk文件中的file-tee-common中的部分。同样也可以根据实际情况修改TA image的UUID,同时修改之后也需要同步修改comm.mk文件中的file-tee-common中的部分。关于如何修改UUID,怎么将自己的代码作为TA程序来运行的方法可参考《2. OP-TEE中添加自己的TA和CA》。

4. 整体编译工程进行测试

  修改完毕之后,进入到build目录中运行make -f qemu.mk all编译整个工程。关于如何使用basicAlg_use的CA binary,请参与basicAlg_use目录中的README.md一文。

  编译完成之后在build目录下执行make -f qemu.mk run-only开始启动QEMU+OP-TEE的环境,启动完成之后在启动的linux shell端直接安全REAMME.md文中运行指令就可以调用TA来执行相关的算法。

35. OP-TEE中基本算法接口调用实现相关推荐

  1. java调用jni接口,Java 中通过jni接口调用native code

    [    Java语言本身是通过Java的虚拟机解释执行的,因此对于Java中调用本地动态链接库的问题便提上了日程,为何会存在这样的需求呢?因为Java本身的机制导致一些要求高效率 在上上篇中已经介绍 ...

  2. 多态在android中(利用接口调用服务中方法)的应用

    首先我们已经了解了java中多态的基本概念 1方法重载. 2向上转型,向下转型 今天我们主要讲向上转型在android中的应用范例. 在java中向上向下转型的图解: 重点:子类对象向上转型为父类对象 ...

  3. 将打包好的VUE文件部署到Web容器(Nginx)中,解决接口调用跨域问题

    目录 背景 下载并解压Nginx 部署dist到Nginx中 启动Nginx 背景 VUE项目开发(如何搭建VUE开发环境请参见:如何搭建VUE开发环境_chanbzou1981的博客-CSDN博客) ...

  4. 系统接口调用超时 处理 wait millis 60009, active 50 ,maxactive 200 异常 过程

    服务器中的系统接口调用超时,去服务器中查看log文件 发现是 druid连接池 wait millis 60009, active 50 ,maxactive 200 异常 过程 数据连接池满了没有释 ...

  5. Android+Java中使用RSA加密实现接口调用时的校验功能

    场景 RSA加密 RSA算法是一种非对称加密算法,那么何为非对称加密算法呢? 一般我们理解上的加密是这样子进行的:原文经过了一把钥匙(密钥)加密后变成了密文,然后将密文传递给接收方,接收方再用这把钥匙 ...

  6. php调用接口搜索的网页源代码,PHP用户管理中常用接口调用实例及解析(含源码)...

    掌握用户的第一步就是将已经关注的粉丝信息保存起来,这个时候就用到获取用户列表接口.公众号可通过本接口来获取帐号的关注者列表,关注者列表由一串OpenID(加密后的微信号,每个用户对每个公众号的Open ...

  7. 引入dubbo项目接口_dubbo接口调用过程中,部分字段值丢失

    在工作中,遇到了调用远程dubbo接口,字段值丢失的情况.排查后,发现调用前后的代码无误,主要原因是在接口调用时使用hessian序列化,出现了子类与父类重复字段,导致字段值丢失. 解决办法:将父类重 ...

  8. php pkcs7签名验签算法,OpenSSL 签名验签接口调用及测试

    OpenSSL 签名验签接口调用及测试 概述 项目中我们经常会遇到开发签名.验签功能.签名.验签是可信赖网络的一个重要功能.因此,我记录了OpenSSL 签名验签接口调用及测试. 相关测试代码 bas ...

  9. 在接口调用的过程中 什么是接口? 什么是回调? 什么是回调参数? 什么是回调url?

    对于没怎么用过接口这个词的人来说,当突然听到有人跟你说某个接口怎么用的时候,并且让你具体去使用,你可能会觉得对方自己说得似乎挺明白但你却根本不知道具体这个"接口"该怎么用,有时候甚 ...

最新文章

  1. 使用Keil语言的嵌入式C编程教程(上)
  2. linux .lz进程,LLinux常用命令(二)
  3. 工程和模块的关系以及继承和依赖的概念
  4. Photoshop常用快捷键
  5. C/C++如何快速区分指针数组|数组指针|函数指针|指针函数
  6. Elasticell-聊聊Raft的优化
  7. 设计模式面对面之单例模式
  8. 期货市场对农业的影响
  9. php邮箱接收代码,PHP使用POP3读取邮箱接收邮件
  10. 古代的时辰是怎样划分的
  11. vivado2020报错:error when launching …vivao.bat…launcher time out“
  12. android 自定义属性
  13. 加密聊天应用依然安全
  14. 互联网快讯:永辉拟打造数字化零售;猿辅导,掌门教育积极布局素质教育
  15. bzoj 3238 差异
  16. java8之日期、时间
  17. Win7安装VisualC++6.0全程图解
  18. 提升工作效率的常用mac命令行
  19. app ui设计规范
  20. c语言程序设计素材,C语言设计素材.doc

热门文章

  1. java线上医药用品分销系统设计与实现计算机毕业设计MyBatis+系统+LW文档+源码+调试部署
  2. 南京邮电大学CTF题目writeup (二) 含题目地址
  3. MATLAB将图片做成视频
  4. 转:没有效率的增长,是在加速自杀
  5. AW378 骑士放置
  6. 法兰克机器人循环编程_FANUC机器人程序[1]
  7. 字节跳动春招攻略:学长学姐笔经面经,还有出题人「锦囊」
  8. aap渗透_Android App渗透测试工具汇总
  9. 第九届“大唐杯”简单回顾
  10. atoi(),atof(),atol();iato(),fato(),lato()---字符串和数字互相转换