新唐MCU通过UID加密的一种方法
单片机多级通信系统中的安全性与加密算法设计

单片机多级通信系统中的安全性与加密算法设计在单片机多级通信系统中,确保通信数据的安全性和保护用户隐私是一项非常重要的任务。
为了实现数据的安全传输和防止数据泄露,需要设计合适的加密算法和安全性措施。
本文将讨论单片机多级通信系统中的安全性问题,并提出一种安全性措施和加密算法的设计。
首先,单片机多级通信系统中的安全性问题主要包括数据的保密性和数据的完整性。
数据的保密性是指只有合法的接收方才能正确解读通信数据,而数据的完整性是指通信数据在传输过程中没有被篡改。
为了实现数据的保密性和完整性,我们可以采取以下安全性措施和加密算法的设计:1. 数据加密处理:在发送数据之前,利用一种加密算法对通信数据进行加密处理。
常见的加密算法有对称密钥加密算法和公钥加密算法。
对称密钥加密算法具有加密速度快、加密效率高的优点,但密钥的传输和管理较为困难;公钥加密算法采用了公钥和私钥的组合,公钥用于加密数据,私钥用于解密数据,其密钥的传输和管理相对较为简单。
根据实际需求,可以选择适合的加密算法进行数据的加密处理。
2. 密钥管理与交换:在单片机多级通信系统中,合理的密钥管理和密钥交换至关重要。
首先,需要建立一个安全可靠的密钥管理系统,包括密钥的生成、存储、分发和更新等。
其次,在系统的通信开始时,需要进行密钥交换,确保通信双方拥有并且只知道正确的密钥。
常用的密钥交换协议有Diffie-Hellman密钥交换协议和RSA密钥交换协议等。
3. 数据完整性校验:在通信数据的传输过程中,可以采用校验和或者哈希函数等方法对数据完整性进行校验。
校验和是通过对数据进行求和后生成一个固定长度的值,接收方可以通过计算校验和并与接收到的数据进行比对,从而判断数据是否被篡改。
哈希函数是将任意长度的数据映射为固定长度的哈希值,接收方通过比对接收到的数据的哈希值与发送方计算的哈希值来判断数据的完整性。
4. 身份认证:在多级通信系统中,为了确保通信双方的身份真实可靠,可以采用一些身份认证的方法。
mcu密钥管理最佳实践

mcu密钥管理最佳实践MCU(Microcontroller Unit)密钥管理是保护嵌入式设备安全的关键环节。
在现代物联网时代,越来越多的设备依赖于MCU来实现各种功能。
然而,由于MCU资源有限,密钥管理变得尤为重要。
本文将介绍MCU密钥管理的最佳实践,旨在帮助开发者和企业确保设备的安全性。
1. 使用硬件加密模块硬件加密模块是MCU密钥管理的核心组成部分。
它可以提供更高的安全性和更快的加密速度,同时减轻MCU的负担。
硬件加密模块应该支持常见的加密算法,如AES、RSA等,并能够存储和管理密钥。
2. 生成强密码密码是保护密钥的第一道防线。
生成强密码是MCU密钥管理的基础。
强密码应该具有足够的长度和复杂度,包括大小写字母、数字和特殊字符。
开发者可以使用随机数生成器来生成强密码,并确保其不易被猜测或破解。
3. 使用安全的通信协议MCU与其他设备或服务器之间的通信可能涉及到密钥传输和密钥协商。
为了保护密钥的安全性,应使用安全的通信协议,如TLS/SSL。
这些协议可以提供加密和身份验证机制,确保传输过程中的安全性。
4. 定期更换密钥密钥的定期更换是保持设备安全的重要步骤。
即使是强密码,长期使用也会存在被破解的风险。
因此,开发者应制定密钥更换策略,并在一定周期内更换密钥。
同时,更换密钥的过程应该是安全的,避免密钥在传输过程中被拦截或泄露。
5. 合理控制密钥的访问权限密钥的访问权限应该严格控制,只有授权的人员才能够访问和使用密钥。
开发者可以通过访问控制列表(ACL)或权限管理系统来实现对密钥的权限控制。
此外,还应该记录密钥的使用情况,以便进行审计和追踪。
6. 密钥备份和恢复密钥的备份和恢复是防范密钥丢失或损坏的重要措施。
开发者应该定期备份密钥,并妥善保存备份数据。
在密钥丢失或损坏时,可以通过备份数据进行密钥的恢复,避免对设备和系统的影响。
7. 密钥生命周期管理密钥的生命周期管理是MCU密钥管理的关键环节。
密钥应该有明确的生命周期,包括生成、分发、使用、更换和销毁等阶段。
一种基于唯一ID的单片机程序综合加密方法

