2. OP-TEE中添加自己的TA和CA

   

关于该,有热心的网友专门制作了一个视频,大家可以参考如下链接:

添加TA/CA的极简套路_哔哩哔哩_bilibili

多谢@阿棍儿提供这么好直观的视屏,非常感谢

OP-TEE中添加自己的TA和CA

  本章将讲述如何在想OP-TEE中添加自有的TA和CA程序,并使其运行起来。在 搭建完成qemu+OP-TEE的环境之后,开始着手添加自有的TA和CA程序。本文使用的代码可以以下链接中下载

my_test

1.源代码及相关目录准备

  第一步,为方便操作,首先复制hello_world目录为my_test

  第二步,修改my_test/ta目录中的Makefie并添加自有的TA部分的代码,我修改之后的目录文件如下

上述目录文件说明如下:

Makefile文件:编译TA时使用的makefile文件

my_test.c文件:主要是存放TA部分代码的入口处理函数,CA的commond请求最终会被TA_InvokeCommandEntryPoint函数处理。

my_test_handle.c文件:存放具体响应CA的commond请求的功能函数

sub.mk文件:定义该TA中需要被编译的source code。

user_ta_header_defines.h文件:定义UUID等相关宏

include/my_test_handle.h文件:定义了该TA需要使用到的类型

include/my_test_ta.h文件:定义了UUID的宏以及与CA对应的commond ID宏

2.修改TA目录中的代码和makefile

1.修改sub.mk文件,将该TA中所有的.c文件添加到编译文件总,修改完成之后如下图所示:

2.定义UUID值和commond ID的值

  编译include/my_test_ta.h文件,定义该TA程序的UUID宏为TA_MY_TEST_UUID,并定义commond ID的宏(宏的值必须保持与CA部分的commond ID一致),UUID的值可以自己填写也可以从一下网址中生成:http://www.itu.int/en/ITU-T/asn1/Pages/UUID/uuids.aspx

3.修改user_ta_header_defines.h文件

  将my_test_ta.h文件include到该文件中以便获取UUID的定义

4.修改Makefile文件

  修改Makefile文件,将变量BINARY的值修改成新增TA的UUID值

CFG_TEE_TA_LOG_LEVEL ?= 4
CPPFLAGS += -DCFG_TEE_TA_LOG_LEVEL=$(CFG_TEE_TA_LOG_LEVEL)

# The UUID for the Trusted Application
BINARY=9269fadd-99d5-4afb-a1dc-ee3e9c61b04c

include $(TA_DEV_KIT_DIR)/mk/ta_dev_kit.mk

5.添加该TA需要处理的逻辑代码

  添加TA的具体实现代码,也即是该TA需要实现什么功能,在本例子中将该部分的代码存放在my_test_handle.c文件中,本工程的所有TA和CA的代码将最文章source code章节中给出,亦可发邮箱跟我要:shuaifengyun@126.com。该TA的代码处理逻辑如下:

3.CA部分代码的修改和编写

1.CA部分的代码存放在my_test/host目录中,文件结构体如下:

main.c文件:该文件就是在linux中调用CA可执行文件的主函数存在的文件

my_test_ca.h文件:定义相关宏和申明接口,主要包括UUID,commondID值以及其他结构体

Makefile文件:编译CA可执行文件使用的makefile文件

2.修改Makefile,主要修改BINARY变量和OBJ变量,如果CA部分的代码不止一个.c文件,则需要将所有的.c文件编译生成的.o文件名称添加到OBJS变量中,而BINARY变量就是编译完成之后生成的Binary的名称。本例子修改后的结果如下:

4.尝试编译TA和CA代码

  在my_test目录下有一个build_ta_mytest_qemu.sh文件,执行该脚本就能直接单独编译TA和CA的代码,该脚本与helloworld目录中的build_ta_hello_world.sh一样。

  修改完my_test目录下的代码之后,在my_test目录下运行build_ta_mytest_qemu.sh脚本,如果有错误则按照提示进行修改。执行完成之后,在ta目录下就会生成对应的ta image文件

5.将TA image和CA binary集成到rootfs和全局的makefile中。

该步骤需要修改build/common.mk文件和build/quem.mk文件

1.修改build/common.mk文件

  将TAimage和CA binary集成到fs中需要修改file-tee-common目标的内容(该目标主要用来生成启动时的文件脚本)修改如下:

添加my_test的依赖目标:

