在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中,留下验证。别的,假如某一个模块既要作为承受暗码的接口,又有其他的用处,也应该留有一个交互界面,在运用前让用户挑选该模块的用处。
长途加解密:在许多场合,用户关于单片机的操控是经过以太网等介质长途完结的,只需有相应的接口程序,可以长途对单片机进行加解密,这无疑会给用户的作业带来很大的便利。
来历;21ic