摘要: 本应用笔记讨论了使用DS28S60加密协处理器的基础知识。它还讨论了使它快速运行的步骤。
本应用说明详细介绍了如何使用DS28S60加密处理器与ChipDNA 。它描述了DS28S60所需的设置。然后介绍一种逐步使用非对称密钥交换在主机和客户机之间安全地生成共享对称密钥的方法。接下来,介绍如何使用对称密钥在主机和客户机之间交换加密数据。最后,本文介绍了一个使用ECDSA的DS28S60双向身份验证过程的示例。
让我们看看这个应用笔记中使用的术语:
设备或客户端-包含DS28S60的设备。它需要与主机通信。例如,传感器节点。
主机或远程对等体-需要与设备通信的实体。例如,应用服务器。
权威机构——使用权威密钥对创建证书的受信任方,设备和远程对等体可以使用该密钥对作为系统的一部分来相互验证。
图1和图2显示了设备、客户端和权限如何在系统的高层上相互交互。
图1所示、加密信道系统概述
图2、互认证系统概述
为了安全需要,在现场使用DS28S60之前,先对设备进行设置。这包括安装和/或生成设备密钥对、密钥和证书。这是在一个安全的地方完成的,比如工厂。
图3、生成设备证书的授权机构
生成并安装设备公钥对:
首先,使用Generate ECC-256密钥对命令生成设备的ECDSA密钥对并安装到密钥对A内存块中。注意,可以使用写内存命令将在其他地方创建的密钥对写入DS28S60,而不是让DS28S60生成自己的密钥对。
接下来,使用set block protection命令对密钥对block A进行写保护,使该密钥对不能被修改。
让授权机构为公钥创建证书:
在安装设备密钥对之后,将公钥与DS28S60的ROM ID和MAN ID一起发送给授权机构,以便它可以为密钥对生成证书(图3)。请注意,ROM ID和MAN ID是在Maxim制造过程中编程到设备中的数据元素。
将证书写入DS28S60:
一旦收到生成的证书,就将证书写入用户内存页。
将授权公钥和特征数据写入DS28S60
将权威公钥写入权威密钥A块。有关设备内存映射和更多信息,请参阅DS28S60用户指南。一旦密钥被写入,对授权密钥A块进行写保护,以防止它被修改。
接下来,将任何特征数据写入DS28S60。特征数据可以是应用程序所需的任何数据,如测试信息、序列号、器件内饰信息、制造日期等。根据需要使用尽可能多的页面。
对已安装的密钥、秘密和证书设置适当的保护:
写保护(WP),在特性数据写入后,对设备证书和特性数据进行写保护。如果需要对特征数据进行不同的保护,则将它们放在不同的内存块中。set block protection命令用来设置WP保护。
锁定未使用的密钥对块和秘密块。
最后,将随机生成的数据写入每个未使用的秘密和密钥页,并对它们进行写保护,以防止它们被使用。
主机和设备各自生成ECDSA密钥对(称为临时密钥对),以建立加密通道。必须为每个通信会话生成新的临时密钥对。生成密钥后,主机和设备使用ECDHE密钥交换安全地计算共享密钥,以便在随后的AES-GCM会话中加密和解密。
图4、主机和设备使用ECDHE算法计算共享密钥
主机生成它的临时密钥对。
设备生成它的临时密钥对:
设备使用generate ECC-256 key pair命令生成临时密钥对。
指定临时键0作为存储位置。注意:如果DS28S60断电,临时密钥存储页面将丢失密钥对。
主机请求并接收设备的临时公钥。
设备请求并接收主机的临时公钥。
主机使用ECDHE计算共享密钥(图4)。
设备使用ECDHE计算共享密钥(图4)。
图5、主机和设备使用共享密钥交换加密数据进行加密和解密
向DS28S60发出密钥交换命令以计算共享密钥。
主机和设备现在可以使用AES-GCM发送加密数据并解密接收到的数据(图5)。
双向身份验证有两个阶段。在第一阶段,主机和设备通过使用权威机构创建的证书和权威机构的公钥来验证彼此的公钥是系统的一部分(图6)。一旦公钥被验证,主机和设备在第二阶段验证它们各自拥有与已验证的公钥相对应的私钥。这是通过交换使用各自私钥生成的签名并使用已验证的公钥来验证签名来实现的。图7和图8显示了私钥验证过程。
图6、使用证书进行公钥验证的高级图表
主机请求并接收设备的公钥:
当主机请求设备的公钥时,设备使用两次read memory命令从DS28S60读取公钥,以读取公钥A x和y组件,然后将公钥发送给主机。
主机请求并接收设备的证书和证书消息数据:
当设备收到对其证书的请求时,它使用read memory命令从DS28S60的用户页面读取其证书,然后将其传输到主机。
设备请求并接收主机的公钥:
当设备请求并接收到主机的公钥时,使用write memory命令将其写入公钥SA块。
设备请求并接收主机的证书和证书消息数据。
主机通过将证书、证书消息数据的SHA-256哈希值和Authority公钥传递给ECDSA验证算法来验证设备的证书。
设备通过将证书、证书消息数据的SHA-256哈希值和权威机构公钥传递给ECDSA验证算法来验证主机的证书。
设备使用authenticate ECDSA certificate命令验证主机的证书,指定密钥为PUBKEY_SA,设置ECDH = 0和WPE = 0,并将证书与证书数据一起传递。该命令的详细信息请参见用户指南。
图7、私钥验证第一步:生成签名
主机生成32字节的挑战,并请求设备使用挑战和一些页面数据生成签名。
设备使用签名和用于生成签名的数据进行响应:
设备接收到挑战后,使用compute and read page命令使用特征数据页生成签名。一旦生成签名,设备将发送签名以及用于生成签名的消息数据,这些数据包括DS28S60的Rom ID、特征数据、特征数据页码和Man ID、命令字节(0xA5)。
设备生成32字节的挑战,并请求主机使用挑战和一些数据生成签名:
设备通过在DS28S60上使用read RNG命令生成32字节的挑战。生成挑战后,设备将挑战发送给主机,请求主机生成证书。
主机使用签名和生成签名的数据进行响应:
主机使用challenge和一些数据生成签名,格式如下:challenge || data。主机将挑战连同用于生成签名的数据一起发送给设备。
图8、私钥验证第二步:主机和设备验证彼此的签名
主机使用ECDSA验证算法验证设备的签名,方法是向其提供设备的公钥、具有挑战和签名的数据的SHA-256散列。
设备使用ECDSA验证算法验证主机的签名,通过向其提供主机的公钥,具有挑战和签名的数据的SHA-256哈希:
一旦设备接收到签名和数据,它将数据附加到发送给主机的挑战中,使用DS28S60验证签名命令指定公钥SA,并使用消息作为ECDSA输入参数。
既然已经涵盖了构建模块,那么让我们讨论如何将它们组合在一起。安装步骤在一个安全可信的位置(如工厂)完成。设置完成后,设备在现场,主机启动并运行,设备和主机首先使用上面描述的步骤建立一个加密通道。一旦建立了加密通道,设备和主机就会相互验证,以确保它们是同一系统的一部分。一旦相互验证成功,它们就开始相互通信。
本应用说明涵盖了设置和使用DS28S60作为需要相互身份验证和安全加密通信通道的系统的一部分所需的命令和步骤。
ChipDNA是Maxim Integrated的商标。
社群二维码
关注“华强商城“微信公众号
Copyright 2010-2023 hqbuy.com,Inc.All right reserved. 服务热线:400-830-6691 粤ICP备05106676号 经营许可证:粤B2-20210308