LPC之PUF

目录

PUF是恩智浦LPC Niobe4,RT600新推出的功能。它是一个带SRAM用于管理秘钥的硬件模块。
目的是为了让秘钥更加安全

  • 具体内容如下:

    1. PUF简介
    2. 如何使用PUF

PUF简介

  • 传统的MCU,如果加密一段数据,需要将对应的解密key存放到固定的位置。解密的时候,调用该key进行数据的解密。传统的方式有个弊端,就是hake可以获取到key,不能保证加密数据的安全性。
  • 恩智浦新推出的LPC系列的芯片(Niobe4,RT600)增加了PUF模块。用于对秘钥的保护管理。使用这个模块,我们存放到固定位置的不是明文key,而是经过PUF处理后的key-store。

-如下是PUF的对key的处理

  • key store的结构图(RT600)

PUF使用(Niobe4)

  • 生成key store
    1. Enroll生成activation code
      blhost.exe -p com25 -- key-provisioning enroll
    2. 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
    3. 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)
  • key store的使用
    1. 将生成的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中
    2. 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的时候才会执行

猜你喜欢

转载自www.cnblogs.com/richard-xiong/p/9908849.html
今日推荐