【TF-M】Trusted Firmware-M TF-M固件学习【二】TF-M软件架构

TF-M 软件框架

TF-M是基于PSA架构开发的安全固件,本文基于v1.5v版本。下图是官方的图,详细的TF-M功能。
在这里插入图片描述
简要的框图如下:
在这里插入图片描述
其核心就是PSA架构,SPM管理分区线程、IPC等机制。分区通过分区线程的形式运行,并提供一种或多种服务。NSPE运行着RTOS,在RTOS上运行着task,task需要用到安全相关服务时,可以调用PSA client APIs请求安全服务,通过IPC机制由SPM通知并调度对应分区线程运行,执行此次的服务请求。然后返回结果给client。

partition

在上面的框图里,crypto、Initial Attestation、Internal Trusted Storage、Protected Storage等就是TF-M里实现的partition。其给client提供具体的RoT服务。比如crypto partition提供hash、加解密、生成随机数等服务。
每个partition都以thread为载体进行管理与调度,SPM管理和调度其thread,保存和切换其上下文。

/* Partition runtime type */
struct partition_t {
    const struct partition_load_info_t *p_ldinf;		/*通过配置文件加载的partition信息*/
    void                               *p_boundaries;
    void                               *p_interrupts;
    void                               *p_metadata;
    union {
        struct thread_t                thrd;            /* IPC model */
        uint32_t                       state;           /* SFN model */
    };
    struct sync_obj_t                  waitobj;
    struct context_ctrl_t              ctx_ctrl;		/*上下文管理*/
    union {
        struct bi_list_node_t          msg_list;        /* IPC model */
        struct tfm_msg_body_t          *p_msg;          /* SFN model */
    };
    uint32_t                           signals_allowed;		
    uint32_t                           signals_waiting;		/*等待的信号*/
    uint32_t                           signals_asserted;	/*已发送的信号*/
    struct partition_t                 *next;
};

Secure Service

安全服务(Secure services,又名Service)是SPE中提供安全功能的组件,而Client是服务的用户。当服务访问它所依赖的服务时,它就扮演了客户端的角色。服务被分组到安全分区中。
每个安全分区提供一个或多个安全服务。是具体的安全功能,比如crypto分区里的各种安全服务。在TF-M里,crypto分区只提供一个服务,而具体的服务是通过psa_call调用crypto服务传入的sfn_id决定的。
client调用PSA接口请求的服务就是RoT Service提供的。

每个服务公开其服务ID (SID)和客户端访问使用的句柄Handle。客户端通过SID或Handle通过PSA客户端API访问服务。当需要操作客户端数据或响应客户端时,分区使用PSA Secure Partition API。

/* RoT Service data */
struct service_t {
    const struct service_load_info_t *p_ldinf;     /* Service load info      */
    struct partition_t *partition;                 /* Owner of the service   */
    struct bi_list_node_t handle_list;             /* Service handle list    */
    struct service_t *next;                        /* For list operation     */
};

Secure Partition Manager(SPM)

SPM是对安全分区的管理,其提供IPC通信机制使partition能与client通信。其管理分区线程的调度,保存线程上下文,按优先级排序调度等。其还实现 PSA client API和PSA partition API。后面写文章详细介绍。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值