高通Linux安全指南(五)

配置安全启动项

高通TEE配置可以通过设备配置(devcfg)框架进行调整。
TrustZone通过XML文件提供配置选项,例如:trustzone_images/ssg/securemsm/trustzone/qsee/mink/oem/config//oem_config.xml。

XML配置文件会被编译到devcfg.mbn中。以下命令用于从TZ.XF.5.0编译devcfg镜像:

cd trustzone_images/build/ms
python3 build_all.py -b TZ.XF.5.0 CHIPSET=<chipset> devcfg
trustzone_images/build/ms/bin/<build_flavor>

有关编译和构建的详细说明,请参见《Qualcomm Linux Build Guide》 ➝《GitHub workflow (firmware and extras)

设备配置

属性描述
OEM_pil_secure_app_load_region_size配置以自定义TA(Trust Application)大小。
OEM_pil_subsys_load_region_start配置以自定义PIL(Primary Image Loader)加载起始地址,当默认内存映射有变化时使用。
OEM_pil_subsys_load_region_size配置以自定义PIL大小,当默认内存映射有变化时使用。
OEM_enable_app_fatal_err当特定TA崩溃时,可用此属性强制TZ系统发生致命错误。与OEM_crash_ta_name一起使用。
OEM_crash_ta_name用崩溃的TA名称替换条目,并且预期安全内核会在该TA上崩溃。
OEM_sec_wdog_bark_time更改设备的安全看门狗吠叫时间的默认配置。
OEM_sec_wdog_bite_time更改设备的安全看门狗咬合时间的默认配置。
OEM_tz_log_level设置TZ日志级别:
Fatal: 0
Error: 1
Debug: 2

基于RPMB的SFS防回滚保护

可以在位于 trustzone_images/ssg/securemsm/trustzone/qsee/mink/oem/config/common/cmnlib_oem_config.xml 的XML配置文件中启用或禁用基于RPMB的SFS防回滚保护。

SELinux配置

通过SSH连接到设备。
使用以下命令更改SELinux模式。

  1. 将设备切换到强制模式:

    setenforce 1
    
  2. 将设备切换到宽松模式:

    setenforce 0
    
  3. 检查设备当前的配置(强制模式或宽松模式):

    getenforce
    

启用安全启动

通过吹掉一组作为QFPROM一部分的硬件熔丝来启用安全启动。根证书的哈希值被吹入硬件熔丝,作为主要的信任根(RoT)。

启用SELinux

当SELinux启用时,所有系统对象,包括文件、目录、进程、套接字、驱动程序等,都被标记有安全上下文。

启用UEFI安全启动

你可以设置初始的UEFI安全启动配置,并将密钥和证书转换为UEFI可以理解的格式。

示例OpenSSL配置

示例显示了用于生成密钥和证书请求的配置文件。

安装或升级QCS5430 SoftSKU功能包

你可以使用Qualcomm®无线边缘服务(Qualcomm WES)许可证升级QCS5430软库存单位(SKU)功能包。

启用安全启动

通过吹掉属于QFPROM的一组硬件熔丝来启用安全启动。根证书的哈希值被吹入硬件熔丝,作为主要的信任根(RoT)。
请参阅工作流程以了解目标外准备和设备上的执行。
在这里插入图片描述

只有在吹掉QFPROM(一种eFuse)后才能保证安全启动。启用平台安全启动所需的eFuse配置包括:

  • 启用镜像认证和防回滚保护。
  • 禁用调试和JTAG访问。
  • 吹掉QFPROM区域的读写权限禁用熔丝。

启用安全启动,请按照以下步骤操作:

  1. 从高通获取唯一的OEM ID。
    在使用代码授权签名服务(CASS)或高通WES服务时需要该ID。或者,你可以使用0作为OEM ID的值。
  2. 生成并配置签名资产,如密钥和证书。
  3. 生成用于吹熔丝的签名ELF文件(sec.elf)。
  4. 签名固件镜像。
  5. 将sec.elf和签名的镜像刷写到设备。

非Linux基础的镜像使用Sectools v2和本地签名器进行签名。这个过程需要在进行签名的本地机器上存在签名证书和密钥。然而,这些密钥并不安全,在Sectools运行的机器上进行和完成签名过程中可能会暴露。

使用OpenSSL工具自生成的密钥和证书不与任何认证机构相关联。

启用安全启动的前提条件

  1. 设置Sectools v2的环境变量。有关更多信息,请参见工具文档。

    以下代码片段作为参考。根据使用的版本替换和.LE.X.x。例如,<QCM6490.LE.1.0>。

    注意:
    术语metabuild、meta和meta路径互换使用,用于指代来自高通ChipCode™门户的路径。 metabuild表示构建的完整Qualcomm ChipCode发布版本。

    • 对于Windows:

      set SECTOOLS=\<chipset>.LE.X.x\common\sectoolsv2\ext\windows\sectools.exe
      
    • 对于Linux:

      setenv SECTOOLS=/<chipset>.LE.X.x/common/sectoolsv2/ext/linux/sectools
      export SECTOOLS=/<chipset>.LE.X.x/common/sectoolsv2/ext/linux/sectools
      
  2. 安装Sectools v2,它位于meta的
    .LE.X.x/common/sectoolsv2/ext/ 目录中。

    • _security_profile.xml 文件位于meta的
      .LE.X.x/common/sectoolsv2 目录中。

    • 最低版本要求是1.17。

  3. 建议使用硬件安全模块(HSM)。但是,如果使用本地(不安全)签名器,请参阅<<SecTools V2:Secure Image User Guide>> 中的本地签名

  4. 所有密钥和证书生成命令均使用OpenSSL 1.1.1g(2020年4月21日)执行。安装OpenSSL是前提条件。

  5. 确保在未进行RPMB配置的设备上启用安全启动。参见检查RPMB配置状态。
    在吹入安全启动熔丝后,RPMB将自动使用生产密钥进行配置。

    QFPROM熔丝

    下表列出了可以吹入以启用安全启动的各种QFPROM熔丝值。

    生成本地(不安全)根密钥和证书

    版本3(v3和v3_attest)扩展用于定义证书格式并创建CA(证书颁发机构)。

    生成ECDSA根密钥和证书

    相比RSA签名算法,ECDSA提供更高的安全性和性能。因此,Sectools的默认配置支持ECDSA签名。

    生成RSA CA密钥对和证书

    RSA是一种加密算法,使用一对密钥加密和解密数据,以确保数据传输的安全性。

    生成RSA和ECDSA的SHA-384哈希

    SHA-384哈希在加密应用中非常重要,包括增强安全强度、创建数字签名、确保符合标准和未来防范。

    签名镜像

    镜像签名确保镜像的真实性、完整性和来源。

    生成签名的sec.elf镜像

    此信息仅提供示例命令。有关生成熔丝烧录器二进制文件的信息,请参见SecTools V2:Fuse Blower User Guide。

    刷写镜像

    刷写镜像涉及将整个镜像(包括分区、文件系统和数据)写入存储设备。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值