本应用笔记详细介绍了DS28S60与Jupyter笔记本配合使用进行双向认证的基本应用。它使用分步方法来演练设置设备和所有相关软件,创建用于通过 ECDHE 密钥交换加密数据的共享密钥,使用 AES-GCM 加密和解密数据,以及通过 ECDSA 签名生成和验证完成相互身份验证。
本应用笔记介绍了DS28S60加密处理器的工作原理,概述了使用DS<>S<>器件建立基于主机和客户端的系统,用于密钥生成和交换、加密和双向认证。此用法在随附的 Jupyter 笔记本中有详细说明。首先,让我们讨论通过非对称密钥交换生成主机和客户端使用的共享密钥或共享对称密钥。接下来,让我们概述如何使用共享对称密钥来加密设备和主机之间的通信。最后,让我们演练使用数字证书和签名的相互身份验证过程。
在系统成员之间交换任何数据之前,DS28S60首先通过创建加密通道来保护各方之间的通信。此示例中的各方包括设备、主机和第三方颁发机构:
图 1 显示了主机和设备之间建立和使用加密通道的交互。
图1.加密通信通道的系统概述。
简而言之,系统身份验证是验证主机和设备的公钥和私钥以验证各方身份的过程。请注意,在启动与密钥对或任何其他敏感信息相关的任何数据交换之前,所有各方之间的通信都是加密的。图 2 显示了身份验证过程中主机、设备和颁发机构之间的交互。
图2.使用权威实体帮助的双向身份验证的系统概述
要运行DS28S60的Jupyter笔记本,需要DS28S60以外的两个硬件,它们是DS28S60评估板的一部分。
使用评估板中的USB Micro B电缆将上位计算机与DS9482P#适配器连接。
配置硬件后,下一步是获取并初始化软件以运行 Jupyter 笔记本。这些步骤如下:
访问下载 Python | Python.org 并下载最新版本的 Python( 安装时选中“将 Python 添加到路径”选项 )。
安装 Python 后,如果使用 Windows,请打开命令提示符或任何类似的终端。若要安装库,请输入运行笔记本需要以下库。
pip install *TARGET LIBRARY*
注意:通过在 Jupyter 笔记本中的“硬件连接设置”部分下运行前两个代码块,检查软件包是否已正确安装,以及硬件是否已连接并成功工作。
要生成共享密钥或共享对称密钥,请首先为主机和设备生成公钥和私钥。
以下步骤概述了密钥对的安装和存储以及证书的分发。注意:从应用笔记的这一点开始,每个编号的步骤在Jupyter笔记本中都有一个或多个关联的代码段,必须按顺序运行这些代码段才能完成双向身份验证。
要建立加密通道,主机和设备必须首先计算共享密钥。为此,主机和设备会生成 ECDSA 密钥对,但这些密钥是临时的。临时密钥是临时密钥。主机和设备启动椭圆曲线 Diffie-Hellman (ECDH) 密钥交换,以交换这些临时密钥并安全地生成共享密钥。然后,此密钥用于通过 AES-GCM 加密和解密数据。图 3 描述了这种密钥交换交互。
注: 为每个新的通信会话生成新的临时密钥对。
图3.主机和设备交换临时密钥以计算共享密钥。
以下步骤描述了如何执行 ECDH 密钥交换:
此时,双方生成相同的 AES 密钥。因此,双方现在都可以使用高级加密标准伽罗瓦/计数器模式(AES-GCM)对他们之间发送的数据进行加密和解密。图 4 显示了 AES-GCM 提供的加密通信通道。
图4.主机和设备使用 AES-GCM 算法交换加密数据。请注意,IV 必须在每次传输时递增,并且必须在两端同步。
相互身份验证可以分为两部分:使用证书验证公钥,以及使用数字签名和通过ECDSA验证算法验证私钥。ECDSA 算法涉及通过使用私钥生成数字签名来证明真实性的通信方。然后,对方方使用签名、发送签名的一方的公钥和其他数据验证这些数字签名。加密安全的随机数也用于该算法的签名和验证部分,以提高安全性。
ECDSA 算法还用于使用各方的证书、权威机构的公钥和各方的识别数据来验证公钥。此标识数据是主机的主机 ID 数据,以及设备的 ROM ID 和 MAN ID。图 5 描述了在验证各方公钥方面交换此信息的过程。
图5.主机和设备使用彼此的证书和 ECDSA 验证算法验证彼此的公钥。
以下步骤演练如何对设备(步骤 1 到 4)和主机(步骤 5 到 7)的公钥进行身份验证:
验证设备的公钥后,也要验证设备的私钥。为此,请首先使用设备的私钥生成数字签名。数字签名包含设备特征数据、私钥签名以及主机发送的称为质询的随机字节串。图 6 说明了 ECDSA 签名生成算法中使用的信息交换。
图6.主机和设备交换挑战,以生成从各自的私钥派生的自己独特的数字签名。
以下步骤介绍如何使用 ECDSA 签名生成和 ECDSA 签名验证算法来完成设备(步骤 1 到 5)和主机(步骤 6 到 9)的身份验证:
生成要发送到设备的质询。
使用质询和其他要素数据创建数字签名和签名消息。
使用 AesBulkEncrypt 加密签名和数据,然后将其发送到主机。
解密并验证主机端的数据,提取签名和签名消息数据,并递增 AES IV 计数器。
重建签名消息,并使用设备公钥验证解密的签名和签名消息数据。图 7 描述了 ECDSA 签名验证算法,并显示了验证所需的信息片段。
图7.主机和设备使用 ECDSA 签名验证算法和所有相关数据验证彼此的私钥。
生成质询以使用 ReadRng 命令发送到主机。
使用质询和主机数据(Host_ID、Host_Location_Code和主机特征数据)创建数字签名和签名消息。
对特征数据、签名和签名消息进行加密,并将其发送到设备。不要忘记更新 AES IV 计数器。
使用 AesBulkDecrypt 命令在设备端解密接收到的数据。
使用验证 EcdsaSignature 命令验证签名和相关数据。
按以下顺序构造和连接验证所需的数据:主机 ID、设备质询、主机功能数据、主机位置代码
双向身份验证可以通过关联的 Jupyter 笔记本进行划分和演示。本教程介绍了出厂设置/密钥生成、ECDH 密钥交换、使用 AES-GCM 加密和解密数据,以及通过安全通道进行通信以相互验证主机和设备。除了配置和运行 Jupyter 笔记本所需的步骤外,此处还介绍了这些步骤。以下两篇文档提供了由DS28S60加密处理器提供的完全认证系统。
审核编辑:郭婷
全部0条评论
快来发表一下你的评论吧 !