开发第一个可信的应用|学习笔记

简介: 快速学习开发第一个可信的应用。

开发者学堂课程【阿里云物联网安全:开发第一个可信的应用】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/570/detail/7773


开发第一个可信的应用

 

内容介绍:

一、课程回顾

二、SDK 包结构

三、CA TA 样例流程

四、CA XOR 源码

五、TA XOR 源码

六、添加 TA

七、运行 CA_XOR


一、课程回顾

TEE CAP 是纯软件实现的,可以在通用的平台中使用,无需系统底层软件的修改,因此 TEE CAP 是学习 TEE 安全应用开发的最方便工具。我们提供 top6平台的试用版 SDK 供大家下载,运行环境为 open Ubuntu 16.04,只可以运行单个 TA,CA 和 TA 的单次运行数限制在200条以内。

 

二、SDK包结构

从网站上下在 Link_TEE_CAP_SDK,解压后有四个文件夹。

1、apps

apps 包含两个 CA、TA 示例源码和编译脚本,xor 是简单的 CA/TA 交互示例源码,sst 是安全存储的示例

2、ntws

ntw 包含 TEE Client api 文件的 dee 以及 CA 运行所需要的动态库之一 libtee_client.so;tw 包含 TEE Internal api 的头文件、编译脚本 libtee internal 静态库和用来添加 TA 的 tee_srv_table.c,

3、tw

tw 目录用来将 TA 和 tee os 联合编译为 libtee.os 动态库。

4、out

Out 目录用于存放编译后生成的两个动态库,litee_client.so 和 litee_internal.so

 

三、CA TA 样例流程

1、创建 Context

TEE_lnitializeContext(&context,…)

2、创建 CA/TA 会话

TEEC_OpenSession(&context,$session,…)

3、CA 发送命令

TEEC_InvokeCommand(&session,CommandId,operation,…)

4、返回结果

Result=TEEC_InvokeCommand

5、关闭 CA/TA 会话

TEEC-CloseSession(&session)

6、清空 Context

TEEC_Finalize(&context)

 

四、CA XOR 源码

//初始化 Context

result = TEEC_ _lnitializeContext(NULL, &context);

//初始化 Session

result = TEEC_ OpenSession(&context, &session,

&_ g_ _uuid_ xor, TEEC_ LOGIN_ USER, NULL, NULL, NULL);

//1设置 Operation 输入参数

operation.paramTypes = TEEC_ PARAM_ TYPES(

TEEC_ VALUE_ INPUT, TEEC_ _VALUE_ INPUT,

TEEC_ VALUE_ OUTPUT, TEEC_ _NONE);operation.params[0].value.a = a;operation.params[1].value.a= b;operation.params[2].value.a = c;
//发送命令

result = TEEC__InvokeCommand(&session, CMD _XOR, &operation, NULL);

//获得结果
C = operation.params[2].value.a;

 

五、TA XOR 源码

//检查 operation 参数

if (TEE_ PARAM_ TYPES(

TEE PARAM_ TYPE_ VALUE INPUT,

TEE_ PARAM_ TYPE_ VALUE_ INPUT,

TEE_ PARAM_ TYPE_ VALUE_ OUTPUT,

TEE_ PARAM_ _TYPE_ NONE) != paramTypes){

return TEE_ ERROR_ BAD_ PARAMETERS;

}

if (CMD_ XOR != commandlD) {

return TEE_ ERROR_ BAD_ PARAMETERS;

}

//汁算 c=a^b

params[2].value.a = params[0].value.a л params[1].value.a;

TEE_ Print("xor result 0x%08xIn", params[2].value.a);

return TEE_ SUCCESS;


六、添加 TA

tee_ srv_ table.c

//添加 xor ta 头定义

/* TEE registered srv table */

tee_ srv_ head_ t* tee_ _srV_ table[TEE_ _MAX_ SRV_ _NUM]={

&xor_ srV_ head,

NULL,

};

tw/Makefile

//添加 ta 源文件

SRCS := ./src/tee_ srv_ table.c \

../apps/xor/tw/ta_ xor.c

编译 libtee_internal.so

运行 tw/build_ta.sh 生成 out/libtee_internal.so


七、运行 CA_XOR

编译运行 ca__xor

shell $ cd apps/xor/ntw

shell $ make

shell $ LD_ LIBRARY_ PATH= ../../out ./ca_ xor

运行日志

<TEE_ CLI> I Alibaba Cloud Link TEE-CAP

<TEE_ CLI> I Client API Version: 1.2.0

<TEE_ CLI> I Mode: trial

<TEE_ CLI> I Platform: GENERAL

<TEE_ SEC> I Alibaba Cloud Link TEE-CAP

<TEE SEC> I Internal API Version: 1.2.0_2019_2_2_17:10

<TEE_ SEC> I Mode: trial

<TEE_ SEC> I Platform: GENERAL

<TEE_ SRV> xor result 0x00000001

a= 0;b= 1; c= a^b: 1

注:

<TEE_CLI>为 CA,<TEE_SEC>为 TEE OS,<TEE_SRV>为 TA

相关文章
|
7月前
|
弹性计算 供应链 测试技术
计算巢实操合集:软件用户使用服务及供应商进阶管理(系列四)
弹性计算社区推出的面向开发者计算巢成长系列课程已经发布第四期了,本期将围绕软件用户使用服务实操以及供应商进阶管理实操,并且一步步教大家如何利用计算巢完成部署体验。
107670 1
|
安全 数据安全/隐私保护 物联网
带你读《自主管理身份:分布式数字身份和可验证凭证》——第3章 用示例场景演示SSI工作原理(1)
带你读《自主管理身份:分布式数字身份和可验证凭证》——第3章 用示例场景演示SSI工作原理(1)
带你读《自主管理身份:分布式数字身份和可验证凭证》——第3章 用示例场景演示SSI工作原理(1)
|
存储 安全 物联网
带你读《自主管理身份:分布式数字身份和可验证凭证》——第3章 用示例场景演示SSI工作原理(2)
带你读《自主管理身份:分布式数字身份和可验证凭证》——第3章 用示例场景演示SSI工作原理(2)
带你读《自主管理身份:分布式数字身份和可验证凭证》——第3章 用示例场景演示SSI工作原理(2)
|
Kubernetes 安全 Cloud Native
猿创征文|云原生|kubernetes学习之多账户管理--权限精细化分配放啊(两种方式-sa和用户)(一)
猿创征文|云原生|kubernetes学习之多账户管理--权限精细化分配放啊(两种方式-sa和用户)
168 0
猿创征文|云原生|kubernetes学习之多账户管理--权限精细化分配放啊(两种方式-sa和用户)(一)
|
Kubernetes Cloud Native 测试技术
猿创征文|云原生|kubernetes学习之多账户管理--权限精细化分配放啊(两种方式-sa和用户)(二)
猿创征文|云原生|kubernetes学习之多账户管理--权限精细化分配放啊(两种方式-sa和用户)
207 0
猿创征文|云原生|kubernetes学习之多账户管理--权限精细化分配放啊(两种方式-sa和用户)(二)
|
存储 安全 Ubuntu
开发第一个可信的应用|学习笔记
快速学习开发第一个可信的应用。
140 0
|
人工智能 区块链
阿里云区块链+多媒体AI:构建可信数字内容服务,为生态建立互信关系
阿里云多媒体AI基于区块链推出可信数字内容版权服务平台,为版权行业及内容平台客户提供一体化的版权内容保护解决方案。
18957 0