"); //-->
LCSHA204—EncryptRead命令解析
LCSHA204芯片一款兼容ATMEL公司ATSHA204A的国产安全芯片,其操作方式与ATSHA204A相同,本次主要介绍芯片EncryptRead加密读功能,只有当slot config.EncryptRead = 1和slot config.IsSecret = 1时才能进行。加密读是为了防止别人在总线上****到密钥,这里我借用官方文档Atmel-8981的一幅图。
这个流程图其实非常明了,主要步骤如下:
1、首先发送Nonce Command命令,更新TempKey中的值,主机这边根据命令返回的randout来使用SHA-256算法计算出TempKey中的值。
2、发送GenDig Command,Gen Dig 命令中的参数KeyID ,就是slot config.ReadKey,比如说,我们要读取slot1的密钥,而slot config[0].ReadKey 设置为0,那么我们就需要知道slot0中存放的密钥才能读取slot1的密钥,发送完这个命令后如果执行正确,TempKey中的值会被重新计算,而主机需要根据Read Key等一些列参数计算TempKey中的值。
3、执行读命令读取slot区中的值,返回来的内容是经过异或加密的,密钥是第2步计算出来的摘要,也就是说:读回来的值^第二步计算出来的摘要 = 原文。
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。