一种基于芯片ID和后门访问功能的程序加密设计

一种基于芯片ID和后门访问功能的程序加密设计
(AcodeecuritydeignbaedonUIDandBackdoorAcce)
FreecaleSemiconductor
IMMFiledApplicationEngineer
ZhuangChao
1.功能介绍
1.1ecure/unecure模式
unecure模式只影响通过外部调试接口是否能执行FLASH操作指令;而对CPU执行FLASH操作指令没有任何影响。因此,Kineti系列MCU还针对FLASH设计了另外的保护机制,用于保护FLASH中的程序和数据不被意外擦除或写入。这主要是为了防止CPU对FLASH的误操作。为简化设计与突出重点,本设计并没有使能FLASH保护机制。
1.2后门访问后门访问((BackdoorAcce)仿流明
1.3基于UID的程序安全设计
在市场上,一些非软件开发者可能通过某种方式得到用户的程序代码,然后直接烧录到同型号芯片中并进行商业应用。为防止这种情况出现,可以使用基于UID的程序安全设计。每一片Kineti系列MCU都具有一个全球唯一的ID号,称为UID,保存在SIM模块的相关寄存器中。用户可以根据芯片的UID号,经过某种加密算法生成一个密码(简称Key2),并将其烧录到FLASH的IFR区域。芯片复位后,在主程序运行之前,可运行一段
校验程序,用于验证IFR区域中的密码Key2与芯片的UID号是否符合预定的加密算法。如不符合,则不再运行主程序。这种方法可以有效保护开发者的权益。
磷酸氧钛钾注:上述两种方法实现过程看似相同,但具体作用并不相同。两者的差别主要体现在对FLASH中程序的保护角度不同。ecure模式保护FLASH中的程序不能被非法读取出来,而基于UID的程序安全设计则保护用户程序不能被“暴力地”烧写到其他芯片中运行。如果将这两种方法结合起来使用,就可以更全面地保护开发者的权益。另外两种方法产生密码的算法可以是相同的,也可以不同,这取决于客户的选择。
1.4本设计的功能
为提升芯片的安全性,本设计集成了上述两种方法,既能够防止通过SWD等调试接口非法访问芯片内部存储器,也可防止把非法得到的程序代码直接写到其他芯片中使用。为方便读懂,本设计中的生成Key1和key2的方法是相同的,因此对某个UID,Key1和key2相同,下面统称key。本设计中只是简单地使用UID作为key,没有经过任何加密运算。
图2.本设计的软件流程图
2.Freecale芯片的相关寄存器设置及对应功能
净化水体2.1相关寄存器介绍相关寄存器介绍
UID寄存器
黑陶工艺品
图3.SIM_UID寄存器
上述为SIM_UID的寄存器,可以看到,UID号一共64位,分高、低两部分,各32位。每一片Freecale的Kineti系列MCU均有一个全球唯一的ID号。
汽车水箱除垢剂Flahecure寄存器
图4.FTMRH_FSEC寄存器
该寄存中[7:6]需要设置为10,从而使能BackdoorKey。当该寄存器[1:0]位为10时,芯片处于unecure模式,其他模式下均为ecure模式。
Flah时钟分频寄存器
图5.FTMRH_FSEC寄存器
在初始化时,需要配置该寄存器的[0:5]位,使得分频后的时钟满足要求。具体细节请参考文献[4]。
FlahCCOB序号寄存器与CCOB对象寄存器
图6.FTMRH_FCCOBI某寄存器
配置上述序号与对象寄存器,从而可以完成如擦除、读取、烧写等FLASH操作指令。
2.2实现BackdoorAcce,应如何配置及程序实现
FLASH初始化
位置:Flah_Init();
功能:配置FTMRH_FCLKKDIV_FDIV寄存器,使得将BUS_CLK分频后,FLASH时钟的频率
在1MHz左右。如果频率超出范围,那么擦除和写入的结果都是不能保证。该部分功能主要有以下两条程序来完成:
康q
//得出BUS总线到FLASH总线的分频值uint8_tclkDIV=BUS_CLK_HZ/1000000L-1;

本文发布于:2024-09-22 11:38:49,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/143440.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:寄存器   芯片   保护
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议