简单介绍DS28E01:
DS28E01通过1条单总线与MCU通讯,单总线不多说了,要求时间特别很是严酷北京网页设计,正确到us级别。它有四个存储区:数据存储器(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字节密钥是本身生成并写进去的. ->OK
5字节随机数是在芯片实行SHA之前写进暂存器的值. ->OK
32字节EEPROM数据,在读回20字节哈希值之前,芯片会传回这32字节内容。 ->OK
7字节ROMID,可以在任何时候读到芯片的ROMID. ->OK
典型应用过程:
过程一:初始化DS28E01密钥
初始化密钥只在产品出产前在工厂进行操作,只必要操作一次即可。
程序流程:
1.读取芯片ROMID
2.通过肯定的算法生成一个唯一的64位的密钥淄博网站建设,保证每块主板产生的密钥各不雷同。
3.将密钥写入芯片暂存区,并读回验证写入是否精确
4.实行芯片加载密钥饬令凤岗公司注册,让芯片将暂存区中的64位密钥保存至密钥存储区
5.完成。
过程二:验证DS28E01密钥
验证密钥是在产品应用程序中进行,每次启动产品时都会验证DS28E01密钥是否精确,验证通过则正常运行,验证不精确则通过肯定手段让产品工作不正常。
程序流程:
1.读取芯片ROMID
2.通过与初始化过程中雷同的算法,生成64位密钥
3.向芯片暂存区写入8字节随机数(只用到其中5个字节),并读回验证
4.向芯片发加密认证饬令,可以读回32字节EEPROM数据和20字节哈希值
5.用上面读到数据,生成55字节择要新闻,并进行SHA1运算
6.比较本身计算出的哈希值和从芯片读回的哈希值是否同等
2字节固定值,看手册可以知道 ->OK
1字节TA1,本身写进去的. ->OK
破解方法:
从上面的应用过程可以看出,这里的关键算法是SHA1,而参与SHA计算的数据有两份,一份在芯片内部,我们是无法读出的,但是另一份却是在MCU内部生成的,所以只要获取到MCU内部生成新闻的过程就有破解的可能性。而其中关键数据是8字节的密钥,由于这8字节密钥是一样平常情况是绑定的ROMID和CPUID的,因此首先必须要能从芯片中读取到程序的二进制代码, 再通过反汇编并分析出密钥生成的算法才能达到破解的目的,然而反汇编分析出算法也是相称不容易的。
结论:加密芯片+MCU的珍爱方案虽然从原理上是可以破解的,再复杂的加密算法也只是增长了反汇编破解的难度,并没有从根本上解决题目。然而也可以通过设计出复杂度较高的密钥管理算法,照旧可以进步破解的难度,从而进步破解成本,让对手摒弃克隆出你的产品。从根本上防止产品被破解/盗版的方法只有一个:那就是防止从产品中读取到精确二进制代码。