文章分类

当前位置:首页>技术文章>案例DS28E01典型应用及破解方法

案例DS28E01典型应用及破解方法

一直以来对于 DS28E01 系列的芯片解密经常被客户咨询,对此我们公司工程技术部把 DS28E01 芯片解密,作为典型案例来向广大客户进行详细解读。目前我公司专业提供 1、各类软件狗破解如: 并口加密狗,USB 加密狗,license 破解;

2、无源码修改软件功能、破解后软件二次加密,并重新包装;

3、注册码破解,一次破解终身享用;4、提供加密锁改版服务;5、PCB 抄板、生产、加工一条龙服务。 DS28E01 一般应用在加密保护,防止产品被轻易 copy 盗版。 第一种最流行的就是反汇编了,将主控芯片的代码反编译,然后找到加密验证的代码,直接跳过去,或者给修改内存 RAM 强制验证合法,这种方法很有效但是很复杂,要求破解人员对各种单片机和控制器的汇编指令,芯片构架,加密芯片的使用方法,开发工具都很精通,还有一个就是从商业角度考虑可操作性不高,因为没有完成破解之前谁都无法保证能不能破解,但是先要拿到解密的机器码,客户要拿到机器码就需要先出破解芯片的费用,最后不管成功与否客户的解密费用都花掉了。

第二种方法就是模拟验证时候的通信波形,慢速的可以用单片机模拟,高速的通信协议就只能用 CPLD 了,但是在时候这种方法之前就要做一个工作就是要让主控芯片每次都产生相同的随机数。 简单介绍 DS28E01:DS28E01 通过 1 条单总线与 MCU 通信,单总线不多说了,要求时间非常严格,精确到 us 级别。DS28E01 有四个存储区:数据存储器(EEPROM)(共分 4 页,每页 32 个字节)密钥存储器(secret)(8 字节)含有特定功能和用户字节的寄存器页(register page)易失性暂存器(scratchpad)(8 字节) MCU 通过单总线只能读写暂存器,而不能直接读写其它存储区。

向数据存储器写数据、载入初始密钥或者向寄存器页写数据时,先把数据写入暂存器,然后通过相应的命令,让芯片自行从暂存器拷贝数据至目的地址。 工作原理:芯片内部有一个 SHA-160 加密模块,参与 SHA 算法的为 55 字节特定格式的数据,这些数据包含 8 字节密钥,5 字节用户指定的随机数,32 字节 EEPROM 内容,7 字节 ROMID,2 字节固定数据(0xFF)和 1 字节 EEPROM 的地址 TA1。MCU 可以读取芯片通过 SHA 加密后的 20 字节哈希值,并与 MCU 自己通过同样的算法计算出的哈希值进行比对。

既然 MCU 要进行同样的加密操作,要么肯定要生成与芯片内部完全相同的 55 字节消息,怎么得来的呢?8 字节密钥是自己生成并写进去的. ->OK5 字节随机数是在芯片执行 SHA 之前写进暂存器的值. ->OK32 字节 EEPROM 数据,在读回 20 字节哈希值之前,芯片会传回这 32 字节内容。 ->OK7 字节 ROMID,可以在任何时候读到芯片的 ROMID. ->OK2 字节固定值,看手册可以知道 ->OK1 字节 TA1,自己写进去的. ->OK 典型应用过程:过程一:初始化 DS28E01 密钥初始化密钥只在产品出产前在工厂进行操作,只需要操作一次即可。程序流程:

1.读取芯片 ROMID2.通过一定的算法生成一个唯一的 64 位的密钥,保证每块主板产生的密钥各不相同。

3.将密钥写入芯片暂存区,并读回验证写入是否正确 4.执行芯片加载密钥命令,让芯片将暂存区中的 64 位密钥保存至密钥存储区 5.完成。 过程二:验证 DS28E01 密钥验证密钥是在产品应用程序中进行,每次启动产品时都会验证 DS28E01 密钥是否正确,验证通过则正常运行,验证不正确则通过一定手段让产品工作不正常。程序流程:

1.读取芯片 ROMID2.通过与初始化过程中相同的算法,生成 64 位密钥 3.向芯片暂存区写入 8 字节随机数(只用到其中 5 个字节),并读回验证 4.向芯片发加密认证命令,可以读回 32 字节 EEPROM 数据和 20 字节哈希值 5.用上面读到数据,生成 55 字节摘要消息,并进行 SHA1 运算 6.比较自己计算出的哈希值和从芯片读回的哈希值是否一致破解方法:从上面的应用过程可以看出,这里的关键算法是 SHA1,而参与 SHA 计算的数据有两份,一份在芯片内部,我们是无法读出的,但是另一份却是在 MCU 内部生成的,所以只要获取到 MCU 内部生成消息的过程就完成了破解。

而其中关键数据是 8 字节的密钥,因为这 8 字节密钥是一般情况是绑定的 ROMID 和 CPUID 的,因此只要能从程序中分析出密钥生成算法就可以达到破解的目的,这个过程只是时间问题。 结论:加密芯片并没有什么卵用,再复杂的加密算法也只是增加了破解的难度,并不能从根本上解决问题。防止产品被破解和盗版的唯一方法只有一个:那就是防止从产品中读取到正确二进制代码。可惜目前还没有什么芯片的 FLASH 内容是不能读出来。

加密与解密就像矛与盾,是一对永恒的对立面,此增彼长,无穷无尽。


© 星光电子技术工作室 2021 All Rights Reserved.
如有任何问题、建议、业务、合作,请联系手机/微信:13713820066