ATSHA204A加密芯片的使用
????????為了防止自己辛辛苦苦開(kāi)發(fā)了產(chǎn)品被別人抄板仿制,我們使用了ATSHA204A的認(rèn)證功能。在應(yīng)用啟動(dòng)的時(shí)候,首先我們要驗(yàn)證PCBA上焊接的ATSHA204A芯片中存放的密鑰是否匹配,如果不匹配將程序掛起;如果密鑰匹配繼續(xù)往下執(zhí)行。如果沒(méi)有ATSHA204A芯片,程序也會(huì)掛起。為了增強(qiáng)破解難度,在程序中重要功能調(diào)用前也都加入密鑰驗(yàn)證操作。
????????ATSHA204A芯片里的數(shù)據(jù)本身是不可復(fù)制的,而我們的目標(biāo)代碼必須配合對(duì)應(yīng)的芯片才能運(yùn)行。即使“壞人”從存儲(chǔ)器中讀出目標(biāo)代碼也不能運(yùn)行,從而達(dá)到防抄板仿制目的。
? ? ? ? 通過(guò)專用編程器,將16組密鑰寫(xiě)入ATSHA204A芯片,并配置好相應(yīng)權(quán)限。PCBA貼片前燒錄好芯片,當(dāng)然你也可以選擇在線燒錄。為了防泄密,最好由專人操作。密鑰一旦設(shè)置就不會(huì)輕易變動(dòng),所以能看到密鑰明文的人越少越安全。我的做法是采用某個(gè)目標(biāo)文件中一段數(shù)據(jù),16組密鑰在源文件中不連續(xù)放置。這樣即使你用二進(jìn)制工具打開(kāi)目標(biāo)文件,密鑰看起來(lái)也會(huì)像是某段程序。驗(yàn)證時(shí)只需指定組編號(hào)而不用密鑰明文。
也許有人有疑惑,解釋一下:
1、能否在I2C總線上截獲密鑰?
? ?——在I2C總線上并沒(méi)有傳送密鑰,而是傳送根據(jù)秘鑰和一組隨機(jī)數(shù)計(jì)算出來(lái)的digest,因此在總線上截獲密鑰不可實(shí)現(xiàn)。
2、在目標(biāo)代碼中包含密鑰,別人從存儲(chǔ)器中讀取目標(biāo)文件后是否有可能得到密鑰?
? ?——目標(biāo)文件中的確實(shí)存有密鑰,但是在一個(gè)幾十MB的二進(jìn)制文件中尋找一組32字節(jié)的密鑰,豈不是大海撈針?
3、是否有破解的可能?
? ?——對(duì)于一些小單片機(jī)(51之類的),的確好破,反匯編后,跳過(guò)驗(yàn)證步驟即可。但是對(duì)于功能強(qiáng)大的MPU,就算你能反匯編,也得找出驗(yàn)證步驟在哪里。因此,只要密鑰不泄露,要破解相當(dāng)困難。
總結(jié)
以上是生活随笔為你收集整理的ATSHA204A加密芯片的使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: flow_from_directory返
- 下一篇: Android 4.2系统的手机使用LE