• 18•本文从单片机系统的组成及技术特点出发,分析了单片机系统常见的加密方法及其优缺点,充分利用解密中的汇编代码可读性差的特点,提出了一种基于唯一ID 的单片机程序综合加密方法。
单片机又称为微控制单元,或单芯片微型计算机,其广泛应用于智能仪表、实时工控、通讯设备、导航系统、家用电器等各种领域。
一个单片机产品由硬件和软件组成,硬件的通用性和可见性,硬件加密一般难以实施,加密措施通常通过软件实现。
如何保护好自己的单片机技术成果和知识产权,提高解密成本,是单片机开发者在产品设计中必需考虑的要素之一。
1 常见的加密与解密分析解密的目的是为了省去耗时耗力的开发过程,轻易地做出一个功能相同或相似的产品。
解密过程的第一步是复制硬件,硬件一般由通用器件和印制电路板组成,一般没复制难度;然后读取出单片机的程序文件,基本都可以实现,而且越是使用量大的单片机,读取技术越成熟;最后破解程序中的加密措施,让程序烧录到新的单片机在复制的硬件上正常运行,完成破解。
下面先分析常见的加密方防止通用的编程调试工具读取;关闭调试接口,如stm32系列的JTAG 接口和SWD 接口,此方法可以有效防止常规的破解工具读取,增加一定的破解难度;切断物理意义上的通讯线路,这种方法保护更有效,但从此不能再对单片机写入程序,对于售后服务来说是一种风险。
如stm32系列单片机的存储器读保护级别。
1.3 使用专业的加密芯片使用加密芯片的成本更加高,对于成本敏感的单片机产品接受度很低。
1.4 使用唯一ID号一些单片机在出厂的候芯片内部给予了一个唯一的ID 。
选择一种特殊的算法,利用这个唯一的ID ,产生一组数据X ,把这个数据预先烧录到存储器里。
单片机上电初始化的时候,先读出存储器里的这个数据X ,然后读出自身的ID 号通过加密算法算出一个值Y ,然后比较XY 值是否一样,如果一样则继续工作,否则停止工作,这是最实用的一种方法。
1.5 利用外部电路参数校正对于一些非纯数字电路,电路自身存在有较大的参数偏差,利用软件校正参数偏差,使得每一块电路板的程序电路一种基于唯一ID的单片机程序综合加密方法天地(常州)自动化股份有限公司 陈 贤法及其特点。
芯片UID加密方案

芯片UID加密方案
嵌入式系统产品的加密和解密永远是一对矛盾的统一体。
为了保护产
品研发人员的技术成果,研究新型加密技术是非常有必要的。
这里我们聊聊使
用芯片UID加密的方案。
首先需要明确的是,没有一种加密是“绝对”可靠的,但是加密手段可以
增加非法使用者的解密成本,借此来防止技术被“轻易”盗取。
本次以LPC1000 的UID加密方案为例进行介绍。
一、LPC1000系列的加密方案
通过分析得出,基于CortexM0或CortexM3内核的LPC1000系列MCU 通过软件加密的方法有两种:
1、使用代码读保护机制,限制用户访问片内Flash;
2、通过芯片UID并添加加密算法使每片MCU内的程序具有唯一性。
代码读保护机制是通过使能系统中的不同安全级别,以便限制访问片内Flash,本次不做重点介绍。
二、UID加密
UID是唯一标识符(uniqueidentifier),在LPC1000系列微控制器的每一颗芯片都具有全球唯一的标识符,该标识符为128位二进制序列。
因此我们可以利用芯片UID的唯一性对程序进行加密,使每一个产品中的程序也具有唯一性,即使非法使用者获取了MCU中的程序复制到其他芯片中也是不能正常运行的,从而达到保护开发者的知识产权不被侵犯和盗用的目的。
三、LPC1000的UID加密方案
基本思路是使用上位机软件通过编程器读取芯片的UID,经加密算法运
算后生成密钥,下载程序的同时向MCU的Flash中某个地址写入密钥;MCU上。
MCU常见的加密手段

