LCSHA204芯片是一款兼容ATMEL公司ATSHA204A的國產(chǎn)安全芯片,其操作方式與ATSHA204A相同,本次主要介紹芯片EncryptRead加密讀功能。只有當(dāng)slot config.EncryptRead = 1和slot config.IsSecret = 1時才能進(jìn)行。加密讀是為了防止別人在總線上嗅探到密鑰,這里我借用官方文檔Atmel-8981的一幅圖。
圖片1.png (69.76 KB, 下載次數(shù): 38)
下載附件
2022-1-6 15:18 上傳
這個流程圖其實非常明了,主要步驟如下:
1、首先發(fā)送Nonce Command命令,更新TempKey中的值,主機這邊根據(jù)命令返回的randout來使用SHA-256算法計算出TempKey中的值。 2、發(fā)送GenDig Command,Gen Dig 命令中的參數(shù)KeyID ,就是slot config.ReadKey,比如說,我們要讀取slot1的密鑰,而slot config[0].ReadKey 設(shè)置為0,那么我們就需要知道slot0中存放的密鑰才能讀取slot1的密鑰,發(fā)送完這個命令后如果執(zhí)行正確,TempKey中的值會被重新計算,而主機需要根據(jù)Read Key等一些列參數(shù)計算TempKey中的值。 3、執(zhí)行讀命令讀取slot區(qū)中的值,返回來的內(nèi)容是經(jīng)過異或加密的,密鑰是第2步計算出來的摘要,也就是說:讀回來的值^第2步計算出來的摘要 = 原文。
|