常用MCU加密方法介绍

发布者:luanzgc最新更新时间:2022-01-27 来源: eefocus关键字:MCU  加密方法 手机看文章 扫描二维码
随时随地手机看文章

随着物联网和边缘计算的出现,五花八门的MCU也被应用其中,如何保证我们的程序安全和知识产权不受侵犯呢,本文我们将对主流MCU的程序加密进行讲解,希望能够帮助你选择最适合自己应用的微处理器。


1.  MCU加密

通常所说的MCU加密是指将用户的程序固件保护起来,防止别人通过外部调试接口或者其他方法读取烧写在Flash中的程序。保护自家方案不轻易被别家抄袭,从硬件上保护自己的知识产权。MCU加密还指防止自家程序被恶意读取破解。


2.  常用MCU加密方式

  • 通过写特定配置字;

  • 增加外部加密芯片;

  • 对程序代码进行密码加密,使程序变成密文;

  • 程序校验芯片的唯一ID。

2.1  配置字加密

2.1.1  原理

MCU厂商在设计芯片时在芯片中增加特定的非易失存储,该存储也可能是Flash的特定地址区域。用户可以通过外部工具或在程序的特定地址写入使能存储保护的值。


配置字加密在芯片完成上电时序后才会生效,一般包含以下功能:

  • 禁能调试接口(JTAG/SWD);

  • 不禁能调试接口,但不允许调试器连接内核和访问Flash和RAM空间;

  • 关闭读写Flash的ISP指令;

  • 禁止除芯片正常执行程序外读Flash操作;

  • 禁能芯片从外部接口或RAM启动执行代码。

2.1.2  应用场景

这种加密方式通常用在程序存储在芯片内部Flash的系统中。例如NXP LPC系列MCU、GD32系列MCU、NXP Kineits Cortex-M系列。


2.2  外接加密芯片

2.2.1  原理

加密芯片保护程序的方式,是通过程序与外部加密IC的交互来确认程序是否进一步执行。

利用芯片随机数外设或者其他能够产生随机数的机制,在每次上电后系统取得一个随机数,并将这个随机数通过类似IIC的协议传给外部的硬件加密IC。随后系统按先前约定的算法进行结果计算,等待外部IC接收到随机数并也算出结果后,外部IC会将计算结果传回给系统。如果系统的计算结果和外部IC的计算结果相同,则说明外部的加密IC存在。


2.2.2  应用场景

这种加密方式主要用在用户对代码中关键算法的加密,算法通常会以Lib的方式提供,只有购买了对应加密芯片(类似于产品密钥)的客户才能够使用算法程序。


2.3 UID检验加密

2.3.1  原理

UID加密一种用户主动加密的方式。当下几乎所有处理器内部都包含UID,可以通过直接寻址读取或者IAP指令获得。


UID加密通常分为二种方式:

  • 用户在烧写程序时,读取一次芯片UID将其写入Flash特定区域。在程序启动时直接读取UID和Flash内部的数值进行比较决定是否启动;

  • 用户读取UID后通过私有密钥将UID加密之后的信息写入Flash特定地址,例如Flash的最后一个扇区。程序启动时,首先读取芯片UID并通过同样的密钥和算法进行计算后与Flash中的数值进行比较决定是否启动。

其中第一种最容易被破解,第二种也存在潜在风险,为了增强第二种的安全性,可以将加密后的数据拆分后分别存放到Flash的不同位置,运行时再组合。


2.3.2  应用场景

主要用在一些不需要太多保护的协议栈上,例如LoRa协议栈、文件系统、私有操作系统等。协议栈相对算法的价值会低一些,增加加密芯片的成本显得过高。

同时这种方式也可延伸为使用PID(每个型号的ID相同)来区分设备型号。


2.4  程序固件加密

2.4.1  原理

程序固件加密是指通过私有密钥将整个程序固件加密计算后生成密文,使得程序即使被其他人拿到后也不可能被反编译。这种加密方式通常需要有一段地址存储密钥和解密程序,他们可以是芯片内部Bootloader或用户自己的Bootloader。


2.4.2  应用场景

这种加密方式主要用于芯片没有内部Flash或Flash较小,以及需要给用户升级固件的产品上。例如:

  • 芯片从外部Flash启动时,外部Flash很容易被拷贝,盗版。这种应用通常芯片内部具备OTP区域用于编程密钥;

  • 芯片内部Flash较小时可以将算法等文件放置在外部Flash中,运行时解密到内部RAM执行。密钥通常和内部Flash的程序一同存储;

  • 使用在产品需要后期升级功能算法的项目中,可以在Bootloader中放置解密程序,升级的过程中,Bootloader将收到的固件解密烧写到内部Flash中。这样既可以随意发送产品更新固件,同时不用担心知识产权被侵害。

