设备标识和安全性

一次可以部署和管理多个设备。 设备管理基于在需要时单独识别和访问每个设备的能力。 为此,会为每个 Azure Sphere 设备提供唯一的内部设备 ID,该 ID 通过设备的任何更新(包括恢复操作)保留。

但是,在数字系统中,设备的 ID 很容易被欺骗、伪造或滥用。 因此,应仅允许其标识可以验证和验证的设备访问高价值数据并连接到服务。

Azure Sphere 提供了一个过程,使设备能够 (身份验证) 来标识自身,以及确认设备的标识 (证明) 。 Azure Sphere 安全服务采用的身份验证和证明过程使用预先知道的密钥、安全通信和专用硬件来确认设备的标识。 如果设备身份验证和证明成功,则会向设备颁发证书。 有效证书指示:

  • 设备的标识已验证。
  • 可以信任设备。

使用 Azure Sphere 时,设备证书首先链接到目录级证书 (使组织能够轻松地仅信任其自己的目录) 然后信任 Microsoft 证书的设备,该证书反映 Microsoft 已验证此硬件是运行安全 Microsoft OS 的认证 Azure Sphere 芯片的已验证实例。

以下概念有助于以最安全、最有效的方式使用设备标识:

  • 信任是暂时性的
    系统的信任可能会丢失,并且可能会重新获得。 在 IoT 系统中实现零信任体系结构的原则是显式验证。 这意味着每次与设备交互时,都要显式确定设备的真实性,并证明数据事务是可信的。 Azure Sphere 设备每 24 小时使用 Azure Sphere 云安全服务自动执行一次身份验证和证明过程。 设备标识已成功验证的一个指示是存在一个以加密方式签名的证书,该证书扎根于 Microsoft Azure Sphere 云安全服务。

  • 标识 = 标识符 + 证明
    可以复制和复制标识符。 因此,不能简单地通过标识符来识别设备。 设备标识 (或用户标识) 必须被视为标识符和证明的组合,证明此类标识符在特定上下文中有效。 不应将标识符分配给设备并独立于证明过程使用它们。 在可能的情况下,将标识符与系统内每一层交互的证明证据相结合。

  • 标识符 + 信任证书
    应将标识符视为不超过引用。 不应单独假定它指示有关它所引用对象的可信度的任何内容。 例如,使用标识符订阅 MQTT 消息,使用标识符在门户中将受信任的数据分组在一起,并使用标识符路由系统中的流量和数据。 但是,当涉及到信任(而不是信任标识符)时,请信任加密签名和链接证书。 证书对于系统组件之间的无密码数据流特别有利,并且是经过测试和证明在特定上下文中可信的标识证据。

使用 Azure IoT 中心 时,如果根据记录的建议进行配置,则这些概念已纳入其中,从而简化了安全且可复原系统的部署。

连接到直接控制的非 Azure 终结点或服务时,还必须应用这些概念。 例如,如果使用 MQTT,设备可能包含自己的标识,作为它发布到的 MQTT 主题的一部分。 但是,在接受来自设备的主题更新之前,MQTT 服务器必须验证设备提供的证书是否对其进行了身份验证,才能发布到此特定主题。

Azure Sphere 设备证书和设备 ID 访问

  • 若要访问应用程序中的设备证书,请使用 DeviceAuth_GetCertificatePath 函数。

  • 若要访问设备的唯一设备 ID,请使用 wolfSSL_X509_get_subject_name 函数从 DeviceAuth_GetCertificatePath () 函数提供的证书 中分析 使用者。

获取 Azure Sphere 设备 ID 的代码片段演示如何在高级应用程序中获取 Azure Sphere 设备 ID。 它将设备 ID 作为 128 个字符的字符缓冲区返回。 此代码片段命令 wolfSSL 使用证书打开会话、拉取上下文和证书、分析证书的使用者 ID(即 Azure Sphere 设备的设备 ID),并将其作为 char 指针返回。