MCU常见的加密⼿段现在的MCU程序可能别⼈花⼏百块钱就能破解,为了防⽌⼤家的程序不被剽窃,今天给⼤家分享点加密的内容。
⼀、常见加密⽅法本节不讲加密具体实现算法,只讲常见加密⽅法。
1.程序写保护这种⽅法是最常见,也是最简单的⼀种。
现在的MUC基本都有写保护功能,但是这种容易被⼈破解。
2.烧断数据总线这个⽅法听起来不错,但有损坏的风险,同样也能破解。
3.软件加密是⼀些防⽌别⼈读懂程序的⽅法,单⼀的这种⽅法不能防⽌别⼈全盘复制,须配合其他的加密算法。
4.添加外部硬件电路的加密⽅法这个⽅法效果看起来⽐较好,但会增加成本。
5.芯⽚打磨改型这个⽅法改了型号能误导,但同时也增加成本,解密者⼀般也能分析出来。
6.通过通过联⽹加序列号加密通过连接⽹络,在你的MCU中⽣成⼀个唯⼀的随机长序列号,并加⼊复杂的特种算法,或加⼊你们重新编码的企业信息在⾥⾯,每个芯⽚内不同,复制者只能复制到⼀个序列号。
7.通过MCU唯⼀的标识加密以前很多MCU没有唯⼀标识码,现在的很多MCU都具有唯⼀标识码了。
这个⽅法⽐较好,简单省事,能很好的防⽌复制。
⼆、读保护 + 唯⼀ID加密使⽤读保护 + 唯⼀ID的加密是最常⽤的⼀种⽅法,也是推荐⼤家使⽤的⼀种⽅法。
1.唯⼀ID现在正规的芯⽚,每颗出⼚的时候都带了⼀个唯⼀标识码,这个号码是唯⼀不重复的,⽐如STM32的就使⽤96位作为唯⼀ID。
和我们每个⼈的⾝份证号码⼀样,现在刚出⽣的婴⼉,上户的时候就给他⼀个⾝份证号,那么每个芯⽚⼀⽣产出来,也就具备了这个⾝份证号。
2.加密原理读保护就不⽤说了,增加被破解难度。
使⽤唯⼀ID加密的⽅法很多,这⾥说⼀种简单的⽅法:出⼚时程序读取唯⼀ID并保存在⼀个位置,以后程序执⾏之前,要读取并匹配这个唯⼀ID,⼀致才执⾏程序。
当然,这种⽅法是最基础的原理,但也存在被破解的风险。
所以,存储的数据,以及读取验证这两个地⽅需要进⼀步添加⼀些算法。
这样操作之后,即使别⼈读取了你的程序,也是⽆法正常执⾏。
新唐MCU通过UID加密的一种方法

新唐M C U通过U I D加密的一种方法本页仅作为文档封面,使用时可以删除This document is for reference only-rar21year.March新唐MCU通过UID加密的一种方法新唐的每颗M0/M4芯片内部均有一个96位的唯一ID码(UID),通过该UID码,用户可以对程序进行相应的加密,以保证其他人若拿到其程序,将程序烧录到同种MCU,功能也不能正常运行。
下面介绍一种通过MCU的UID码对程序进行加密的方法。
首先对MCU烧录程序时,需把密钥文件同时烧录到MCU的DataFlash(为了加大破解难度,可将密钥的位数设置多点,数据设置复杂点),下图为通过ICP工具烧录程序的一个示意图:MCU烧录程序后,首次上电时,首先读取DataFlash指定位置的密钥,并判断是否与之前烧录的密钥一致,以此来判断该MCU是否是第一次运行。
若是第一次运行,首先擦除DataFlash的密钥,然后读取MCU的UID码并进行加密运算,然后将加密运算后的结果(即密码)存储到DataFlash的指定位置;若不是第一次运行,读取MCU 的UID码并进行加密运算,然后将加密运算后的结果与DataFlash指定位置的密码进行比较。
若比较结果一致,则解密通过,程序往下正常运行;若不一致,则解密不通过,程序进入死循环。
相应程序流程图如下:使用这种加密方法有以下两个优点:1、烧录程序时,不用制作专门的,可以生成加密数据的烧录器对芯片进行烧录,芯片首次运行时会自动生成加密数据;2、若客户的产品需要在用户端可以通过串口等升级程序,用这种加密方法,可以保证把程序发给客户升级,客户将该程序烧录到其他同种类型的芯片上是不能正常运行的。
当然使用这种加密方法也有个缺点,就是必须保证产品出厂前MCU已运行过一次,即已将密钥擦除并已生成加密数据。
单片机程序中利用ID号进行ID号加密

