Edit online

HSK 详细说明

20 Nov 2024
Read time: 3 minute(s)

HSK 的派生

HSK 只能从其他密钥派生。
  • 派生 HSK 的密钥为父密钥。 父密钥可以为:
    • eFuse 安全密钥
    • 用户指定的其他密钥

      HSKM 可以是用户指定的任意数据,但输出的 HSK 最大只能为 2048 bit。

  • 用于派生 HSK 的数据称为 HSK Material (HSKM)。

eFuse 密钥和 HSKM 派生 HSK 的过程如下。


hsk_gen_with_efuse

1. eFuse 密钥和 HSKM 派生 HSK 的过程
HSK 的使用限制如下:
  • 只能作为 CE 的密钥进行使用。
  • 不能作为 CE 的数据输入。

hsk_limit1


hsk_limit2


hsk_limit3

2. HSK 的使用限制

HSK 的功能

硬件安全密钥可以解决密钥的本地存储安全问题。

将关键密钥保存在设备中时,密钥的本地存储存在以下安全问题:
  • 如以明文保存,密钥不安全,容易被窃取。
  • 如烧录到 eFuse,则需要使用较多的安全 eFuse 空间。
  • 在需要动态生成密钥的场景中,安全 eFuse 无法满足动态生成密钥的需求。
使用硬件安全密钥,可以实现下列功能:
  • RSA 私钥的安全存储

    RSA 私钥可用作芯片/ 设备的身份认证,因此需要实现本地的保密存储。

  • 数据的存储安全

    eFuse 安全密钥中的 HUK 是芯片的硬件唯一密钥。每颗芯片都有一个硬件唯一密钥 (HUK)。通过 HUK 派生 HSK,可以实现 HSK 与当前平台的绑定,因此仅当前平台可以解密使用 HSK 加密后的数据。同时对应的 HSKM 可以与加密数据一起保存在本地设备,不影响数据的保密和安全。

硬件安全密钥解决密钥本地存储安全问题的方式如下:
  • 对于固定密钥:使用 eFuse 安全密钥,先对 HSK 进行加密,再将加密后的数据 (HSKM) 保存在设备本地。需要使用时,将 HSKM 解密输出到安全 SRAM,得到 HSK。
  • 对于动态密钥:使用 eFuse 安全密钥中的 HUK 派生 HSK。在需要动态生成 HSK 加密本地数据时,使用 TRNG 生成 HSKM,再使用 HUK 对 HSKM 进行解密输出到安全 SRAM,从而得到 HSK。HSKM 可以和数据一起保存在本地设备。

由于 eFuse 安全密钥仅 CE 可访问,软件以及其他硬件模块无法读写,因此本地设备保存 HSKM 不会导致 HSK 的泄露。

eFuse 安全密钥

eFuse 安全密钥是指 eFuse 中仅 CE 模块可访问,其他软硬件模块无法读写的 eFuse 密钥区域。

CE 模块支持下列 eFuse 安全密钥。

1. eFuse 安全密钥
名字 大小 (BIT) 描述
PNK 64 Part Number Key,芯片型号密钥
SSK 128 对称密钥,用于固件加密
HUK 128 硬件唯一密钥,用于派生 HSK
PSK0 64 Partner Secret Key0,DES 密钥
PSK1 64 Partner Secret Key1,DES 密钥
PSK2 64 Partner Secret Key2,DES 密钥
PSK3 64 Partner Secret Key3,DES 密钥

数据填充

CE 模块所支持的算法,多数是按照固定数据块的方式处理数据。如果实际待处理数据的长度不满足对齐要求时,需要进行数据填充。 不同算法的填充处理方式不同,CE 仅支持部分算法进行硬件填充处理。

CE 模块中各算法对数据块要求和数据填充的支持情况如下:
  • AES 算法
    • 数据块大小 128 bits
    • 要求 16 字节对齐
    • 不支持 CE 硬件填充,需要用户进行数据填充
  • DES/TDES 算法
    • 数据块大小 64 bits。
    • 要求 8 字节对齐。
    • 不支持 CE 硬件填充,需要用户进行数据填充。
  • RSA 算法
    • 数据块大小和密钥长度与填充方法相关。
    • 不支持 CE 硬件填充,需要用户进行数据填充。
  • SHA/MD5 算法
    • 支持 CE 硬件填充。
    • 非最后一笔数据,应 512bit/ 1024bit 对齐,具体看算法要求。

使用限制

Symmetric Secret Key (SSK) 是 eFuse 中用于对称加密算法的密钥。SSK 的用途和输出限制如下:
  • 对固件进行解密。

    仅在 BROM 阶段可用,BROM 退出后,SSK 被设置为仅能用于派生其他硬件安全密钥,并且仅能输出到安全 SRAM。

  • 派生 HSK。

eFuse 安全密钥仅能用于派生 HSK。即当 CE 选择 eFuse 安全密钥作为密钥时, CE 的结果只能输出到安全 SRAM,防止 HSK 被解密到外部存储空间,从而导致密钥泄露。