LPC之PUF
Posted richard-xiong
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LPC之PUF相关的知识,希望对你有一定的参考价值。
目录
PUF是恩智浦LPC Niobe4,RT600新推出的功能。它是一个带SRAM用于管理秘钥的硬件模块。
目的是为了让秘钥更加安全
具体内容如下:
- PUF简介
- 如何使用PUF
PUF简介
- 传统的MCU,如果加密一段数据,需要将对应的解密key存放到固定的位置。解密的时候,调用该key进行数据的解密。传统的方式有个弊端,就是hake可以获取到key,不能保证加密数据的安全性。
- 恩智浦新推出的LPC系列的芯片(Niobe4,RT600)增加了PUF模块。用于对秘钥的保护管理。使用这个模块,我们存放到固定位置的不是明文key,而是经过PUF处理后的key-store。
-如下是PUF的对key的处理
- key store的结构图(RT600)
PUF使用(Niobe4)
- 生成key store
- Enroll生成activation code
blhost.exe -p com25 -- key-provisioning enroll
- set-key生成key store
blhost.exe -p com25 -- key-provisioning set_key 7 16
生成prince region0的key store
blhost.exe -p com25 -- key-provisioning set_key 8 16
生成prince region1的key store
blhost.exe -p com25 -- key-provisioning set_key 9 16
生成prince region2的key store
blhost.exe -p com25 -- key-provisioning set_user_key 3 sbkek.bin
根据提供的sbkek.bin生成sb kek key store
- get-key读取生成的key store
blhost.exe -p com25 -- key-provisioning read_key_store key_store.bin
将生成的key store读取出来。前1200 bytes是header(0x95959595)+diascardtime+activation code,后面跟着的就是key store(header(0x59595959)+key code)
- Enroll生成activation code
- key store的使用
- 将生成的key store存到固定的位置
blhost.exe -p com25 -- key-provisioning write_key_store key_store2.bin
blhost.exe -p com25 -- key-provisioning write_key_nonvolatile 0
执行完命令后,我们会发现key store已经写入FFR key store中 - ROM启动时,会自动调用key store,re-construct出key。对数据进行解密
如果activation code存在于key store中,ROM启动时会init PUF,否则不init。
在activation存在的前提下,如果存在key code。则根据不同的key code,ROM有如下动作:- SBKEK key code,只有使用了receive-sb-file命令后,PUF对SBKEK key code解密。然后执行
- Prince key code,只要存在,ROM立即解密
- UDS key code,只有secure boot的时候才会执行
- 将生成的key store存到固定的位置
以上是关于LPC之PUF的主要内容,如果未能解决你的问题,请参考以下文章