单片机程序中利用ID号进行ID号加密单片机程序中使用ID加密在单片机程序设计中,使用ID加密是目前比较流行的手段,其中最有代表的就是STC单片机,只要能见到STC的广告就可以看到他们关于加密的宣传,从STC开始销售单片机就宣传他们的产品无法解密,但是往往是最好解密的单片机,比如STC89系列单片机解密,是51单片机里最容易解密的,可以直接用软件读出程序,STC在其它技术上没有看到多大的宣传,但是在无法解密上是随处宣传,可见下了一饭工夫。
例如目前在其网站上宣传的:采用宏晶第6代加密技术,有全球唯一ID号无法解密,性能更好,大批量稳定生产STC10xx系列/STC11xx 系列STC12C5Axx/STC12C52xxSTC12C56xx系列请优先选择使用,管脚直接兼容传统8 9C/S系列,解决了全球传统89系列单片机全部都已被轻易解密的问题,老产品继续生产。
这只是商家的一种销售手段,其实目前STC所有单片机都可以解密,虽然宏晶公司下了一翻苦心,连编程器都没有读芯片的功能,但是作为解密工程师自己开发了解密工具,可以读STC的单片机程序。
例如在ST C单片机写入以下代码就可以实现了ID加密:unsigned char idata *p;unsigned char i;unsigned char idata id[7];i = 0;for(p=0xf1; p<=0xf7; p++) id[i++] = *p;有的单片机不具有STC宣传的那样的全球唯一的ID号,是不是就不能采用ID加密了呢?答案是否定的。
比如很多设计者采用了DLASS 的DS18B20,这个18B20虽然是个温度传感器,但是具有唯一ID,如果把DS 18B20和单片机连接,让单片机去验证DS18B20的ID,这样也可以实现唯一ID加密,即使把单片机解密了,拷贝后直接无法使用。
使用了ID加密可以提高解密的难度,但是不是无法解密,很多公司的的宣传只是一种夸张,什么世界第一、无法解密。
新唐数字电源控制 MCU 说明书

