设备安全认证


为保证连接的安全,设备接入 EnOS 之前,需要经过鉴权认证。EnOS 支持以下认证模式:

  • 基于密钥的单向认证:单向认证,安全性相对较弱,为系统默认认证方式。

  • 基于证书的双向认证:双向认证,安全性高,需要用户主动开启。

认证流程概览


无论采用何种认证方式,设备的认证过程根据设备类型概括如下。

智能设备认证


  1. 登录 EnOS 应用门户,进入开发者控制台,为需要接入的设备创建模型、产品、注册设备。

  2. 在设备上配置认证需要的信息。

  3. 启动设备,使用配置的认证信息尝试连接 EnOS。

如果设备通过认证,则其会成功连接至 EnOS,否则连接会失败。

非智能设备认证


  1. 登录 EnOS 应用门户,进入开发者控制台,为需要接入的设备及其代理网关设备创建模型、产品、注册设备。

  2. 在网关设备上,配置需要接入的设备的认证信息。

  3. 启动网关设备,使用配置好的认证信息尝试连接 EnOS。

如果设备通过认证,则其会成功连接至 EnOS,否则连接会失败。

基于密钥的单向认证


基于密钥的单向认证机制为 EnOS 默认的认证方式。更具体而言,EnOS 的默认认证方式是单向认证机制中的静态认证模式。单向认证机制使用以下密钥:

  • 产品密钥:product key 和 product secret。

    • Product key:是 EnOS 为产品颁发的唯一标识。

    • Product secret:EnOS 颁发的产品密钥,与 Product Key 成对出现。

    如何查看,参见 获取设备三元组信息

  • 设备密钥:device key 和 device secret。

    • Device key:在注册设备时,用户自定义或系统自动生成的设备标识,OU 内唯一。

    • Device secret:EnOS 颁发的设备密钥,和 device key 成对出现。

    如何查看,参见 查看产品信息

认证流程


单向认证有以下步骤:

  1. 注册

    登录 EnOS 应用门户或使用 EnOS API 在云端注册一个设备实例,此时设备的 状态未激活


  2. 认证

    使用 动态认证静态认证 来认证已注册的设备。设备认证成功后,从 未激活 状态变为 在线 状态。如果设备 在线 后的一段时间内没有向 EnOS 发送任何消息,则状态变为 离线

认证模式


在 EnOS 云端初次注册的设备是默认处于 未激活 状态,等待被认证。设备静态认证方式有以下几种:

  • 动态认证:设备使用 product key、product secret 和 device key 尝试认证接入,通过认证之后,EnOS 返回 device secret 给设备。在之后的接入过程中,设备就使用三元组进行认证。

  • 静态认证:每台设备烧录自己的三元组(product key、device key 和 device secret)。设备使用烧录好的三元组尝试认证,通过之后即完成接入。

动态认证


要启用动态认证,需要在 设备管理 > 产品管理 中,选择需要使用动态激活的产品,点击其 查看 图标,进入产品详情页。在 产品信息 标签页,打开 动态激活 开关。

动态认证过程如下:

  1. 已注册但未激活的设备发送一个携带 product key, product secret, device key 的请求以尝试认证,认证通过以后,EnOS 返回 device secret 给设备,用于后续的通信。此时设备状态由 未激活 变为 在线。如果一段时间内设备未上送数据,则状态由 在线 变为 离线

    • 只要设备状态为 未激活,使用 product key, product secret, device key 可以反复获取 device secret。

    • 如果设备 在线离线 的设备,但需要重新认证该设备的,首先在 设备资产 中删除设备实例,再重新创建设备实例,然后让设备使用新的 product key, product secret, device key 来获取 device secret。

  2. 首次认证成功后,下一次设备认证将使用 product key,device key 和 device secret。

静态认证


EnOS 默认的设备认证方式。其认证过程如下:

  1. 设备向 EnOS 发送携带有 product key,device key 和 device secret 的认证请求。这三个参数在用户创建完设备实例之后即可在 EnOS 应用门户上 设备管理 > 设备资产 > 设备详情 页获得。你需要在设备端配置好这三个参数。

  2. 设备认证成功以后,设备状态从 未激活 变成 在线 状态。此时设备可以上送数据,如果一段时间内不上送数据,设备状态变成 离线


../_images/secret_communication.png


备注

对于认证成功的设备,如果发现设备异常,或者你不希望接收该设备的数据,可以在 设备管理 > 设备资产 页面中通过其 启用/禁用 将其开关禁用。此时设备将自动下线,处于 已禁用 状态。

基于证书的双向认证


EnOS 也支持基于证书的双向认证机制,除了 EnOS 校验设备是否可信外,设备还会校验云端是否可信。


启用后,EnOS 会强制执行以下安全方案用以保护设备、网关和 EnOS 云端之间的连接:

  • 直连设备与 EnOS 云端之间、网关设备与 EnOS 云端之间的通信强制使用基于证书的双向认证。

  • 支持使用 RSA 或 ECC 算法验证签名。

