希望将加密芯片(Atmel ATECC608A)添加到将用于与公司服务器通信的产品中。

我们要确保只有我们的设备正在与服务器通信(身份验证)。

据我所知,我公司将拥有自己的密钥对,将用于对中间密钥对进行签名,而中间密钥对又将用于对所有设备密钥对进行签名。

我的问题是-服务器如何“知道”终端设备是合法的?

#1 楼

规范的密码答案是每个设备上的客户端证书或某种机密。考虑以下示例,其中Microchip详细说明了如何通过Google IoT Cloud认证ATECC608A。细节在这里给出。您将需要一个秘密私钥和一个安全算法。

当然,这意味着您必须在芯片上进行批量生产时安全地部署这些秘密。

评论


问题中描述的体系结构的重点是产品的每个副本都有唯一的密钥。这将折衷的成本区分开来-如果有人买了一个盒子并将其拆开,他们只能假冒那个盒子。如果有人窃取或滥用工厂的生产设备,他们只会获得一份中间证书,并且可以永久识别出由该受害密钥签名的单位。

–克里斯·斯特拉顿(Chris Stratton)
18年4月21日在17:16

我同意@ChrisStratton,可以假冒被拆散的单个设备。关于工厂生产,您将需要进行适当的审核,以跟踪哪些密钥已被盗用。

– Helmar♦
18年4月22日在9:27

您知道密钥被盗用的最可能的方式是,您在签名注册的产品证书中看到一个未生产的序列号,试图注册或放在后端的帐户中。或者,您开始在不同帐户的不同位置看到重复的序列号。相反,如果您开始看到成千上万个重复的序列号,则有人将产品拆开并提取了其密钥。

–克里斯·斯特拉顿(Chris Stratton)
18年4月22日在14:04

#2 楼

一般而言,这称为相互身份验证,通常可以使用TLS和客户端证书,尽管其他方案也是可行的。制造商使用发行者私钥对各个设备证书进行签名,并且在客户端进行通信握手期间会验证该签名。这是服务器“知道”设备合法的方式。单个受感染设备的数据库。即建立CA几乎涉及到其他所有事情。