设备连接的安全手段

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

  • 基于密钥的单向认证

  • 基于证书的双向认证

认证流程概览

无论采用何种认证方式,设备认证过程如下:

智能设备认证

  1. 登陆EnOS管理门户,为需要接入的设备创建模型、产品、注册设备。

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

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

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

非智能设备认证

  1. 登陆EnOS管理门户,为需要接入的设备及其代理网关设备创建模型、产品、注册设备。

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

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

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

基于密钥的单向认证

基于密钥的单向认证机制使用以下密钥:

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

    • Product key:是EnOS为产品颁发的唯一标识。可以在 设备管理 > 产品管理 > 产品详情 处获得。

    • Product secret:EnOS颁发的产品密钥,与Product key成对出现。对于采用动态激活的设备,设备初次连接EnOS时,发送携带product key、product secret和Device key的请求,可从EnOS获取device secret以激活设备。可以在 设备管理 > 产品管理 > 产品详情 处获得。

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

    • Device key:在注册设备时,用户自定义或系统自动生成的设备标识,OU内唯一。可以在 设备环境 > 设备资产 > 设备详情 处获得。

    • Device secret:EnOS颁发的设备密钥,和device key成对出现。可以在 设备环境 > 设备资产 > 设备详情 处获得。

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

认证流程

设备通过认证、与EnOS连接,有以下步骤:

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

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

设备认证模式和设备状态

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

  • 动态认证

  • 静态认证

动态认证

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

动态认证过程如下:

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

    • 只要设备状态为 未激活 ,使用product key, product secret, device key可以反复获取device secret,每次获取的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

备注

对于认证成功的设备,如果发现设备异常,或者你不希望接收该设备的数据,可以将其置为 禁用。此时设备将自动下线,处于 离线 状态。

基于证书的双向认证

基于密钥的单向认证是使用设备三元组进行设备身份认证,是一种单向的认证机制,即IoT Hub校验设备是否可信。但设备并不校验对端接受数据的IoT Hub是否可信。EnOS也支持 基于证书的双向认证 机制。

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

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

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

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

相关概念

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

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

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

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

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

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

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

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

最佳实践

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

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

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

设置证书

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

IoT Hub获取X.509证书

../_images/certificate_service_secure_communication_01.png
  1. IoT Hub在本地创建密钥对和证书请求文件(CSR文件),使用X.509证书服务的API申请包含CSR的X.509证书。

  2. EnOS CA颁发X.509证书并将证书发送至IoT Hub。

  3. IoT Hub接收并存储X.509证书。

EnOS Edge获取X.509证书

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

  2. 在IoT Hub上,使用EnOS Edge的设备序列号作为其device key注册EnOS Edge设备,可以在 EnOS 管理控制台 注册设备,也可以通过调用REST API接口注册设备。

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

  4. IoT Hub接收到从EnOS Edge发来的CSR文件,在验证完身份后,将CSR文件转发至EnOS CA。

  5. EnOS CA接收到CSR文件,颁发EnOS Edge证书并发送至IoT Hub。

  6. IoT Hub接收到已签发的X.509证书,把证书与EnOS Edge的设备ID绑定,然后将EnOS Edge证书发送至EnOS Edge。

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

建立通信

下图为进行基于证书建立通信的过程:

../_images/certificate_service_secure_communication_03.png
  1. EnOS Edge认证IoT Hub端的证书。

  2. IoT hub认证EnOS Edge端的证书。

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

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

  4. 在TLS通道中,IoT Hub以MQTT协议传送配置和控制信号。

撤销证书

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

../_images/certificate_service_secure_communication_04.png
  1. IoT Hub调用撤销API向EnOS CA请求撤销EnOS Edge端的带序列号的X.509证书。

  2. EnOS CA接收到来自IoT hub的请求后,验证身份,撤销EnOS Edge证书,以及升级CRL。

EnOS Edge安全的最佳实践

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

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

  • 在与IoT Hub通信时使用TLS 1.2协议,并验证服务器证书的有效性。

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

  • 由IoT Hub认证的密钥不能用于其他目的或通过其他协议进行通信。

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

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

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

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

相关信息