相关概念


  • 证书颁发机构:数字证书发行机构,能够颁发 CA 证书。

  • CA 证书:是一种数字证书,该证书的持有者可对其他证书进行签名。它符合 IETF RFC 5280 标准定义的证书格式。

  • 设备证书:由 CA 证书持有者签发的证书。设备证书的生成流程如下:

    1. 证书申请方基于设备信息产生一对密钥。

    2. 证书申请方基于密钥对产生证书请求文件 CSR。

    3. 证书申请方将 CSR 文件发送给 CA 证书持有者。

    4. CA 证书持有者签发并注册设备证书。

EnOS 提供 CA 证书服务的更多内容,参见 X.509 证书服务

前提条件


要启用基于证书的双向认证,你需要登录 EnOS 应用门户的开发者控制台,选择 设备管理 > 产品管理 > 产品详情,在 产品信息 中,将 证书双向认证 设置为 启用

最佳实践


如果开启基于证书的双向认证方式,我们推荐以下最佳实践:

  • 建议为每个设备提供一个唯一的证书,以便进行精细的管理,如证书撤销。

  • 设备必须支持更换证书,以确保证书过期时仍能顺畅运行。

设置证书


下图为基于 X.509 证书的 EnOS Edge 和 EnOS 云端之间的安全通信过程。你也可以使用 EnOS Edge 以外的网关设备。

EnOS Cloud 获取 X.509 证书


下图为 EnOS Cloud 获取 X.509 证书的流程。


../_images/certificate_service_secure_communication_01.png


1a. 设备连接与管理在本地创建密钥对和证书请求文件(CSR 文件),使用 X.509 证书服务的 API 申请包含 CSR 的 X.509 证书。

1b. EnOS CA 颁发 X.509 证书并将证书发送至设备连接与管理。

1c. EnOS Cloud 接收并存储 X.509 证书。

EnOS Edge 获取 X.509 证书


下图为 EnOS Edge 获取 X.509 证书的流程。


../_images/certificate_service_secure_communication_02.png


2a. EnOS Edge 设备出厂预烧录了产品密钥(Product key,product secret)和 EnOS Edge 设备序列号(SN)。EnOS Edge 上电联网以后,上报产品密钥以及序列号至云端以动态激活。如果云端鉴权认证通过,会返回 device secret 至 EnOS Edge。

2b. 在设备连接与管理上,使用 EnOS Edge 的设备序列号作为其 device key 注册 EnOS Edge 设备,可以在 EnOS 应用门户的开发者控制台注册设备,也可以通过调用 Create Device API 注册设备。

2c. EnOS Edge 接收由 EnOS Cloud 返回的信息,创建密钥对和 CSR 文件,调用 API 获取它的 X.509 证书。同时使用设备三元组尝试登录 EnOS Cloud。

2d. 设备连接与管理接收到从 EnOS Edge 发来的 CSR 文件,在验证完身份后,将 CSR 文件转发至 EnOS CA。

2e. EnOS CA 接收到 CSR 文件,颁发 EnOS Edge 证书并发送至设备连接与管理。

2f. 设备连接与管理接收到已签发的 X.509 证书,把证书与 EnOS Edge 的设备 ID 绑定,然后将 EnOS Edge 证书发送至 EnOS Edge。

2g. EnOS Edge 接收到 EnOS Edge 证书,需要保存到安全的本地库中。例如,保存至可信平台模块(TPM)。

建立通信


下图为设备与云端基于证书建立通信的过程:


../_images/certificate_service_secure_communication_03.png


3a. EnOS Edge 认证设备连接与管理端的证书。

3b. 设备连接与管理认证 EnOS Edge 端的证书。

当步骤 1 和 2 步骤中的 TLS 握手都成功后,EnOS Edge 与设备连接与管理之间的 TLS 连接即建立完成。

3c. 在 TLS 通道中,EnOS Edge 以 MQTT 协议传送设备遥测信息。

3d. 在 TLS 通道中,设备连接与管理以 MQTT 协议传送配置和控制信号。

撤销证书


在某些情况下,你可能需要撤销 EnOS Edge 的 X.509 证书。


../_images/certificate_service_secure_communication_04.png


4a. 设备连接与管理调用撤销 API,向 EnOS CA 请求撤销 EnOS Edge 端的带序列号的 X.509 证书。

4b. EnOS CA 接收到来自设备连接与管理的请求后,验证身份,撤销 EnOS Edge 证书,以及升级 CRL。

EnOS Edge 安全的最佳实践


在基于证书的安全连接中,参见以下最佳实践来确保 EnOS Edge 的安全:

  • 为 EnOS Edge 创建私钥,并将私钥存放至一个安全的库。例如:TPM。

  • 在与设备连接与管理通信时使用 TLS 1.2 协议,并验证服务器证书的有效性。

  • 每个 EnOS Edge 都必须拥有唯一的公钥和私钥对。

  • 由设备连接与管理认证的密钥不能用于其他目的或通过其他协议进行通信。

  • 当 EnOS Edge 被重置时,密钥必须被撤回。

  • 当你的 EnOS Edge 在操作系统上运行时,确保你的操作系统上有安全机制。例如,防火墙。

  • 确保你有方法来升级根 CA 根证书与 CRL。

  • 确保 EnOS Edge 上的时钟不被篡改。