例如i.MX RT1050系列芯片就是使用程序固件加密,程序被放置在外部Flash中,执行时边解密边执行,对i.MX RT1050系列的加密问题可以联系我们。


3.  常用芯片的加密方式

3.1  NXP LPC系列

LPC系列MCU大多采用配置字加密方式,即CRP(Code Read Protection)加密。将配置字(CRP Key)写入特定的Flash地址中。芯片上电启动后内部boot会根据配置选择禁用相应的功能。


CRP是一种允许用户在系统中启用不同级别的安全性的机制,从而可以限制对片上闪存的访问和ISP的使用。当需要时,通过在0x0002FC中闪存位置编程特定模式来调用CRP。IAP命令不受代码读取保护的影响。


以LPC824位例,在启动文件(*.s)中找到CRP Key根据需要进行修改,如图3.1。


图片

图3.1 CRP Key示例

注:切记在产品最终固件中才可使用CRP3,否则芯片将被锁死不能再被解锁。


3.2  NXP Kineits Cortex-M系列

Kineits Cortex-M系列的加密同样使用配置字的方式写入Flash特定区域,但它比LPC系列相对复杂一些功能也更加强大。


Kineits Cortex-M系列的加密包含在FlashConfig区域,FlashConfig包含一些用于芯片内部Boot的配置信息,比如使能或禁能NMI引脚中断。


图片

图3.2 FSL的FlashConfig段

使用keil工具可以快速使用UI配置,如图3.3所示:

图片

图3.3 启动文件配置


3.3  GD32系列

GD32系列加密与和STM32系列加密方式类似。GD32内部包含一个FMC外设。FMC提供了一个安全保护功能来阻止非法读取闪存。此功能可以很好地保护软件和固件免受非法的用户操作。


FMC包含一个OB_RDPT字节与其补字节:

  • 当将OB_RDPT字节和它的补字节被设置为0x5AA5,系统复位以后,闪存将处于非安全保护状态;

  • 当设置OB_RDPT字节和它的补字节值为任何除0x5AA5外的值,系统复位以后,安全保护状态生效;

  • 在安全保护状态下,主存储闪存块仅能被用户代码访问且前4KB的闪存自动处于页擦除/编程保护状态下。在调试模式下,或从SRAM中启动时,以及从boot loader区启动时,这些模式下对主存储块的操作都被禁止;

  • 如果将OB_RDPT字节和它的补字节设置为0x5AA5,安全保护功能将失效,并自动触发一次整片擦除操作。

GD官方提供加密工具GigaDevice_MCU_ISP_Programmer或者使用FlyMCU等工具,操作界面如图3.4所示:

图片

图3.4 GD32使用FlyMCU加密


3.4  i.MX RT系列

i.MX RT系列是NXP公司发布的跨界处理器,MPU的处理性能、MCU的开发方式。该系列不包含用户可用的内部Flash,所有代码都要存储在外部存储介质中。它使用FSL独有的HAB安全机制,能够达到比前面更安全的加密机制。


i.MX RT的加密是将程序固件完全通过工具转换为密文,不能够被反编译,同时i.MX RT内部包含OTP区域,用于编程密钥信息和启动信息,加密后不可读取。

  • 芯片使用QSPI或HypeFlash时,可以实现边运行边解密,不占用额外的RAM空间,同时硬件解密配合内核中32KB ICache和32KB DCache使得程序运行不会受到固件加密的影响;

  • 芯片还支持Boot时完全解密程序到内部RAM或外部SDRAM,这种方式代码的启动速度略微变慢,但是能够支持更多的启动方式:SD卡、MMC、Nand Flash等。


关键字:MCU  加密方法 引用地址:常用MCU加密方法介绍

上一篇:STM8L151C8单片机学习例程(1)——LED闪烁
下一篇:关于飞思卡尔xs128的IO端口

推荐阅读最新更新时间:2024-11-21 07:50

