AN12812 Using Code-Signing Tool with Hardware Security Module
### 使用Code-Signing Tool与硬件安全模块进行代码签名 #### 概述 本文档旨在为用户有效地使用Code-Signing Tool (CST)与硬件安全模块 (HSM) 后端提供必要的信息。该文档主要面向熟悉CST工具、需要为NXP High Assurance Boot (HAB)签署代码的用户。文档适用于CST版本3.3.1及以上。 #### 目标受众与范围 本指南主要针对计划使用CST执行HAB代码签名的软件工程师、硬件工程师及系统工程师,这些工程师需要将密钥持久化存储在HSM中。 #### 参考资料 - CST User's Guide:可在[NXP官网](http://www.nxp.com)搜索"CST_TOOL"下载Code Signing Tool包。 - [Secure Boot on i.MX50, i.MX53, i.MX6 and i.MX7 Series using HAB (AN4581)](https://www.nxp.com/docs/en/application-note/AN4581.pdf)。 - i.MX Secure and Encrypted Boot using HAB v4:可在[U-Boot项目的imx_v2018.03_4.14.98_2.0.0_gaGA发布分支](https://gitlab.com/imxrt/u-boot/tree/imx_v2018.03_4.14.98_2.0.0_gaGA/doc/imx/habv4)找到相关信息。 - OpenSSL:[官方网址](http://www.openssl.org),2020年。 - PKCS#11 Wrapper Library:[GitHub项目](https://github.com/OpenSC/libp11),2020年。 - p11-kit网页:[官方网址](http://p11-glue.freedesktop.org/p11-kit.html),2020年。 - PKCS#11 URI Scheme:[IETF RFC 7512](https://tools.ietf.org/html/rfc7512),2020年。 #### 概览 根据《Code-Signing Tool User's Guide》附录B《Replacing the CST Backend Implementation》,NXP设计了Code-Signing Tool的前端和后端两部分。前端包含了所有NXP专有操作,而后端则实现了所有标准的加密操作。用户可以编写后端的替代实现,例如与HSM或智能卡接口。 参考后端使用OpenSSL来执行HAB签名生成和加密数据生成。OpenSSL提供了Engine API,使得替代实施某些由OpenSSL实现的加密操作成为可能。利用这一特性,我们可以复用参考后端与HSM交互,将签名生成过程中涉及的加密操作卸载到HSM上。 为了与HSM集成,引擎应该重写RSA私钥加密函数,并定义如何从HSM加载公钥证书和私钥到OpenSSL的数据结构(如X509、RSA和EVP_PKEY)。此外,还可以选择性地重写SHA摘要函数。 #### 实现细节 **1. CST与HSM的集成** 为了将CST与HSM集成,需要对CST的后端进行定制。这包括但不限于以下步骤: - **重写RSA私钥加密函数**:由于HSM通常负责处理敏感数据的加密操作,因此需要将CST中的RSA私钥加密功能替换为与HSM的通信逻辑。 - **公钥证书和私钥加载**:定义一个机制,用于从HSM加载公钥证书和私钥至OpenSSL的数据结构中,如X509、RSA和EVP_PKEY。 **2. 使用PKCS#11接口** PKCS#11是与HSM交互的标准接口。为了实现上述目标,开发者需要了解并使用PKCS#11标准。PKCS#11提供了一系列API,用于管理HSM中的密钥对象、执行加密和解密操作等。 - **加载PKCS#11库**:需要加载对应的PKCS#11库,通常是通过环境变量`PKCS11_MODULE`指定。 - **初始化HSM会话**:创建一个会话以与HSM交互。 - **获取对象句柄**:通过PKCS#11 API检索公钥证书和私钥的对象句柄。 - **执行加密操作**:调用相应的PKCS#11 API执行加密操作,如RSA私钥加密。 **3. SHA摘要函数** 除了RSA私钥加密外,还可以选择性地重写SHA摘要函数。这是因为SHA摘要通常用于生成数字签名的基础哈希值。通过重写SHA摘要函数,可以在HSM内部执行哈希运算,提高安全性。 #### 结论 通过上述介绍可以看出,将CST与HSM结合使用可以显著增强代码签名的安全性。这不仅涉及到对CST后端的定制,还需要深入理解PKCS#11接口及其在HSM中的应用。对于软件、硬件及系统工程师来说,这是一个挑战性的任务,但也为构建高度安全的系统提供了坚实的基础。
- 粉丝: 18
- 资源: 108
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助