摘要: 设备的DeepCover 安全认证器实现先进的物理安全,提供最终的经济高效的IP保护,克隆预防和外设认证。本应用笔记介绍了一个验证器(DS28E50)和一个协处理器(DS2477)。它解释了基于sha -3的安全系统的一般逻辑,并说明了在实际应用程序中使用身份验证器和协处理器来执行主服务器和从服务器的相互身份验证。
随着计算机技术的进步,客户要求更高的安全性。Devices的答案是具有1线 ,SHA-3和用户EEPROM的DeepCover 安全认证器DS28E50和具有1线主功能的DS2477 SHA-3协处理器。
安全认证系统实现示意图
DS28E50支持256位的挑战大小,并使用256位的密钥。每个1-Wire从属设备都有一个唯一的64位ROM ID,它作为1-Wire网络中的节点地址,是身份验证的基本要素。DS28E50的功能命令包括一般的内存读/写访问,以及从机对主机的身份验证和主机对从机的身份验证进行写访问的安全功能。内存被分成32字节的页,并允许用户在内存页上设置保护。有关设备命令、内存映射和可用内存保护的描述,请参阅DS28E50安全用户指南。
DS2477安全I(2)C协处理器内置1-Wire主处理器,将符合FIPS 202的安全散列算法(SHA-3)挑战与响应认证与Devices的专利ChipDNA 功能结合在一起,这是一种物理上不可克隆的技术,具有抵御安全攻击的终极保护。
基于sha的安全性依赖于从开放数据和秘密计算的哈希消息认证码(hmac)。为了验证真实性,双方(即主机或协处理器和1-Wire验证器)必须知道该秘密,该秘密永远不会暴露。此外,每个1-Wire身份验证器中的秘密应该是唯一的。这样,即使单个身份验证者的秘密被泄露,整个系统的安全性也不会受到影响。
乍一看,似乎不可能满足这些要求。然而,有一个简单的解决方案:在一个可信的位置根据已知的成分计算秘密。这些成分是主秘密(32字节)、绑定数据(32字节)、部分秘密(32字节)、验证者的ROM ID(8字节)和填充/格式化(“其他数据”)。尽管在某个时间点暴露了成分,但计算出的秘密永远不会暴露,并保持隐藏。
协处理器设置只涉及主处理器和协处理器之间的通信。主秘密、绑定数据和部分秘密应该作为随机数生成。一旦定义了这些成分的值,这些值就适用于整个系统。要在系统中被识别为可信的,必须使用相同的值设置所有协处理器和验证器。表1显示了执行设置所涉及的主机活动和协处理器命令。
流 | 主机控制器步骤 | |||||
1. 安装主密码a * | 1. 写内存:第4页,secret[32字节] | |||||
2. 将唯一的随机数据放入主秘密B(未使用)。 | 2. Data = Read RNG: 32字节 3.写内存:第5页,数据[32字节] | |||||
3.对主秘密A和主秘密B设置WP+RP保护。 | 4. 设置页面保护:第4页,WP+RP 5. 设置页面保护:第5页,WP+RP | |||||
4. 安装部分秘密到页0.* | 6. 写内存:页0,部分秘密[32字节] | |||||
5. 将绑定数据安装到第1页* | 7. 写内存:第1页,绑定数据[32字节] | |||||
6. 在第0页和第1页设置“WP+RP”保护。 | 8. 设置页面保护:0页,WP+RP 9. 设置页面保护:第1页,WP+RP | |||||
*如果需要生成这些值,请在DS2477或任何真随机数生成器上使用read RNG命令。有关命令的详细信息,请参阅DS2477安全用户指南 |
验证器的设置类似于协处理器的设置。表2显示了执行设置过程中涉及的步骤序列和身份验证器命令。在将主秘密和绑定数据保存到验证器中之后,将部分秘密提供给验证器的计算和锁定SHA-3秘密命令。计算和锁定SHA-3秘密命令最终生成并安装验证者的唯一秘密,从而覆盖主秘密。DS28E50可以使用任何1线母线进行设置。本应用程序说明假设DS2477 1-Wire主机将用于设置DS28E50。
流 | DS2477 | DS28E50 |
1. 写入主密码(与DS2477中的主密码A相同) | 完整命令序列 | 写内存:第6页,secret[32字节] (与DS2477第4页相同的秘密) |
2. 将绑定数据写入第0页(与DS2477相同) | 完整命令序列 | 写内存:第0页,绑定数据[32字节](与DS2477第1页相同) |
3.生成并保存唯一的从属秘密 | 完整命令序列 | 计算并锁定SHA-3秘密:第0页(绑定数据),保护/秘密参数= 0x80,部分秘密[32字节](与DS2477相同) |
4. 用特征数据覆盖第0页中的绑定数据 | 完整命令序列 | 写内存:第0页,特征数据[32字节] |
5. 在第0页设置WP保护(可选) | 完整命令序列 | 设置页面保护:页面0,WP |
*请参阅DS2477安全用户指南和DS28E50安全用户指南的命令详细信息。本例使用第0页进行身份验证。 |
在主机验证验证者是否属于系统之前,必须在协处理器内部重新创建验证者的唯一秘密(S-Secret)。表3显示了执行协处理器计算和锁定SHA-3秘密所涉及的I(2)C命令。协处理器已经知道主秘密、绑定数据和部分秘密。需要的其他数据是验证者的ROM ID和制造商ID。如果在1-Wire总线上有多个验证器,则不适用Read ROM命令。相反,必须使用搜索ROM序列,一次识别一个1-Wire设备。术语“定制数据”指的是验证器的ROM ID、制造商ID和页码(或0x80),其中绑定数据位于验证器中。
(开始) |
Tx: I(2)C地址(写) |
Tx:协处理器计算和锁定SHA-3秘密(0x3C) |
Tx:写长度字节(13) |
Tx:参数字节1页选项:0x89 |
Tx:参数字节2秘密选项:0x08 |
Tx:自定义(11字节):ROM ID(8字节),(page* | 0x80)(1字节,从绑定数据页),MAN ID(0)(1字节),MAN ID(1)(1字节) |
(停止) |
(延迟,tRM tCMP + tWM + + tRM + tRM) |
(开始) |
Tx: I(2)C地址(读) |
Rx:读取长度字节(1) |
Rx:结果字节 |
(停止) |
*页面= 0x00 |
表4显示了在使用DS2477协处理器的给定系统中验证验证者真实性所需的步骤序列。
流 | DS2477 | DS28E50 |
1. 1线搜索找到DS28E50的ROM ID | 机的搜索 | N/A |
2. 读取DS28E50 ROM选项页以获取ROM ID和MAN ID | 完整命令序列 | 读内存(第7页) |
3.发送DS2477完全认证 | 完全身份验证(见表5) | 请参阅DS2477安全用户指南第8页和第9页,了解有关Full Authenticate命令发送到DS28E50的详细步骤 |
4. 用特征数据覆盖第0页中的绑定数据 | 完整命令序列 | 写内存:第0页,特征数据[32字节] |
5. 在第0页设置WP保护(可选) | 完整命令序列 | 设置页面保护:页面0,WP |
*请参阅DS2477安全用户指南和DS28E50安全用户指南的命令详细信息。本例使用第0页进行身份验证。 |
要用通用主机验证DS28E50(即验证验证者),主机需要知道验证者的一个内存页的数据。然后,验证者收到来自主机的质询,并指示验证者计算页面HMAC并将其发送给主机进行验证。一旦主机知道了页面的HMAC,它就会使用相同的数据计算一个HMAC。如果两个HMAC结果相同,则主机中的S-Secret与身份验证器中的唯一秘密匹配,从而确认身份验证器是系统的一部分。所有这些过程都可以通过DS2477上的一个完整身份验证命令来处理。有关所需的I(2)C命令,请参见表5(或DS2477安全用户指南)。
(开始) | ||||||
Tx: I(2)C地址(写) | ||||||
Tx: Full Authenticate (0xE1) | ||||||
Tx:写长度(16) | ||||||
Tx:参数字节1(页面选项:0x89) | ||||||
Tx:参数字节2(秘密选项:0x08) | ||||||
Tx:参数字节3(认证页选项:0x00) | ||||||
Tx:参数字节4(读内存延迟:0x19 (50ms)) | ||||||
Tx:参数字节5(计算和读页认证延迟:0x1C (56ms)) | ||||||
Tx:从ROM ID(8字节) | ||||||
Tx: Customization(3字节):(page* | 0x80)(1字节,slave绑定数据页),MAN ID(0)(1字节),MAN ID(1)(1字节) | ||||||
(停止) | ||||||
[延迟,tRM + tcpp + 3 × tOP + tRM + tRM +读存储器延迟* 2ms + tRNG + CRPA延迟* 2ms + 1线定时(139字节,2复位)] | ||||||
(开始) | ||||||
Tx: I(2)C地址(读) | ||||||
Rx:读取长度字节(成功时33,错误时1) | ||||||
Rx:结果字节 | ||||||
Rx:(成功时)页数据(32字节) | ||||||
(停止) | ||||||
*页面= 0x00 |
虽然DS2477中的Full Authenticate命令简化了用户的身份验证过程,但它是通过连续自动执行每个步骤来实现的。可以通过手动执行身份验证步骤来加快身份验证过程,并让DS2477生成唯一的从密钥,而DS28E50生成用于计算和读页身份验证的HMAC,如下表6所示。
流 | DS2477 | DS28E50 |
1. 设置DS2477为超速 | 机的块 | N/A |
2. 用1线搜索找到DS28E50从机 | 机的搜索 | N/A |
3.读取DS28E50第0页 | 完整命令序列 | 读内存(第0页) |
4. 产生挑战 | 读取RNG(32字节) | N/A |
5. 对DS28E50进行计算和读页认证 | 1线块(见DS28E50安全用户指南表26:延迟前发送所有内容) | Compute and Read Page Authentication: Page = 0x00, Authentication type = 0x00, challenge(32字节) |
6. 生成唯一的从属密码 | 协处理器计算和锁定SHA-3秘密(见表3) | -(此时计算第0页HMAC) |
7. 从DS28E50读取HMAC | 1线座(见DS28E50安全用户指南表26;阅读延迟后的所有内容) | 从计算和读页身份验证返回结果。 |
8. 计算HMAC | 计算HMAC:参数byte = 0x02, data = DS28E50页0数据(32字节) | N/A |
9. 在主处理器上,验证DS28E50的HMAC与DS2477计算的HMAC是否匹配 | - | - |
如果验证了1-Wire身份验证器是系统的一部分,主机可以使用Authenticated write memory命令写入用户内存。表7显示了写入一个段所需的步骤和命令的顺序。作为先决条件,主机需要知道当前内存页面数据(旧页面数据),然后才能更新页面(新页面数据)。需要注意的是,该页面必须设置有鉴权写保护HMAC (APH)或加密和鉴权写保护HMAC (EPH)。本例假设DS28E50是根据表2设置的,只是第0页在步骤5中设置了APH保护。
流 | DS2477 | DS28E50 |
1. 1线搜索找到DS28E50的ROM ID。 | 机的搜索 | N/A |
2. 读取DS28E50 ROM选项页以获取ROM ID和MAN ID。 | 完整命令序列 | 读内存(第7页) |
3.在DS2477中生成唯一的从密钥。 | 看到表3. | N/A |
4. 从DS28E50获取页0的当前数据(旧页数据)。 | 完整命令序列 | 读内存(第0页) |
5. 计算HMAC,为经过验证的SHA-3写内存提供新的页面数据和其他所需的数据(参见DS28E50安全用户指南表30)。 | 计算HMAC:参数= 0x02,数据(75字节);见DS28E50安全用户指南表30) | N/A |
6. 向DS28E50下发Authenticated SHA-3 Write Memory命令。 | 完整命令序列 | 经过验证的SHA-3写内存:页面参数= 0x00,秘密参数= 0x00,新页面数据(32字节),HMAC =在步骤5中计算 |
社群二维码
关注“华强商城“微信公众号
Copyright 2010-2023 hqbuy.com,Inc.All right reserved. 服务热线:400-830-6691 粤ICP备05106676号 经营许可证:粤B2-20210308