定义my_test目标需要的路径变量:

2.修改build/qemu.mk文件,添加该TA模块的targe编译目标

6.将添加的TA和CA编译到整个工程中

  修改完成之后,在build目录下直接执行make all(执行该编译需要将Makefile链接成qemu.mk),或者执行make -f qemu.mk all

7.完成运行和测试添加的TA和CA

  在build目录下运行make run-only或者make -f qemu.mk run-only。然后按照上一章节启动qemu并运行linux和OP-TEE,在启动的Linux terminal端直接执行my_test的相关指令就行,最终结果如下:

8.Source Code

  由于没法上传附件,故,我将my_test的source code上传到了资源区,下载链接如下:

my_test

NOTE:上述链接中只包含了my_test目录中的所有已经修改好的代码,以及TA和CA的逻辑代码,而在build目录中各Makefile和其他文件的修改请按照第五章(将TA image和CA binary集成到rootfs和全局的makefile中)自行修改。

  • 10
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 57
    评论
### 回答1: ACIPHER代码在OP-TEE examples是一个对称加密算法的例子,它展示了如何使用OP-TEE来实现加密和解密数据。 ACIPHER实现了AES加密算法,并在TA(Trusted Application)运行,以保证加密数据的安全性。代码包含了加密和解密数据的函数,以及如何与OP-TEE安全模块进行通信的详细说明。通过阅读ACIPHER代码,您可以了解如何在OP-TEE环境实现对称加密算法,以及如何使用TA来保护敏感数据的安全。 ### 回答2: 在OP-TEE examples,acipher代码是指实现了在安全环境进行加密和解密操作的示例代码。 首先,acipher代码涉及到的主要功能是使用Open Portable TEEOP-TEE)提供的加密功能来保护敏感数据。它提供了一种安全的方式来执行加密和解密操作,以免被恶意软件或攻击者窃取或篡改。具体而言,acipher代码为应用程序提供了一种方式来调用OP-TEE的加密APIs,以进行对称密码和非对称密码的加密和解密操作。 其次,acipher代码包含了一些示例函数,这些函数展示了如何使用OP-TEE的加密功能。例如,可以使用acipher_init()函数来初始化加密库,acipher_aes_encrypt()函数来执行AES加密操作,acipher_rsa_encrypt()函数来执行RSA加密操作,acipher_aes_decrypt()函数来执行AES解密操作等等。这些函数使用OP-TEE提供的API,将敏感数据以安全的方式进行加密和解密。 最后,acipher代码还提供了示例数据和详细的代码注释,以帮助开发人员理解和使用加密功能。开发人员可以根据自己的需求自定义这些代码,以满足特定的加密需求。同时,acipher代码还提供了错误处理机制,以确保加密操作的安全性和稳定性。 总之,在OP-TEE examples,acipher代码所展示的是如何在安全环境使用OP-TEE提供的加密功能来保护敏感数据。通过理解和使用这些示例代码,开发人员可以更好地应用加密算法,提高数据的安全性和完整性。 ### 回答3: acipher是OP-TEE examples的一个代码示例,用于演示在安全环境执行加密操作的方法。在理解acipher代码之前,首先需要了解OP-TEE的基本概念。 OP-TEEOpen Portable Trusted Execution Environment)是一个开放的可移植的可信执行环境,它提供了一个安全的执行环境,可以独立于操作系统运行。acipher代码则是OP-TEE examples的一个示例,用于展示如何在OP-TEE环境使用加密算法。 acipher代码的主要功能是执行一些常见的加密操作,如对称加密、非对称加密、哈希等。它通过调用OP-TEE提供的安全接口函数,来完成这些加密操作。 在acipher代码,首先会初始化OP-TEE环境,并创建一个与之关联的会话。然后,根据用户的选择,选择执行不同的加密操作。例如,可以选择对一段明文进行对称加密,使用AES算法和密钥进行加密,并将密文存储在OP-TEE的安全缓冲区。还可以选择执行非对称加密,使用RSA算法进行公钥加密或私钥解密。 代码还提供了其他一些功能,如生成随机数、计算哈希值等。通过这些功能,acipher代码可以满足一些基本的加密需求。 总的来说,acipher代码主要是为了向开发者展示如何在OP-TEE环境使用加密算法。通过对代码的理解和学习,开发者可以了解到如何在安全环境执行加密操作,并将其应用到实际场景

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 57
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值