行销应用处处长电源的周边环境–使用场景增多通过减少用电量和提升电源的使用效率为社会可持续发展做贡献家用储能和应急储能EV 充电数据中心工业储能系统基站工业设备电源plantpower plantgrid connectionsystemvehicle (EV)Base Station Data CenterStorage Battery UtilizationAGV电机控制虚拟电厂的引入和扩张新唐电源控制技术的历史路线图160MHz Arm CM7 高精度PWM120MHz Arm CM4F1998年带传感器正弦波控制单电阻采样FOC 控制(2 路)转换器控制(3 路)多级控制1st Gen Inv MCU2nd Gen Inv MCU3rd Gen Inv MCU4th Gen Inv MCU4.5th Gen Inv MCU5th Gen 电源控制MCU6th Gen 电源控制MCU单电阻采样FOC 控制(3 路)单电阻采样FOC 控制(1 路)2020年60MHz/120MHz 内置变频运算单元40MHz 矩阵式的转换控制业界首创60MHz 安全功能电机控制业界首创业界首创电源控制在通过尖端技术实现高性能和低能耗领域积累20年以上的经验新唐数字电源控制MCU 的特点电源控制系统高性能MCU (Cortex®-M7/M4)高速的计算和校准高速, 高精度ADC(业界领先)转换时间0.2us*12-bit 3unit抗干扰能力强独特的噪声抑制电路技术驱动(PWM)检测(ADC)高精度PWM(业界领先)精度高达208ps*参考软件控制软件积累了很多年经验Si/SiC/GaN高速环*: Functions and specifications vary depending on the product.数字电源控制MCU 目标市场EV 快充太阳能逆变基站储能系统服务器电源为数字电源控制提供最好的MCU ACDC/DCAC/DCDC第五代产品介绍KM1M7AF 系列CPU 性能Cortex®-M7 160 MHz 浮点运算单精度&双精度FLASH/Data MAX 512 KB / 64 KBSector 0/1 支持可以切换ADC 12-bit / 0.5us(2 Msps) / 3unit PWM 精度208ps集成模拟外设差分运放&比较器安全功能Memory 错误矫正、时钟错误检测、AD 失败诊断供电5V 供电采用高性能的Arm® Cortex®-M7 CPU 核(5.01 Core Mark/MHz)通过高速& 高精度的模拟功能为马达和数字电源控制提供最优的产品通过同时可读写FLASH 的功能实现内置EEPROM1电源控制Cortex-M7FPU,MPU 160MHzI-Flash ~512KBI-RAM 64KB16-bit TimerUART/SPI/I2C/SMBusMatrix converter controlComplementary output PWM ×12unitcomparatorFB control assist hardwareD-RAM 32KB D-RAM 32KBITCM 64DTCM 32I$4KB64D-Flash 64KB direct memoryaccessAHBP 3210bit / 8bit DAC12-bit ADCOscillatorPLLclock Monitor Functional Safety (ECC, CRC, etc.)D$4KBDifferential input amplifier144/100 pinCAN FDAXIM64-bit Bus Matrix 32-bit Bus MatrixDTCM 32第六代产品KM1M7CF 系列CPU 性能Cortex®-M7 160 MHz 浮点运算单精度&双精度FLASH/DataMAX 256 KB ×2Bank / 64 KB ADC 速度12bit / 0.2us(5 Msps)/ 3unitPWM 精度208ps内置模拟功能12-bit DAC, 比较器特性Memory 错误矫正、时钟错误检测、AD 失败诊断安全功能安全启动、真随机数发生器、加密引擎, etc.供电3.3V 单路供电采用高性能的Arm® Cortex®-M7 核CPU (5.01 Core Mark/MHz)通过高速& 高精度的模拟功能为马达和数字电源控制提供最优的产品通过2Bank Flash 和安全保护功能实现软件更新的保护2电源控制Cortex®-M7 160MHzFPU,MPU I$4KBD$4KB32DTCM 32D-RAM 32KB D-RAM 32KBI-RAM 64KB64ITCM I-Flash 256KBD-Flash 32KBI-Flash 256KBAXIMAHBPOscillator PLL Functional SafetyECC, Write Protect,Clock Monitor, WDT, LVD,ADC Fault Diag.HIRC 1HIRC 2SWDSecurity FunctionSecure Boot,TRNG, AES, SHA64-bit Bus Matrix64direct memoryaccess32-bit Bus Matrix16bit Timer x 12For power control PWM x 6pairs RTCFeedback controlassist12-bit DAC x 12For comparator For external output32External InterruptGPIO I2C SMBus 3.0CAN FD UART (LIN)SPI12bit ADC x 3Comparator ×6pairs 80/64/48/32 pin数字电源控制参考方案控制板~1kW ~ 1kW1kW 1.5kW3kW~10kW~DCACDCDCACDC矩阵式转换ACAC1kW~3kW compatibleBidirectional inverter(Grid-connected)1kW~3kW compatibleBidirectional converter LiBcontrolhigh efficiencyTP-PFC (GaN)15 kWMatrix converter(EV quick charge)Power supplies for wirelesspower transmission(Storage Battery Control)Power supplies for wirelesspower transmission(Storage Battery Control)Power supplies for wirelesspower transmission(Storage Battery Control)matrix converterControl BoardCortex®-M7 (with FPU)PWM output port for gate (max. 4ch)Insulation voltage sensor (3ch)24V power supply for cooling fanCortex®-M7 (with FPU)PWM output port for gate (max. 16ch)Insulation voltage sensor (5ch)24V power supply for cooling fanCortex®-M7 (with FPU)PWM output port for gate (12ch)Equipped with a flow diversioncontrol systemPC AppsPC Apps3kWLLC ConverterUnder development6kWCLLC ConverterUnder development方案菜单•马达控制的应用手册•电源控制的应用手册•驱动层参考控制软件•IEC60730, etc.开发工具软件支持硬件Digital power control solution •合作开发•技术支持(现场支持、QA 、技术培训)•控制MCU •MCU 评估板•参考设计评估板•集成开发环境•开发工具•基于模式控制的开发工具Q&A 快速响应,1 个工作日内回复开发周期的减少软件品质的提升最少的维修快速的本地技术支持辅助开发的工具编码功能校验设备校验系统校验功能设计系统设计+-2) Model –Based 模块化的开发工具Model-based design support + block setsC 语言代码自动生成4) RAM 监控工具3) 集成的开发环境调试工具Debug 示波器Mathworks, Inc.For Matlab®/simulink®*1 Source: https:///jp/products/architectures/arm/i-jet/*2 Source: https:///store/debug-probes/ulinkpro-debug-adapter?_ga=2.145815538.719634597.1632873814-1854199051. 1610951068/调查原型1) 智能化调试工具NU-Link2-PROI-Jet ™.IAR EWARMULINKplus Keil® MDK-ARM®(Methylmethacrylate-ARM®)*1*2应用数字电源控制(服务器电源、基站电源、无线电源、FA电源、逆变、V2H 、储能系统等)我们为数字电源应用提供整体的解决方案总结开发工具软件支持硬件如果您想了解更多细节,请登录我们的官网https://C hip S cale P ackageSimple packagingLarger active areaEasily transfer heatLow failure rate超小尺寸封装低阻抗更佳散热性能高品质No Wire产品优势我们专注于CSP 封装MOSFETTWSAR/VR/e-glassSmartphoneTabletWearableSmarthome(Cam,Doorbell)Thermostat Note Book更安全更高效率更省空间CSP MOSFET广泛应用于锂电池保护电路通过CSP 技术优势贡献更安全,更便利的用户体验深耕锂电池市场,市占率首位CSP MOSFET 累计出货量超过115 亿颗20122013201420152016201720182019202020212022&&High PowerCharge…NewShort charging timeLong battery life Small &lightweightStylish designCSP MOSFET 技术优势及价值体现引领更低阻抗性能改善拓展小型化封装技术12V30V 60V耐压(VDS,VSS)电流(IS)50AFor WearableIoTMedicalFor NotebookTabletSmartphone5A20A For AutomotiveCSP MOSFET 产品布局Part♯KFC6B21B70L KFCAB21B30L KFCAB21B50L KFCAB21B10L Unit Outline-Size X ×Y 1.89 x 1.24 2.08 x 1.45 1.96 x 1.84 3.20 x 1.95mm Chip Area 2.34 3.02 3.61 6.24mm2 VSS12121212V VGS±8±8±8±8VRSS(on) Typ.VGS 4.5V 4.2 2.05 1.50.85mΩVGS 3.8V 4.6 2.2 1.60.9mΩVGS3.1V 5.4 2.55 1.9 1.15mΩVGS 2.5V7.4 3.3 2.45 1.55mΩStatusUnder Mass ProductionCSP MOSFET 新产品:用于锂电池保护(新产品)适用于汽车级的小型化器件1.低不良率相比于树脂封装不良率更低2.小封装Small size; 1.2 x 1.2mm3.防止干扰造成的故障Low inductance; L=0.01nH* FR4 board (25.4mm×25.4mm×t1.0mm), Full CuCSP MOSFET 新产品:应用于车载开关电路适用于汽车级的小型化器件https:///products/mosfet/样品2CSP组装技术服务3技术支持4文档5MOSFET 选型Evaluation BoardCut tapeReel-Data sheet -Spice-RoHS/REACH-Mount application note -CSP Advantages -CSP FAQ etc1服务与支持NuDeveloper Ecosystem–Make the engineers’ job easier.。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
新唐MCU通过UID加密的一种方法
新唐的每颗M0/M4芯片内部均有一个96位的唯一ID码(UID),通过该UID码,用户可以对程序进行相应的加密,以保证其他人若拿到其程序,将程序烧录到同种MCU,功能也不能正常运行。
下面介绍一种通过MCU的UID码对程序进行加密的方法。
首先对MCU烧录程序时,需把密钥文件同时烧录到MCU的DataFlash(为了加大破解难度,可将密钥的位数设置多点,数据设置复杂点),下图为通过ICP工具烧录程序的一个示意图:
MCU烧录程序后,首次上电时,首先读取DataFlash指定位置的密钥,并判断是否与之前烧录的密钥一致,以此来判断该MCU是否是第一次运行。
若是第一次运行,首先擦除DataFlash的密钥,然后读取MCU的UID码并进行加密运算,然后将加密运算后的结果(即密码)存储到DataFlash的指定位置;若不是第一次运行,读取MCU的UID码并进行加密运
算,然后将加密运算后的结果与DataFlash指定位置的密码进行比较。
若比较结果一致,则解密通过,程序往下正常运行;若不一致,则解密不通过,程序进入死循环。
相应程序流程图如下:
使用这种加密方法有以下两个优点:1、烧录程序时,不用制作专门的,可以生成加密
数据的烧录器对芯片进行烧录,芯片首次运行时会自动生成加密数据;2、若客户的产品需要在用户端可以通过串口等升级程序,用这种加密方法,可以保证把程序发给客户升级,客户将该程序烧录到其他同种类型的芯片上是不能正常运行的。
当然使用这种加密方法也有个缺点,就是必须保证产品出厂前MCU已运行过一次,即已将密钥擦除并已生成加密数据。