上一篇我们讲到了PUF,PUF的目的是为了让key更加安全。
RT600除了支持PUF外,还推出了master key的方案。简单来说,就是对存储到固定地址的key,进行AES的加密运算,经过运算后的key才能解密数据。实质上就是对key的再加密,hake即便获取了存储的key,但是无法知晓key的加密运算法则,因此无法解密数据。
几种key的处理:
- HMAC SHA256 key128
存储在fuse中的master key经过如下的算法,得到的key对image header计算得到HMAC.
AES256(MASTERKEY256, 00000000_00000000_00000000_00000000) - Encrypted boot image key256:
maser key经过如下的算法,得到的key用于image的加解密
AES256(MASTERKEY256, 01000000_00000000_00000000_00000000_02000000_00000000_00000000_00000000) - SB2 KEK key or FW update Key
master key经过如下的运算,用于SB的加解密
AES256(MASTERKEY256,03000000_00000000_00000000_00000000_04000000_00000000_00000000_00000000) - OTFAD KEK128(supports both per device AES key and pre shared AES key)
OTFAD key 跟 master经过如下算法,得到OTFAD kek,用于key blob的解密
AES256 ENCRYPT(MASTERKEY256, OTFAD_key[127:0] fuse);