查看: 2868|回复: 1

PUF——让密钥更安全.

[复制链接]

该用户从未签到

72

主题

80

帖子

0

版主

Rank: 7Rank: 7Rank: 7

积分
724
最后登录
2020-1-3
发表于 2019-4-11 22:37:22 | 显示全部楼层 |阅读模式
本帖最后由 eefishing 于 2019-4-12 09:58 编辑

由于物联网(IoT)概念的大热,IoT设备的安全愈发受到大家的重视。大家对安全的要求日益增长,LPC55Sxx系列也应运而生。
对于安全应用,密钥管理机制至关重要。
在传统的通用MCU中,最普遍的做法是将密钥的明文存储在片内的OTP或者Flash中,但是实际上,攻击者只需要通过比较低的代价($200-$5000)就能从片内OTP或者Flash中获取到密钥。
安全的攻与防就是矛与盾的关系,当我们的竞争对手或地下产业只需花费极少的代价就可以攻破、山寨我们的产品时,我们也必须要升级我们的防御措施。而PUF可以在密钥存储上为我们提供更强的安全保护。

更安全的密钥存储

LPC55Sxx/54Sxx、i.MX RT600内置的PUF(Physical Unclonable Functions)是SRAM PUF。由于SRAM的硅结构特征,每一个SRAM的数字特征都是独一无二的。SRAM PUF的不可克隆特性(Unclonable),就是来源于SRAM独一无二的数字特征。

即使是NXP,也不可能制造出两颗数字特征一模一样的SRAM PUF。所以,我们称芯片内SRAM的独一无二的数字特征为芯片的指纹。利用芯片的指纹,就可以生成根密钥和储存所需的密钥。

本文无意引入更多的技术原理和细节,详情请参考芯片的用户手册(UM)和应用笔记LPC55Sxx usage of the PUF and Hash Crypt to AES coding( AN12324)。

下面将举一个简单的例子,更形象地为大家介绍PUF。

对于LPC55Sxx/54Sxx、i.MX RT600来说,每一颗芯片的PUF就像是一个独一无二的“安全管理公司”,在安全管理公司的工作时间内,我们通过注册(Enroll)后,安全管理公司将会为我们分配一个“安全管理员”,以及安全管理员对应的代号Activation Code(AC)。然后我们可以将我们的密钥或敏感信息交给我们的安全管理员保管(这个过程叫做Set Key),这个专业的安全管理员会将我们委托保管的信息随身携带、形影不离,并给我们一个与被保管信息相对应的Key Code(KC)。当我们需要使用密钥时,通过AC就可以找到相应的管理员(这个过程叫做Start)。在我们找到这个管理员后,就可以通过KC,来取回我们之前保管的信息(这个过程叫做Get Key)。当安全公司下班以后,安全管理员也会离开公司,此时公司空无一人,也没有任何信息残留。

小编刚写到这里,背后突然有位大咖冒出一句话:既然PUF的安全不依赖于AC和KC,就是说即使管理员被劫持不得已交出了AC和KC,密钥的安全也有保障。

在这个例子中,公司下班,就是指芯片断电。当芯片断电以后,芯片内的PUF并不保留任何信息,传统的Crack Fuse/Flash手段也就无效了,自然也就避免了传统的片内OTP Fuse和Flash在断电后被暴力读取的风险。

我们通过安全启动(Secure boot)等手段,使安全管理公司无法被非法访问,那么即使攻击者获取到ACKC,由于没办法访问安全管理公司,也就无法获取到对应的原始敏感信息;由于每个安全管理公司是独一无二的,所以一个公司的AC和KC自然也是无法到另一个公司使用的,也无法通过其他芯片或芯片复制获得到对应的原始敏感信息。

这就解决了上文所说的传统密钥存储所面临的问题。

易用的安全密钥存储

尽管PUF提供了更安全的密钥存储机制,但是并不会因为安全强度的增加而增加了使用难度。MCUXpresso SDK中还提供了易用的API,只需要三五个简单的API调用,就可以安全地存储密钥。

11.png

图中虚线部分表示不需要每次进行的操作。更多详情请参考SDK以及应用笔记的PUF 演示例程。

不只是存储

PUF不仅仅可以提供安全的密钥存储。对于LPC55Sxx系列来说,PUF还有直接连接到PRINCE和AES加密引擎的专用硬件通道(Hardware bus),由于这条硬件通道软件不可访问,在保证密钥存储安全的同时,也能保证密钥的访问安全。

12.png

这也就意味着,当我们在生产阶段利用PUF完成密钥配置(key provisioning) ,将AC和KC存储到Flash/OTP/EEPROM内,产品出厂后,CPU在不知道密钥的情况下,通过PUF以及AC和KC,就可以将Key通过专用硬件总线配送给AES和PRINCE,后者就可以利用这个密钥对相应的信息进行加解密等工作。

在此场景下,不仅利用PUF实现了密钥的存储安全,也实现了密钥的访问安全。

PUF也提供了一些其他更丰富的功能,满足各种需求的密钥管理,更多信息请关注用户手册有关章节以及相应的应用笔记。

图中虚线部分表示不需要每次进行的操作。更多详情请参考SDK以及应用笔记的PUF 演示例程。


查看原文>>
浏览更多精彩内容,请搜索并关注“恩智浦MCU加油站”微信公众号

回复

使用道具 举报

  • TA的每日心情
    慵懒
    前天 16:01
  • 签到天数: 1480 天

    [LV.10]以坛为家III

    203

    主题

    2万

    帖子

    64

    超级版主

    Rank: 8Rank: 8

    积分
    92788
    最后登录
    2024-4-27
    发表于 2019-4-12 00:10:44 | 显示全部楼层
    感谢分享~~
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-4-29 12:25 , Processed in 0.135647 second(s), 21 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表