你好——是你吗?能够提出这个问题并相信答案对于建立有意义的通信至关重要,无论是人与人之间还是机器之间。人类可以通过检查面孔、声音或举止来确定人们是否是他们所说的那样。
另一方面,机器必须具有唯一的身份并能够证明它们拥有它们。还需要有一种方法来检查这些身份与外部参考的合法性,通过锚定在某些绝对现实中的信任关系链——所谓的信任根。
稍后我将详细介绍建立信任根的技术。不过,首先,我们应该通过提醒自己标准客户端和服务器如何建立安全、经过身份验证的通信通道来设置一些上下文。稍后我们将研究如何以不同方式为物联网 (IoT) 生态系统做事。
通常,客户端和服务器使用加密握手(例如TLS 1.3 协议)建立安全、经过身份验证的通信。这可确保连接经过身份验证,以便通信方知道他们正在与谁交谈并加密,以便他们的数据是私有的。此类协议中的交换如下:
客户端与服务器建立连接。
服务器将其身份呈现给客户端,并以加密方式验证它是否拥有该身份。客户端确认它信任服务器的身份。
客户端将自己的身份和密码验证发送回服务器。服务器确认它信任客户端的身份。
建立了一个加密通道,以便客户端和服务器可以私下通信。
建立信任
稍作反思指出了该过程的一个关键缺点,如所述:步骤 2 和 3 使客户端和服务器能够建立彼此的唯一身份,但没有证明这些身份是合法的。就像出示护照时一样:我们可以看到旅行者看起来像照片,但我们必须相信护照的签发者在确认他们的身份方面做得很好。
在 Internet 上的 TLS 连接中,此身份检查通常由证书颁发机构 (CA) 处理,其作用是确认机器的身份并向其提供表明其已这样做的证书。因此,在 TLS 协议的第 2 步中,服务器可以向客户端显示其证书以证明其身份。如果客户端相信 CA 已正确完成其工作,那么它将看到 CA 在服务器证书上的签名以验证其身份。同样,客户端可以使用 CA 证书来验证其与服务器的身份。然而,这个 CA 步骤提供的明显的额外安全层确实依赖于 CA 首先正确地完成了它的工作,以及长期维护其自身的安全性。如果 CA 本身受到损害,就像已经发生的那样,那么所有的赌注都没有了。
物联网身份验证
TLS 协议和 CA 可能不太适合验证 IoT 设备的身份。例如,物联网设备可能在专用网络上运行,因此无法访问基于互联网的 CA。解决此问题的方法是为每个 IoT 设备(以及其 IoT 生态系统中的每个服务器)提供一个唯一的身份和一种证明其合法性的方法,而无需参考外部权威。
对于服务器,答案是使用 IoT 设备将连接到的端点以及服务器本身或适当 CA 的公共证书对其固件进行编程。然后对 IoT 设备进行编程以信任此服务器证书。当服务器出示其身份时,物联网设备知道信任它,并且只需要服务器证明其对身份的所有权即可完成身份验证。物联网设备的过程稍微复杂一些,并且依赖于在制造或编程固件时为每个设备建立独特的东西——这个过程称为 配置。有两种方法可以做到这一点:要么从中提取一些材料,要么将一些材料注入其中。
提取和注入身份的问题
如果供应商选择通过从每个设备中提取材料来建立唯一身份,那么他们可以使用这些身份的数据库加载服务器。这种方法简化了身份验证流程的第 3 步。客户端 IoT 设备只需将其身份和该身份的加密验证发送到服务器,服务器确认该身份已列在其数据库中并且验证是正确的。然后,服务器无需处理证书即可在设备中建立信任。
尽管此流程很简单,但获取身份列表仍存在挑战。每个设备都必须在制造过程中提取其可加密验证的身份,这可能很耗时,因此成本很高。管理设备身份列表可能很困难,尤其是当物联网生态系统发展到包括数百万台设备时。并且需要安全地存储和访问数据库,以防止对其进行编辑以包含虚假设备身份。
尽管如此,如果这些问题得到妥善处理,存储有效设备身份的数据库是设备身份验证的实用解决方案。
第二种方法是向每个设备注入身份验证材料。这通常通过在微芯片生产线上安装 CA 来完成。在制造过程中,每个微芯片定义自己的身份,然后从生产线 CA 安全地请求该身份的签名证书。客户的物联网服务器也可以访问此 CA,然后可以在身份验证过程的第 3 步中使用它来检查设备证书的有效性。
这里的挑战是信任。CA 颁发的证书只是告诉服务器微芯片供应商构建了设备并检查了它的密钥。它不会告诉购买设备的服务器。购买以这种方式制造的设备的客户必须信任芯片供应商,以保护其生产线 CA 免受意外或恶意滥用。否则,它可能允许已向其颁发证书的其他设备通过客户的物联网服务器进行身份验证。
理想情况下,微芯片制造商应该在其生产线上为其每个客户配备一个 CA,但这种更安全的方法在许多物联网终端市场中可能因成本原因而无法接受。
建立信任根的第三种方法是在对每个设备进行固件编程时将秘密身份验证密码注入到每个设备中,以补充步骤 3 中的身份验证。
但是,这种方法存在风险。
这些设备并非每个都获得唯一的身份或秘密,因为它们使用相同的固件进行编程。如果固件泄露,所有设备都会受到威胁,任何人都可以在服务器上注册设备。例如,可以通过使用通用密码创建 1000 台设备的批次来限制这些问题的影响,或者限制密码的有效期。这种方法可能会有所帮助,但随着密码的激增、设备因密码过期而被切断等原因,往往会产生多个其他问题。
如果设备是由第三方编程的,就像经常发生的那样,客户必须信任该方的秘密材料,或者坚持使用加密技术安装固件而无法对其进行检查。这两者都代表了进一步的后勤挑战,以及潜在的嵌入在固件代码中的知识产权 (IP) 风险。
为每个物联网设备建立唯一身份的最安全但成本最高的方法是在每个设备都被编程时派遣一名工程师到场。据 估计,每台设备大约需要 20 分钟的工程师时间,这在许多物联网生态系统的规模上通常被认为是不切实际的。但是,它确实展示了在设备设计和配置规划阶段预测您的安全管理需求的好处。
概括
许多公司都参与了物联网,每家公司都有不同的能力、安全问题和对风险的态度。这意味着没有通用的方法来配置设备以加入物联网生态系统。一些公司将自己处理配置过程,从而可以直接为每个设备注入或提取他们认为合适的秘密材料。其他人将没有所需的基础设施,但会非常关注安全性,从而向第三方支付费用以非常小心地提供他们的设备,并充分尊重嵌入在每个设备中的 IP 的价值。
这两种方法都将受益于这些公司在设备配置期间提高其物联网生态系统安全性的努力。那些选择明显成本较低的选项(例如在固件中嵌入密码)的人可能会发现,他们的前期节省后来被管理固件保密和应对可能的安全漏洞的成本所淹没。
最后,有效的身份验证对于物联网生态系统的成功实施至关重要。这让我们可以问“你好,是你吗?” 并相信我们得到的答案。
审核编辑:汤梓红
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)