欢迎光临
我们一直在努力

在 Secure World 里跑算法:利用 ARM TrustZone 保护人脸识别隐私的深度实践

引言:为什么需要 TrustZone 保护人脸识别?

人脸识别(Face Recognition)技术已广泛应用于手机解锁、支付认证等场景。然而,用户的人脸模板数据是高度敏感的生物特征信息。如果这些模板存储在普通的操作系统(Normal World, NW),一旦系统被Root或遭受恶意软件攻击,模板可能被窃取,造成不可逆的隐私泄露。

ARM TrustZone 技术提供了一个硬件隔离的执行环境,即安全世界(Secure World, SW)或可信执行环境(TEE)。它将设备资源(如内存、外设)严格划分为安全和非安全两部分,使得敏感数据和核心算法可以在隔离的环境中运行,有效抵御来自非安全侧的攻击。

本文将聚焦于如何利用 TrustZone 架构,将人脸识别的“比对”核心算法和存储的“主模板”置于 Secure World 中,确保比对过程的安全性和模板的不可访问性。

核心概念:TA 与 CA 的协作

在基于 TEE 的实现中,我们主要涉及两个角色:

  1. CA (Client Application): 运行在 Normal World (例如 Android/Linux) 的客户端应用,负责图像采集、预处理、特征提取(生成实时模板)。
  2. TA (Trusted Application): 运行在 Secure World 的可信应用,负责存储主模板,并执行安全敏感的比对操作。

CA 和 TA 之间的通信通过 TEE 驱动程序和共享内存机制实现,确保数据传输的控制权始终在 TEE 内核手上。

实践步骤:实现安全比对功能

我们的目标是:NW 仅发送实时的、刚生成的特征模板;SW 内部存储安全的主模板,并执行比对,最后只返回布尔结果(成功或失败)。

步骤一:定义 TA 的接口命令

在 TEE 中,CA 通过命令 ID 来调用 TA 中的特定功能。我们定义一个用于人脸比对的命令。

// Trusted Application (TA) Header
#define TA_FR_UUID { 0x12345678, 0x90AB, 0xCDEF, { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08 } }

// Command IDs
#define TA_FR_CMD_ENROLL_TEMPLATE 0x01 // 存储模板
#define TA_FR_CMD_COMPARE_TEMPLATE 0x02 // 比对模板

步骤二:Secure World (TA) 逻辑实现

TA 的核心任务是接收来自 CA 的实时模板数据,加载存储在安全存储区(Secure Storage)中的主模板,执行比对算法,并返回结果。

注意: Secure Storage 确保即使 NW 被完全控制,也无法读取存储在其中的数据。

// Trusted Application (TA) Source Code (Simplified)
static TEE_Result compare_face_templates(void *live_template, size_t live_size) {
    // 1. 从 Secure Storage 加载预先存储的主模板
    // 假设 g_master_template 是从安全存储区加载的
    void *master_template = load_secure_storage("master_face_data");
    size_t master_size = get_master_size();

    if (!master_template) {
        return TEE_ERROR_ITEM_NOT_FOUND;
    }

    // 2. 执行人脸比对核心算法(此算法位于 Secure World 内部)
    // 核心算法函数,如 cosine similarity, L2 distance 等
    int match_score = secure_biometric_matcher(live_template, live_size, master_template, master_size);

    // 3. 设定阈值进行判断
    if (match_score >= THRESHOLD_PASS) {
        IMSG("Match successful!");
        return TEE_SUCCESS;
    } else {
        IMSG("Match failed.");
        return TEE_ERROR_ACCESS_DENIED; // 使用通用错误码表示比对失败
    }
}

// 主入口函数处理 CA 发来的命令
TEE_Result TA_InvokeCommandEntryPoint(void *sess_ctx, uint32_t cmd_id, uint32_t param_types, TEE_Param params[]) {
    switch (cmd_id) {
        case TA_FR_CMD_COMPARE_TEMPLATE:
            // 确保参数类型正确,通常使用 Shared Memory (MEMREF)
            void *live_template = params[0].memref.buffer;
            size_t live_size = params[0].memref.size;

            return compare_face_templates(live_template, live_size);
        // ... 其他命令 (如 Enrollment)
        default:
            return TEE_ERROR_BAD_PARAMETERS;
    }
}

步骤三:Normal World (CA) 客户端实现

CA 负责与 TEE 驱动通信,将实时模板安全地传递给 TA。

// Client Application (CA) Source Code (Pseudo-C/C++ using TEE Client APIs)
bool authenticate_user(void *live_template, size_t size) {
    // 1. 打开 TA Session
    TEEC_Context context;
    TEEC_Session session;
    TEEC_Operation operation;
    TEEC_Result res;

    res = TEEC_OpenSession(&context, &session, &TA_FR_UUID, ...);
    if (res != TEEC_SUCCESS) { /* Handle error */ return false; }

    // 2. 配置参数:使用共享内存传递实时模板
    // TEE Client API 会将 live_template 映射到 Secure World 可访问的共享内存区域
    operation.paramTypes = TEEC_PARAM_TYPES(TEEC_MEMREF_TEMP_INPUT, TEEC_NONE, TEEC_NONE, TEEC_NONE);
    operation.params[0].memref.buffer = live_template;
    operation.params[0].memref.size = size;

    // 3. 调用 TA 内部的 COMPARE 命令
    res = TEEC_InvokeCommand(&session, TA_FR_CMD_COMPARE_TEMPLATE, &operation, NULL);

    // 4. 判断结果
    TEEC_CloseSession(&session);

    if (res == TEE_SUCCESS) {
        printf("Authentication granted.\n");
        return true;
    } else {
        printf("Authentication failed or TEE error.\n");
        return false;
    }
}

总结

通过将人脸识别的主模板存储和比对算法封装在 ARM TrustZone 的 Secure World 中,我们实现了以下目标:

  1. 数据隔离: 主模板永不暴露给 Normal World。
  2. 代码完整性: 比对算法在受保护的环境中执行,无法被 NW 篡改。
  3. 结果最小化: NW 仅获得比对的成功或失败的布尔结果,无法通过分析比对过程获取敏感信息。

这种架构是目前移动设备上保护生物识别数据(如指纹、人脸)和密钥管理的核心安全实践。

【本站文章皆为原创,未经允许不得转载】:汤不热吧 » 在 Secure World 里跑算法:利用 ARM TrustZone 保护人脸识别隐私的深度实践
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址