设备连接的安全手段¶
为保证连接的安全,设备接入EnOS™之前,需要经过鉴权认证。EnOS支持以下认证模式:
基于密钥的单向认证
基于证书的双向认证
认证流程概览¶
无论采用何种认证方式,设备认证过程如下:
智能设备认证¶
登陆EnOS管理门户,为需要接入的设备创建模型、产品、注册设备。
在设备上配置认证需要的信息。
启动设备,使用配置的认证信息尝试连接EnOS。
如果设备通过认证,则其会成功连接至EnOS;否则连接会失败。
非智能设备认证¶
登陆EnOS管理门户,为需要接入的设备及其代理网关设备创建模型、产品、注册设备。
在网关设备上,配置需要接入的设备的认证信息。
启动网关设备,使用配置好的认证信息尝试连接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连接,有以下步骤:
设备认证模式和设备状态¶
在EnOS平台初次注册的设备是默认处于 未激活 状态,等待被认证。设备认证方式有以下几种:
动态认证
静态认证
动态认证¶
要启用动态认证,需要在 设备管理 > 产品管理 中,选择需要使用动态激活的产品,点击 操作 栏 按钮,进入产品详情页。在 产品信息 标签页,打开 动态激活 开关。
动态认证过程如下:
已注册但未激活的设备发送一个携带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。
首次认证成功后,设备之后的认证是使用product key,device key,device secret。
静态认证¶
EnOS默认的设备认证方式。其认证过程如下:
设备向EnOS发送携带有product key,device key,device secret的认证请求。这三个参数在用户创建完设备实例之后即可在 EnOS 管理控制台 上 设备管理 > 设备资产 > 设备详情 页获得。用户需要在设备端配置好这三个参数。
设备认证成功以后,设备状态从 未激活 变成 在线 状态。此时设备可以上送数据,如果一段时间内不上送数据,设备状态变成 离线 。
备注
对于认证成功的设备,如果发现设备异常,或者你不希望接收该设备的数据,可以将其置为 禁用。此时设备将自动下线,处于 离线 状态。
基于证书的双向认证¶
基于密钥的单向认证是使用设备三元组进行设备身份认证,是一种单向的认证机制,即IoT Hub校验设备是否可信。但设备并不校验对端接受数据的IoT Hub是否可信。EnOS也支持 基于证书的双向认证 机制。
要启用基于证书的双向认证,你需要登陆 EnOS管理门户 ,选择 设备管理 > 产品管理 > 产品详情 ,在 产品信息 中,将 证书双向认证 设置为 启用 。
启用后,EnOS会强制执行以下安全方案用以保护设备、网关和EnOS IoT Hub之间的连接:
直连设备与IoT Hub之间、网关设备与IoT Hub之间的通信强制使用基于证书的双向认证。
支持使用RSA或ECC算法验证签名。
相关概念¶
证书颁发机构:数字证书发行机构,能够颁发CA证书。
CA证书:是一种数字证书,该证书的持有者可对其他证书进行签名。它符合IETF RFC 5280标准定义的证书格式。
设备证书:由CA证书持有者签发的证书。设备证书的生成流程如下:
证书申请方基于设备信息产生一对密钥。
证书申请方基于密钥对产生证书请求文件CSR。
证书申请方将CSR文件发送给CA证书持有者。
CA证书持有者签发并注册设备证书。
EnOS提供CA证书服务,更多内容参考X.509证书服务。
最佳实践¶
如果开启基于证书的双向认证方式,我们推荐以下最佳实践:
建议为每个设备提供一个唯一的证书,以便进行精细的管理,如证书撤销。
设备必须支持更换证书,以确保证书过期时仍能顺畅运行。
设置证书 ¶
下图为基于X.509证书的EnOS Edge和IoT Hub之间的安全通信过程。你也可以使用EnOS Edge以外的网关设备。
IoT Hub获取X.509证书¶
IoT Hub在本地创建密钥对和证书请求文件(CSR文件),使用X.509证书服务的API申请包含CSR的X.509证书。
EnOS CA颁发X.509证书并将证书发送至IoT Hub。
IoT Hub接收并存储X.509证书。
EnOS Edge获取X.509证书¶
EnOS Edge设备出厂预烧录了产品密钥(Product key,product secret)和EnOS Edge设备序列号(SN)。EnOS Edge上电联网以后,上报产品密钥以及序列号至云端以动态激活。如果云端鉴权认证通过,会返回device secret至EnOS Edge。
在IoT Hub上,使用EnOS Edge的设备序列号作为其device key注册EnOS Edge设备,可以在 EnOS 管理控制台 注册设备,也可以通过调用REST API接口注册设备。
EnOS Edge接收由IoT Hub返回的信息,创建密钥对和CSR文件,调用API获取它的X.509证书。同时使用设备三元组尝试登录云端。
IoT Hub接收到从EnOS Edge发来的CSR文件,在验证完身份后,将CSR文件转发至EnOS CA。
EnOS CA接收到CSR文件,颁发EnOS Edge证书并发送至IoT Hub。
IoT Hub接收到已签发的X.509证书,把证书与EnOS Edge的设备ID绑定,然后将EnOS Edge证书发送至EnOS Edge。
EnOS Edge接收到EnOS Edge证书,需要保存到安全的本地库中。例如,保存至可信平台模块(TPM)。
建立通信 ¶
下图为进行基于证书建立通信的过程:
EnOS Edge认证IoT Hub端的证书。
IoT hub认证EnOS Edge端的证书。
当步骤1和2步骤中的TSL握手都成功后,EnOS Edge与IoT Hub之间的TLS连接即建立完成。
在TLS通道中,EnOS Edge以MQTT协议传送设备遥测信息。
在TLS通道中,IoT Hub以MQTT协议传送配置和控制信号。
撤销证书 ¶
在某些情况下,用户需要撤销EnOS Edge的X.509证书。
IoT Hub调用撤销API向EnOS CA请求撤销EnOS Edge端的带序列号的X.509证书。
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上的时钟不被篡改。