一、什么是PUF
1. 物理不可克隆函数——PUF
物理不可克隆函数(即PUF:physical unclonable function)是一种芯片的数字指纹,用作半导体设备(如微处理器)的唯一身份,增强了芯片抵抗逆向的能力。
PUF通常用于密码学。物理不可克隆函数是物理结构中体现的物理实体。目前,PUF通常用集成电路来实现,通常用于对安全性要求较高的应用中。
从2010年到2013年,PUF在智能卡市场获得了关注,作为提供“硅指纹”的有前途的方式,创建了独特于个人智能卡的加密密钥。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210529150929642.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3ZpdmlkMTE3,size_16,color_FFFFFF,t_70)
现在,PUF成为商用FPGA中安全替代电池备份秘密密钥的存储器,如Xilinx Zynq Ultrascale ++ 和Altera。
PUF取决于其物理微结构的独特性。这种微观结构取决于制造过程中引入的随机物理因素。这些因素是不可预测和不可控制的,这使得复制或克隆结构几乎是不可能的。
但是这只是一项芯片设计模块功能,与TrustZone技术存在本质区别。
2. PUF特性
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210529151253585.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3ZpdmlkMTE3,size_16,color_FFFFFF,t_70)
- 唯一性
每一个芯片都是随机分布的、唯一的
- 防克隆性
芯片本身就是在芯片制造过程中由于不确定因素提取出来的,无法重新复制相同的PUF值
- 不可预测性
由于芯片在制造出来之前,没有办法来预测
- 防篡改性
芯片本身PUF值无法定位修改
- 无需存储
每次芯片启动只需要在电路结构中提取,无需存储器件来存储
3. PUF结构
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210529152437793.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3ZpdmlkMTE3,size_16,color_FFFFFF,t_70)
-
SRAM PUF
SRAM PUF利用SRAM Cell,首尾相接的反相器,在制造过程中,虽然电路架构完全一样,但是电路驱动能力有强弱之分,导致SRAM在上电时的Cell上0,1的分布是随机分布的,因此,利用这个特征可以提取出PUF
-
仲裁PUF
仲裁PUF,同一个信号从起点到终点所用的时间(延迟),在制造过程中会存在误差。
-
RO PUF(环形振荡器)
环形振荡器PUF,利用环形振荡器电路,在不同芯片制造出来之后,频率产生也会存在误差
-
VIA PUF
实际设计中,VIA存在设计规则,利用设计规则,设计从小到大的孔洞,根据工艺的特性,来提取出VIA PUF
5. 与TrustZone技术的区别
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210529153405434.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3ZpdmlkMTE3,size_16,color_FFFFFF,t_70)
TrustZone技术是一种安全执行区域概念,是芯片运行状态在共享资源、总线系统的安全态与非安全态的问题。基于TrustZone技术的TEEOS,形成一个可信执行环境,能够执行某些操作、保护某些资源。
PUF可以被用作唯一且不可篡改的设备标识符。PUF也可以用于安全密钥生成和存储以及随机源。
二、SRAM PUF特点
1. SRAM PUF
深亚微米工艺上来说,制造过程中随机因素会影响电路特性,从而导致Cell上电时,0与1随机分布,这个随机分布,基本上是固定的分布,这样可以提取出PUF值
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210529160021982.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3ZpdmlkMTE3,size_16,color_FFFFFF,t_70)
2. SRAM PUF Key存储
PUF Key在芯片生命周期使用阶段:
-
Enrollment——QTP(One Time Process)
![在这里插入图片描述](https://img-blog.csdnimg.cn/2021052916031822.png)
从SRAM PUF中提取R值,经过PUF-IP,再经过AC过程(用于纠错),然后配合上电过程完成启动
-
Key重构——每次上电都需要重新执行这个过程
R’值和之前R值是不一样的,由于芯片SRAM Cell 80%0,1值是确定的,但是也有少部分是随机变化的。通过AC纠错,可以保证每次SRAM生成的PUF Key是固定的。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210529160559890.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3ZpdmlkMTE3,size_16,color_FFFFFF,t_70)
前提条件:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210529160811663.png)
a. AC和Key相关性是0,即从ACcode是无法推导出PUF key
b. 提取出的Key值需要达到一定的可靠性
3. SRAM PUF 产品形态
-
软件形态
-
硬件IP形态
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210529161152979.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3ZpdmlkMTE3,size_16,color_FFFFFF,t_70)
4. SRAM PUF生命使用周期
软件的BROADKEY可以部署至各个生命周期的芯片上,
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210529162213900.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3ZpdmlkMTE3,size_16,color_FFFFFF,t_70)
可以保障25年的生命周期
- 可靠性
- 制造型
- 安全认证
三、SRAM PUF应用
1. 生成应用Key流
与SRAM PUF流程一致
- Enrollment
- Key 重构
2. Wrap Operation
与之前一种的区别是,这次的Key值不作为应用密钥,
而是作为应用密钥的加密密钥来使用
-
Enrollment
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210529162823451.png)
-
Key 编程
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210529162833386.png)
-
Key重构
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210529162841362.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210529162758116.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3ZpdmlkMTE3,size_16,color_FFFFFF,t_70)
3. 防克隆的应用方案
安全固件的导入:
-
BROADKEY集成在bootloader中,含有两个内容,一个是Bootloader,另外一个为存储密钥,为固件的解密密钥。除了部件以外,还有加解密库。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210529163535631.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3ZpdmlkMTE3,size_16,color_FFFFFF,t_70)
-
把这个固件download到产品的flash中,然后需要通过BROADKEY把 AC code提取出来,存储到数据区
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210529163606552.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3ZpdmlkMTE3,size_16,color_FFFFFF,t_70)
-
将BROADKEY生成Key将固件的解密密钥进行加密以后,存储到flash数据区
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210529163741262.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3ZpdmlkMTE3,size_16,color_FFFFFF,t_70)
-
用固件的解密密钥将初始导入的加密固件解密出来,存储至可执行区域中
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210529163917535.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3ZpdmlkMTE3,size_16,color_FFFFFF,t_70)
-
因为固件已经解密完成,因此把bootloader中的解密密钥删除,同时导入固件的加密密钥也可以删除
![在这里插入图片描述](https://img-blog.csdnimg.cn/2021052916401965.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3ZpdmlkMTE3,size_16,color_FFFFFF,t_70)
-
最后,用PUF Key生成MAC值,存储到数据区,以上为安全固件的导入过程
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210529164422385.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3ZpdmlkMTE3,size_16,color_FFFFFF,t_70)
使用过程:
a. 在安装过程中,固件已经装好。
b. 芯片上电后,bootloader可以都会AC code
c. 同时生成PUF key,同时利用PUF key来对固件进行计算,同时与之前MAC值进行比较。如果正确则可以执行固件,比较错误,则会进入错误状态。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210529164930340.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3ZpdmlkMTE3,size_16,color_FFFFFF,t_70)
固件升级
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210529165054791.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3ZpdmlkMTE3,size_16,color_FFFFFF,t_70)
防克隆原理
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210529165200374.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3ZpdmlkMTE3,size_16,color_FFFFFF,t_70)
如果将芯片中固件放入另一个固件,即使两个芯片完全一样。
每次上电中,BROADKEY则会提取出PUF Key,如果芯片一旦换了之后,读取AC code进行PUF Key的提取,就会发现AC code并不是芯片本身的AC code,所以会报错。则会影响下一步的过程。因此,可以防克隆的攻击。
四、结论
SRAM PUF的特征
- 可以容易的加载PUF key的功能
- 很高的可靠性,可以保证小于10-12错误概率
- 很好的工艺适配性(7nm~.13um的工艺)
- 安全认证高