单片机显示三位整数
利用数码管显示三位数是利用了单片机数码管的动态扫描,但此方法又有不同点,我们不再需要位选table,实现的具体思路是,先将要显示的3位数进行百位,十位,个位进行分离,然后再利用动态扫描将其显示即可. 源代码如下,产生的效果是:可以显示任一个小于255的整数 #include reg52.h #define uint unsigned int #define uchar unsigned char sbit sda=P1^0; sbit clk=P1^1; sbit dig1=P1^2; sbit dig2=P1^3; sbit dig3=P1^4; sbit dig4=P1^5; uchar code table_num =
[单片机]
基于VB实现PC机与单片机的串行通讯
引言 随着计算机技术尤其是单片微型机技术的发展,人们已越来越多地采用单片机来对一些工业控制系统中如温度、流量和压力等参数进行检测和控制。PC机具有强大的监控和管理功能,而单片机则具有快速及灵活的控制特点,通过PC机的RS-232串行接口与外部设备进行通信,是许多测控系统中常用的一种通信解决方案。因此如何实现PC机与单片机之间的通讯具有非常重要的现实意义。本文将论述在VB环境下PC机与单片机之间实现串行通讯的软硬件方案。PC机的通讯程序使用Visual Basic编写,VB是Microsoft公司推出的Windows应用程序开发工具,因其具有界面友好,编程简便等优点而受到广泛的使用,而且 Visual Basic 6.0 版本带
[单片机]
基于VB实现PC机与<font color='red'>单片机</font>的串行通讯
单片机与模糊控制的温控仪设计与实现
摘要:温度是科学技术中最基本的物理量之一,在工业生产和生活中,常常是表征对象和过程状态的重要参数,其控制具有非线性、时滞性和不确定性,用传统的控制达不到好的控制效果。设计一种以单片机MSP430F149为系统的核心部件,并将模糊控制算法应用到其中的温控仪上,温度控制范围为常温0~100℃,设定温度值与测量温度值实时显示,控制精度可达±0.5℃。该系统采用恒泷供电,电路较简单,成本低,温度控制精度高,可以广泛应用于需要进行恒温控制的生产和生活中。   0 引言   温度控制对于工业和日常生活等领域都具有广阔的应用前景,很多应用领域,需要精度较高的恒温控制,由于其控制具有非线性、时滞性和不确定性,用传统的控制达不到好的控制效果。模糊控
[模拟电子]
<font color='red'>单片机</font>与模糊控制的温控仪设计与实现
51单片机数据类型int,float,指针所占字节数
1.int===2个字节 2.sfr===特殊功能寄存器,也是一种扩充数据类型,占用1个内存单元,利用它可以访问51单片机内的所有特殊功能寄存器。 sfr P1 = 0x90;/////////这一句定义P1为P1端口在片内的寄存器。 3.sfr16===16位特殊功能的寄存器。用于定时器T0,T1 4.sbit===可录址位,也是一种扩充数据类型。利用它可访问芯片内部RAM中的可寻址位或特殊功能寄存器的可寻址位。 sfr P1 = 0x90;/////////因P1端口的寄存器是可寻址位的,所以我们可以定义 sbit P1_1 = P1^1;///////P1_1为P1中的P1.1引脚 ////////== sbit P1_1
[单片机]
51<font color='red'>单片机</font>数据类型int,float,指针所占字节数
基于CAN控制器的对等式单片机多机系统的通信
    摘要: 针对单片机多机系统主从式通信的缺点,提也了利用CAN控制器实现单片机多机系统对等式通信,并对其硬件组成原理、通信程序的设计做了详细的分析。     关键词: 单片机多机系统 “对等式”通信 控制器局域网(CAN) 关于单片机的多机通信,许多文章及相关书籍都有介绍,但就其多机通信的方式而言大多为“主从式”,这一通信方式限制了单片机功能的发挥及广泛的应用。虽然文献 利用巧秒的硬件手段实现了单片机多机之间的“对等式”通信,但其通信方式实质上仍是“主从式”。本文介绍了一种基于CAN控制器的单片机多机系统,从本质上实现了任意两机之间直接相互通信,从而克服了“主从式”多机通信的缺点。 1 CAN技术简
[工业控制]
TMS320VC5402DSP与51单片机的接口设计技术
TMS320VC5402(VC5402)是德州仪器公司推出的具有较高性价比的定点数字信号处理器。VC5402增强外设由软件等待状态发生器、锁相环时钟发生器、6通道直接存储器访问(DMA)控制器、增强型8位并行主机接口(HPI)等组成。两个可编程的多通道缓冲串口(McBSP)能够全双工、快速地与其他同步串口进行数据交换,硬件连接简单,串口的工作模式和传送数据的格式可通过编程实现。DSP和单片机之间的通信一般利用双口RAM,通过串口或DSP的HPI接口实现。 利用双口RAM实现 CY7C026是CYPRESS公司生产的16k×16B高速双口静态RAM,存取速度小于25ns。他具有真正的双端口,可以同时进行数据存取,两个端口具有独立的
[应用]
51单片机系列知识5--并口(2)
2、P1口 P1口对应的专用寄存器的助记符是P1,它是一个8位的专用寄存器,字节地址是90H,它的每一位都有位地址,可以对位进行直接访问。 PI口的位结构如图2-20所示。P1口也是准双向口,它的用途如图2-21所示。 3、P2口 P2口对应的专用寄存器的助记符是P2,它是一个专用寄存器,字节地址是0A0H.。它的每一位都有位地址,可以对位进行直接访问。 P2口的位结构如图2-22所示,P2口的使用方法如表2-11所示。 4、P3口 P3口对应的专用寄存器的助记符是P3,它是一个8位的专用寄存器,字节地址是0B0H。它的每一位都有位地址,可以对位进行直接的访问。 P3口的位结构如图2-23所示。
[单片机]
16位MCU ( 微控制器 ) 市场受到挑战?
新品发布引发的思考 日前,ST发布了其新的32位系列Cortex-M3内核微控制器——STM 32。通过以16位产品的价格得到比16位产品大幅提升的性能,来争取更多的16位用户。 “直到现在,16位和32位的设计工程师还要面对很多困难的选择,例如,他们必须在性能、成本、功耗等因素之间做出折衷和取舍,决定使用业界标准还是使用某一公司独有的平台,”ST微控制器产品部总经理Jim Nicholas表示,“通过消除这些需要折衷的因素,STM32走在了融合16位和32位微控制器市场的前列。” 那么,使得我们不得不思考,如果新的MCU可以提供较低的价格、功耗,复杂度以及较高的集成度,那么16位MCU是否因为需要
[焦点新闻]

