在抄板解密行業(yè)越來(lái)越為人所熟悉的今天,工程師們?cè)O(shè)計(jì)產(chǎn)品的同時(shí)會(huì)更加的重視產(chǎn)品的加密,因此市面上眾多的加密芯片,防抄板芯片就出現(xiàn)了,例如ATSHA204系列,AT88系列,LKT4100系列,DS28E01系列,韓國(guó)的ALPU系列,TI的BQ26100等等。
我公司專(zhuān)注研究各種加密芯片,各種單片機(jī)的結(jié)構(gòu)和匯編指令,免費(fèi)反匯編,對(duì)市面上各種加密芯片都有破解的成功案例,近日應(yīng)客戶要求成功破解了DS28E01芯片,歡迎廣大客戶來(lái)電咨詢(xún)。
 
簡(jiǎn)單介紹DS28E01:
DS28E01通過(guò)1條單總線與MCU通信,單總線不多說(shuō)了,要求時(shí)間非常嚴(yán)格,精確到us級(jí)別。
DS28E01有四個(gè)存儲(chǔ)區(qū):
數(shù)據(jù)存儲(chǔ)器(EEPROM)(共分4頁(yè),每頁(yè)32個(gè)字節(jié))
密鑰存儲(chǔ)器(secret)(8字節(jié))
含有特定功能和用戶字節(jié)的寄存器頁(yè)(register page)
易失性暫存器(scratchpad)(8字節(jié))
 
MCU通過(guò)單總線只能讀寫(xiě)暫存器,而不能直接讀寫(xiě)其它存儲(chǔ)區(qū)。
向數(shù)據(jù)存儲(chǔ)器寫(xiě)數(shù)據(jù)、載入初始密鑰或者向寄存器頁(yè)寫(xiě)數(shù)據(jù)時(shí),先把數(shù)據(jù)寫(xiě)入暫存器,然后通過(guò)相應(yīng)的命令,讓芯片自行從暫存器拷貝數(shù)據(jù)至目的地址。
 
工作原理:
芯片內(nèi)部有一個(gè)SHA-160加密模塊,參與SHA算法的為55字節(jié)特定格式的數(shù)據(jù),
這些數(shù)據(jù)包含8字節(jié)密鑰,5字節(jié)用戶指定的隨機(jī)數(shù),32字節(jié)EEPROM內(nèi)容,7字節(jié)ROMID,2字節(jié)固定數(shù)據(jù)(0xFF)和1字節(jié)EEPROM的地址TA1。
MCU可以讀取芯片通過(guò)SHA加密后的20字節(jié)哈希值,并與MCU自己通過(guò)同樣的算法計(jì)算出的哈希值進(jìn)行比對(duì)。
既然MCU要進(jìn)行同樣的加密操作,要么肯定要生成與芯片內(nèi)部完全相同的55字節(jié)消息,怎么得來(lái)的呢?
8字節(jié)密鑰是自己生成并寫(xiě)進(jìn)去的.               ->OK
5字節(jié)隨機(jī)數(shù)是在芯片執(zhí)行SHA之前寫(xiě)進(jìn)暫存器的值.   ->OK
32字節(jié)EEPROM數(shù)據(jù),在讀回20字節(jié)哈希值之前,芯片會(huì)傳回這32字節(jié)內(nèi)容。 ->OK
7字節(jié)ROMID,可以在任何時(shí)候讀到芯片的ROMID.   ->OK
2字節(jié)固定值,看手冊(cè)可以知道   ->OK
1字節(jié)TA1,自己寫(xiě)進(jìn)去的.   ->OK
 
典型應(yīng)用過(guò)程:
過(guò)程一:初始化DS28E01密鑰
初始化密鑰只在產(chǎn)品出產(chǎn)前在工廠進(jìn)行操作,只需要操作一次即可。
程序流程:
1.讀取芯片ROMID
2.通過(guò)一定的算法生成一個(gè)唯一的64位的密鑰,保證每塊主板產(chǎn)生的密鑰各不相同。
3.將密鑰寫(xiě)入芯片暫存區(qū),并讀回驗(yàn)證寫(xiě)入是否正確
4.執(zhí)行芯片加載密鑰命令,讓芯片將暫存區(qū)中的64位密鑰保存至密鑰存儲(chǔ)區(qū)
5.完成。
 
過(guò)程二:驗(yàn)證DS28E01密鑰
驗(yàn)證密鑰是在產(chǎn)品應(yīng)用程序中進(jìn)行,每次啟動(dòng)產(chǎn)品時(shí)都會(huì)驗(yàn)證DS28E01密鑰是否正確,
驗(yàn)證通過(guò)則正常運(yùn)行,驗(yàn)證不正確則通過(guò)一定手段讓產(chǎn)品工作不正常。
程序流程:
1.讀取芯片ROMID
2.通過(guò)與初始化過(guò)程中相同的算法,生成64位密鑰
3.向芯片暫存區(qū)寫(xiě)入8字節(jié)隨機(jī)數(shù)(只用到其中5個(gè)字節(jié)),并讀回驗(yàn)證
4.向芯片發(fā)加密認(rèn)證命令,可以讀回32字節(jié)EEPROM數(shù)據(jù)和20字節(jié)哈希值
5.用上面讀到數(shù)據(jù),生成55字節(jié)摘要消息,并進(jìn)行SHA1運(yùn)算
6.比較自己計(jì)算出的哈希值和從芯片讀回的哈希值是否一致