optee RPC

RPC (Remote Procedure Call) are requests from secure world to kernel driver or tee-supplicant. An RPC is identified by a special range of SMCCC return values from OPTEE_SMC_CALL_WITH_ARG. RPC messages which are intended for the kernel are handled by the kernel driver. Other RPC messages will be forwarded to tee-supplicant without further involvement of the driver, except switching shared memory buffer representation.
https://www.kernel.org/doc/html/next/tee/op-tee.html

RPC 是从 secure world 向 内核驱动程序 或 tee-supplicant 发出的请求。RPC由来自OPTEE_SMC_CALL_WITH_ARG 的一组特殊的SMCCC返回值来标识。用于内核的RPC消息由内核驱动程序处理。除了切换共享内存缓冲区表示外,其他RPC消息将被转发到tee-supplicant,而无需驱动程序进一步参与。


https://blog.csdn.net/shuaifengyun/article/details/73061002

驱动获取来自TEE侧的请求

当libteec调用了需要做smc操作的请求之后,最终会调用到驱动的optee_do_call_with_arg函数,该函数会进入到死循环,第一条语句就会调用smc操作,进userspace的请求发送到secure world,待从secure world中返回之后。会对返回值进行判定。如果返回的res.a0参数是需要驱动做RPC操作,则该函数会调用到optee_handle_rpc操作。经过各种参数分析和函数调用之后,程序最后调用 optee_supp_thrd_req 函数来将来自TEE的请求放到tee_supplicant 的请求队列中。

tee_supplicant从驱动中获取TEE侧的请求

tee_supplicant进程,在 process_one_request 函数阻塞等待TEE的请求并处理。在tee_supplicant会调用read_request函数来从驱动的请求队列中获取当前存在的来自TEE的请求。该函数最终会调用到驱动中的 optee_supp_recv 函数,进入到loop循环中,从驱动的请求消息队列中获取来自TEE中的请求,直到获取之后才会跳出该loop。

驱动返回请求操作的结果给TEE侧

当tee_supplicant执行完TEE请求的操作之后,会调用write_response函数来实现将数据返回给TEE。而write_response函数最终会调用到驱动的optee_supp_send函数。该函数主要是调用complete(&req->c);操作来完成对该请求的c成员的置位,告诉optee_supp_thrd_req函数执行下一步操作,返回到optee_do_call_with_arg函数中进入该函数中的下一轮loop中,调用smc操作将结果返回给TEE侧。optee_supp_send 函数的内容如下:

//todo

相关推荐
零陵上将军_xdr1 天前
API 签名防重放机制:基于 HMAC-SHA256 的设计与实现
java·学习·安全架构
Whoami!1 天前
04-【政务】某市政务云安全架构
安全架构·政务·拓扑图
Bruce_Liuxiaowei2 天前
当Windows成为Agent的监狱-操作系统级Agent安全架构深度解读
人工智能·windows·安全·安全架构·智能体
Whoami!4 天前
02-【高校】校园网等保三级架构
网络安全·安全架构·拓扑
X7x56 天前
安全信息和事件管理(SIEM):企业安全运营的技术基石
网络安全·网络攻击模型·安全威胁分析·安全架构·siem
wb043072017 天前
食安大检查——从阿明餐厅的突击检查,看安全架构的六大防线
安全·安全架构
信息安全失业大专人员8 天前
零信任时代,802.1X 准入架构是否已成“明日黄花”?
安全·信息安全·安全架构·企业信息安全
X7x58 天前
安全编排自动化与响应(SOAR):重塑企业安全运营的新引擎
网络安全·网络攻击模型·安全威胁分析·安全架构·soar
Chengbei118 天前
一站式源码安全检测工具、云安全 / APP / 小程序源码敏感信息递归多层目录扫描AK、JWT、手机号、身份证等敏感信息
java·开发语言·安全·web安全·网络安全·系统安全·安全架构