当前位置:首页 > 单片机 > 单片机
[导读]在HCS12系列单片机中,加密可以分成两种方法:完全加密和使用密码的加密。这两种加密的方法根据用户的需求,使用的场合也有所不同。  完全加密  所谓完全加密,就是将芯片彻底的保护起来,屏蔽对芯片的所有读操作

在HCS12系列单片机中,加密可以分成两种方法:完全加密和使用密码的加密。这两种加密的方法根据用户的需求,使用的场合也有所不同。

  完全加密

  所谓完全加密,就是将芯片彻底的保护起来,屏蔽对芯片的所有读操作。在MC9S12DP256单片机中,加密是通过对某一Flash单元($FF0F)编程来实现的。加密后的芯片,BDM编程器对Flash的读操作就被禁止了。

  采用完全加密,读取ROM代码的可能性就不存在了,这是一种最为“安全”的加密方法。如果用户

  想修改ROM的内容,唯一的办法就是将Flash的内容全部擦除,这一操作可以通过BDM编程器来完成。

  使用BDM编程器擦除Flash ROM和EEPROM的过程与在普通模式下对片内的Flash ROM擦除操作过程基本一样,区别是对寄存器或是存储单元的读写要改由BDM命令来实现。通过BDM编程器将一连串完整的擦除指令序列送给单片机,就可将Flash ROM和EEPROM的内容全部擦除了。

  在全擦除操作完成后,BDM编程器将系统复位,系统会自动检查全擦除操作是否成功。如果成功,BDM状态寄存器的UNSEC位会自动置“1”,系统进入解密状态。

  由于系统靠检查Flash ROM和EEPROM是否清空来决定系统是否保持加密状态,所以,如果用户程序偶然将Flash ROM和EEPROM的内容全部擦除,那么系统也将自动解密。

  使用密码的加密

  为了留有读取ROM代码的可能,用户可以采用一种带有密码的加密方式。解密时,用户只要给出正确的密码(称为“后门密码”),就可以读写ROM,而不破坏其内容了。

  使用这种方法,用户需要在加密之前,设定4个字长的密码,并将其存放在Flash中,MC9S12DP256存放密码的Flash地址是从$FF00到$FF07。设定的密码可以随用户程序一起下载到芯片中。

  解密时,接受用户输入的密码并验证的工作只能由一个用户接口程序来完成的,不能使用BDM编程器。接口的方式没有限制,如SCI、SPI、IIC、MSCAN等等,只要用户能够将正确的密码输入,任何一种接口方式都是可以的,最为典型的接口是串口。

  假设接收的密码存在变量KEY0-KEY7中,验证密码的程序如下:

  ******************

  * TEST KEYS

  ******************

  TESTKEYS

  BSET FCNFG,$20 ;置KEYACC为1

  LDD KEY0

  STD $FF00

  LDD KEY2

  STD $FF02

  LDD KEY4

  灵活使用带密码的加密解密方法

  通过研究我们发现,使用带有密码的加密方式,看似给破解代码留有了可能性,但因为接受和验证密码都需要由用户程序完成,只要用户程序设计的可靠,这种可能性是很小的。

  为了增强用户接口程序的可靠性和灵活性,我们提出以下几种可能的设计思路:

  针对穷举密码的对策:MC9S12DP256的密码长达8个字节,如果不将密码限定在ASCII码的范围内,那么可以选择的密码数量将达到1.8*1019 种。为了防患破解者穷举密码,用户可以设定允许输入错误密码的次数,如果出错超过一定次数,接口程序就不再接收新的密码了。允许出错的次数可以根据安全需要和使用方便综合考虑。

  灵活的对外接口:使用密码加解密时,用户程序使用的对外接口是没有任何限制的。本文中的串口程序只是一例,MC9S12DP256片内集成了众多的接口模块,如SCI、SPI、IIC、MSCAN、J1850等等。使用哪一个接口,用户可以根据方便和安全考虑自己选择,这样也会使破解者难以入手。

  用户程序级密码验证:用户还可以给接口程序增设一级密码验证的步骤。只有通过该密码验证,才能进一步输入解密的密码。因为加密后,Flash ROM就无法读写了,用户程序可以将增设的密码也保存到Flash中,留待验证。另外,如果某一个模块既要作为接受密码的接口,又有其他的用途,也应该留有一个交互界面,在使用前让用户选择该模块的用途。

  远程加解密:在很多场合,用户对于单片机的控制是通过以太网等介质远程实现的,只要有相应的接口程序,能够远程对单片机进行加解密,这无疑会给用户的工作带来很大的方便。

 

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