LPC之PUF

Posted richard-xiong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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的时候才会执行

以上是关于LPC之PUF的主要内容,如果未能解决你的问题,请参考以下文章

LPC2138微控制器之定时器看门狗VIC实例

RT600之OTFAD

LPC1768/1769之CAN控制器概述

硬件安全技术——芯片安全设计技术4(PUF)

硬件安全技术——芯片安全设计技术4(PUF)

硬件安全技术——芯片安全设计技术4(PUF)