推荐帖子

【设计工具】FPGA设计小技巧
【设计工具】FPGA设计小技巧谢谢!
8fu8 FPGA/CPLD
下载中心主题大梳理,找资料SO EASY!
通知:下载中心论坛专版在今天调整了主题,由原来的“随便聊聊、我要推荐、求资源、精华汇总、活动专区、我的建议”调整为现在的“单片机、电子电路、嵌入式系统、其他资源、电子书专区、活动公告、资源讨论”7个新主题。每个主题中都有很多精华的资源贴,是不容错过的好资源!此外,特别推荐“电子书专区”,在这里会定期更新电子工程相关的电子书,欢迎大家下载,也欢迎大家上传~!下载中心主题大梳理,找资料SOEASY!过来瞧瞧啊哈哈哈张世民444发表于2014
linjiang 下载中心专版
给大家推荐几款锂电充电管理IC
400MATP4054SOT23-5封装单灯指示500MATP4055SOT23-5封装单灯指示防锂电池反接功能(电池正负极接反不会烧芯片和电池)500MATP4057SOT23-6封装双灯指示防锂电池反接功能(电池正负极接反不会烧芯片和电池)1000MATP4056SOP-8/MSOP-8底部带有散热片内置MOS双灯指示外围两个电阻两个电容就全搞定。给大家推荐几款锂电充电管理IC李开拓BillLee南京拓微集成电路有限
BillTP 电源技术
【DigiKey“智造万物,快乐不停”创意大赛】车内氧浓度监测警报器 开箱贴
【DigiKey智造万物,快乐不停创意大赛】车内氧浓度监测警报器开箱贴很高兴有机会参与DigiKey与EEWorld联合举办的创意设计活动,也希望和各位网友在这个活动中有所收获,Diy出梦中情物。开箱肯定少不了传统项目--开盒,满满的仪式感。品牌方必须妥妥的C位。打开纸盒,随之映入眼帘的是另一个纸盒。一家比TI懒的供应商ADI,平平无奇的纸盒,高级感来电子圈中家喻户晓的ANALOGDEVICESLOGO。不会跟我玩套娃吧,接着打开纸盒。除了EVB板卡
xujinxi DigiKey得捷技术专区
MSP430 ADC DAC
小白我最近两个多月学习430,中间断断续续也停了一段时间去做别的,不过本来觉得很简单的一个程序ADC采样,算法处理,DAC输出。中间却遇到各种问题,很多在论坛发帖,各位也是很热情的帮助,现在程序告一段落,由于前期调研没做好,再加上算法比较复杂,结果是430速度太慢,导致实时性太差,要转向DSPF28335,进行重新设计。总结一下这一个多月的教训,我感觉适合像我这样的初学者,刚开始做工程,很多都不太清楚。很多问题比较基础和简单,高手勿喷,写的只是我的一些心得,错误的地方还请各位指正。先谢
eemingtian 微控制器 MCU
《智能驾驶之激光雷达算法详解》5.多传感器SLAM
本书第13章是关于多传感器融合SLAM算法的相关讲解,主要介绍了多传感器融合在智能车辆定位中的应用。由于单一传感器存在工作特性和局限性,处理不了复杂路况,因此多传感器融合实现高精度、稳定、实时的定位成为学术界和工业界的热点之一。多传感器融合SLAM有松耦合和紧耦合两种方式,紧耦合方式精度和稳定性较高,是目前研究重点,如LIC-Fusion算法、基于因子图框架的算法、R2LIVE算法及LVI-SAM算法等。此外,一些学者结合事先构建的高精点云地图提供全局定位信息,如百度的相关研究及
镜花水月000 汽车电子
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved