晚了两年啊哈。我个人理解的,不见得对。欢迎拍砖、共勉。
逆向考虑。解密的方法很多,但是简单点的就是擦除片内的加密锁定位。而加密锁定位,在被烧坏以后,就不具备擦除特性了,也就能保证不被读出了,从而起到加密作用。不能被读出,自然就更不能被写入了(这样就把芯片变成了太监,呵呵)。你烧坏加密锁定位,它就不能再写入了,类似于一次性编程,所以叫它OTP加密方法。(OTP就是一次性编程的意思)
通常为了更好的加密程序,如果用户程序长度大于89C51单片机片内存储器的容量,也可使用OTP模式做加密。具体做法是:
1 按常规扩展一片大容量程序存储器,如27C512(64K)。
2 把关键的程序部分安排在整个程序的前4K中。
3 把整个程序写入27C512,再把27C512的前4K填充为0。
4 把程序的前4K固化到AT89C51中,用OTP模式做加密。
5 把单片机的EA脚接高电平。
这样程序的前4K在单片机内部运行,后60K在片外运行。盗版者无法读出程序的前4K程序,即使知道后60K也无济于事。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
当然,加密的方法很多。比如烧断一根数据总线,它也就无法读出了。(某根总线烧坏之后,它就总是显示输出1,固然就不能正确读出代码了)。
烧总线的方法不如烧加密位的方法好。因为烧总线以后这个芯片,就不能再使用总线接口扩展芯片和存储器,程序的大小也就只能是受片内程序存储器的容量限制了。但不论是烧总线还是烧加密锁定位,都将把芯片变成不可再读出的东东,想再次编程那肯定更是不可能了。所以,要确定无误后,再加密。
然而,破解方法也是有很多的。并不是非得沿着来路返回去才能回家的。你把锁定位或者总线烧坏了,我都不能读出了,那不这样读了。这就提到了更XX的解密方法。把芯片经过去层处理,把存储器进行拍照,然后把照片经过染色处理,把1和0区分读出整理,这样就得到了存储器里的代码(因为代码是以电荷的码点形式存在的)。
当前推荐的有几种方式,安全性由低到高分别为:
方式一,使用加密芯片内部存储的一些数据(通常芯片唯一ID),在程序执行前或过程中做ID验证,判断是否为合法加密IC,如不合法则禁止 *** 作
优点: *** 作简单
缺点:安全性很低,一旦被截获,则芯片失效
方式二
与方式一原理相似,但存储在加密芯片中的为密钥(AES
或者
DES,密钥长度8字节或16字节),程序运行前或运行中,取随机数
由加密芯片和程序本身对随机数加密,验证结果是否相同来判断是否合法。
优点:芯片 *** 作简单
缺点:安全性有缺陷,如果MCU端程序被破解,会导致密钥泄露,芯片失效
方式三
可编程类加密芯片,可将MCU端的部分程序移植到加密芯片中,程序运行时由MCU端程序和加密芯片配合来实现完整程序的执行。
优点:安全性高,MCU端被破解不会影响程序安全性,必须破解加密芯片
缺点:开发略显复杂
综上所述:如想要真正的保护程序,还是建议用可编程类的芯片,安全性好,当前的环境下极难被破解。北京有一家公司在做,LKT4105也支持方式一和方式二,可以尝试一下
传统的加密芯片,都是采用算法认证的方案,他们所鼓吹的是加密算法如何复杂,如何难以破解,却没有考虑到算法认证方案本身存在极大的安全漏洞。我们清楚的知道,单片机是一个不安全的载体,可以说对盗版商来讲,是完全透明的也不 为过,做算法认证,势必要在单片机内部提前写入密钥或密码,每次认证后给单片机一个判断标志,作为单片机执行的一个判断依据,那么盗版商就可以轻松的抓住 这一点进行攻击,模拟给出单片机一个信号,轻松绕过加密芯片,从而达到破解的目的。如果说,要破解芯片内部数据,那么通过传统的剖片、紫外光、调试端口、 能量分析等多种手段,都可以破解。 [4]
采用智能卡芯片平台的加密芯片,本身就可以有效防护这些攻击手段,将MCU中的部分代码或算法植入到加密芯片内部,在加密芯片内部来执行这些程序,使得加密芯片内部的程序代码成为整个MCU程序的一部分,从而可以达到加密 的目的,因为MCU内部的程序不完整,即便被盗版了,由于缺少关键代码,也无法进行复制,那么选择什么样的代码或程序,放入到加密芯片内部,就是考验 MCU编程者的功力了,尽可能的多植入程序,尽可能的增加算法的强度,就可以有效防止被破译的可能。
加密芯片的安全性是取决于芯片自身的安全,同时还取决于加密方案的可靠性。部分公司会给广大客户以误导,过分强调什么算法,无论采用对称算法 3DES 、AES [5] 还是采用非对称算法RSA ECC等,甚至采用国密办算法SM2 SM4等等,都是对防抄板来说,是没有太多的用处的。
对于方案设计公司,是无法使用SM1等国密办算法的,销售国密办算法的厂家必须有销售许可证,这一点是很多方案公司不可能有的,同时认证的方案本身就存在安全隐患,盗版商是不会去破解什么算法,而是从加密方案的漏洞去入手,去攻破,所以说,我们一直强调,加密方案的设计是非常重要的环节,不能简单的只看到加密芯片的自身的安全性,最重要的是密钥管理环节。
目前已知各种公开的加密算法都是比较安全的(当然已被破解的几种算法除外,如:SHA1,DES等),整个加密体系中最薄弱的环节在于密钥的生成、使用和管理。无论使用对称、非对称、哈希散列各种算法,密钥的管理是最终的难题,目前通常的方式是将私钥或者秘密信息存储在非易失性存储器中,这种方式危害极大,不具备高安全性。(具体请参考上面“安全性”内容)
由于PUF的不可克隆性、防篡改和轻量级等属性,使用PUF用于认证是一种非常有用的安全技术,是一种对现有安全加密机制的创新性技术。PUF输出的不可直接读取的唯一值作为私钥,配合非对称加密硬件引擎、随机数发生器、芯片ROM中唯一的unique ID,可以组成一个严密的安全加密装置。
PUF通常用集成电路来实现,通常用于对安全性要求较高的应用中。目前已有众多知半导体名企业开始提供基于PUF的加密IP技术和安全芯片。
ADuC内部的FLASH/EE具有三种安全模式:LOCK MODE, SECURE MODE, SERIAL SAFE MODE。这三种模式的具体区别请参看数据手册。您可以根据需要选择模式。这些安全模式可以通过串行通讯协议使能。
Flash/EE Program Memory Security
The ADuC841/ADuC842/ADuC843 facilitate three modes of Flash/EE program memorysecurity These modes can be independently activated, restricting access to the internal code
space These security modes can be enabled as part of serial download protocol as described in Application Note uC004 or via parallel programming The security modes available on the
parts are as follows:
Lock Mode
This mode locks the code memory, disabling parallel programming of the program memory However, reading the memory in parallel mode and reading the memory via a MOVC command from external memory is still allowed This mode is deactivated by initiating a code-erase command in serial download or parallel programming modes
Secure Mode
This mode locks code in memory, disabling parallel programming (program and verify/read commands) as well as disabling the execution of a MOVC instruction from external memory,which is attempting to read the op codes from internal memory Read/write of internal data Flash/EE from external memory is also disabled This mode is deactivated by initiating a code-erase command in serial download or parallel programming modes
Serial Safe Mode
This mode disables serial download capability on the device If serial safe mode is activated and an attempt is made to reset the part into serial download mode, ie, RESET asserted and deasserted with PSEN low, the part interprets the serial download reset as a normal reset only It therefore cannot enter serial download mode but can only execute as a normal reset sequence Serial safe mode can be disabled only by initiating a code-erase command in parallel programming mode
AT89cxx加密原理
单片机解密简单就是擦除单片机片内的加密锁定位。由于AT89C系列单片机擦除 *** 作时序设计上的不合理。使在擦除片内程序之前首先擦除加密锁定位成为可能。AT89C系列单片机擦除 *** 作的时序为:擦除开始---->擦除 *** 作硬件初始化(10微秒)---- >擦除加密锁定位(50----200微秒)--->擦除片内程序存储器内的数据(10毫秒)----->擦除结束。如果用程序监控擦除过程,一旦加密锁定位被擦除就终止擦除 *** 作,停止进一步擦除片内程序存储器,加过密的单片机就变成没加密的单片机了。片内程序可通过总线被读出。对于 AT89C系列单片机有两种不可破解的加密方法。
一、永久性地破坏单片机的加密位的加密方法。简称OTP加密模式。
二、永久性地破坏单片机的数据总线的加密方法。简称烧总线加密模式。
一、OTP加密模式原理
这种编程加密算法烧坏加密锁定位(把芯片内的硅片击穿),面不破坏其它部分,不占用单片机任何资源。加密锁定位被烧坏后不再具有擦除特性, 89C51/52/55有3个加密位进一步增加了加密的可靠性。一旦用OTP模式加密后,单片机片内的加密位和程序存储器内的数据就不能被再次擦除, 89C51/52/55单片机就好象变成了一次性编程的OTP型单片机一样。如果用户程序长度大于89C51单片机片内存储器的容量,也可使用OPT模式做加密,具体方法如下:
1、按常规扩展一片大容量程序存储器,如27C512(64K)。
2、把关键的程序部分安排在程序的前4K中。
3、把整个程序写入27C512,再把27C512的前4K填充为0。
4、把程序的前4K固化到AT89C51中,用OPT模式做加密。
5、把单片机的EA脚接高电平。
这样程序的前4K在单片机内部运行,后60K在片外运行。盗版者无法读出程序的前4K程序,即使知道后60K也无济于事。
二、炼总线加密模式原理
因为单片机片内的程序代码最终都要通过数据总线读出,如果指导单片机的数据总线的其中一条线永久性地破坏,解密者即使擦除了加密位,也无法读出片内的程序的正确代码。89C1051/2051的数据总线为P1口烧总线模式烧坏89C2051的P10端口,原程序代码为02H、01H、00H。读出的数据则为03H,01H,00H。其中最低位始终为1,读出的程序代码显然为错码。这种加密模式用于加密89C1051/2051单片机。缺点是占用单片机的资源。开发设计人员在设计单片机硬件系统时只要预留出口线P10不用,以后就可用烧总线模式对单片机加密。
以上就是关于51单片机如何进行OTP加密全部的内容,包括:51单片机如何进行OTP加密、加密IC加密方式有哪些、加密芯片的应用等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)