04.腾讯云物联网设备端学习---网络连接及设备鉴权

2021-04-04 20:46:11 浏览数 (1)

本系列主要目的在于记录腾讯云物联网设备端的学习笔记,并且对设备端SDK进行补充说明。

网络连接

MQTT是建立在可靠协议之上的,通常使用的是TCP、或者TCP TLS,其中TLS又分为基于PSK认证以及基于证书认证。

腾讯云物联网C SDK 通过network网络层实现对下的网络协议的不同适配,主要包括三类:

  • TLS:SDK主要适配了mbedtls的相应接口,使用tls接入可以直接适配mbedtls
  • TCP socket:对于TCP接入方式,大部分使用是socket接口形式,通过适配HAL层的socket接口即可实现TCP接入
  • AT:对于部分使用AT指令控制的设备,SDK也提供了通用的AT框架,通过适配底层的AT指令即可实现接入

由于涉及到安全性,大部分场景下使用的均为mbedtls方式接入,这就要求设备进行mbedtls适配,好在mbedtls适配十分成熟,并且不复杂。

C SDK网络设计C SDK网络设计

设备接入鉴权

针对设备类型,可分为两类:

  • PSK设备:
    • TCP:针对TCP连接,使用的为密钥认证,通过PSK使用MQTT的user name 和 password进行鉴权,请参见 密钥认证设备接入指引
    • TCP TLS PSK:根据PSK基于TLS_PSK_WITH_AES_128_CBC_SHA 或TLS_PSK_WITH_AES_256_CBC_SHA套件进行鉴权和密钥交换,这个可以通过抓包在Client Hello中看到。
TLS PSKTLS PSK
  • 证书设备:使用TLS证书模式进行鉴权,可以抓包看到TLS握手的流程

TLS CERTTLS CERT

其他鉴权

除了设备接入鉴权外,在整个腾讯云物联网中还包括其他鉴权,不在赘述,简单描述下,了解即可。主要包括:

  • 设备日志上传鉴权:采用设备PSK或者证书密钥对hmac_sha1对时间和日志内容等进行签名
  • 动态注册鉴权:使用产品密钥(注意这里是产品的PSK,而非设备的PSK),采用hmac_sha1对设备信息、随机数以及时间进行签名
  • 子设备动态绑定鉴权:采用子设备PSK或者证书密钥对hmac_sha1对设备信息、随机数以及时间进行签名

由于方便设备实现和代码复用,大多数鉴权都类似,主要是通过密钥对设备信息,随机数、时间戳、其他信息进行HMAC,生成消息认证码,从而使得服务器能够根据消息认证码确认消息是由设备端发出的。

0 人点赞