概述
1设备间架构
当前大部分智能设备采用的是“智能设备终端” “云服务端” “移动终端 APP”系统架构,个别情况可能缺少云端或者APP端。简图如下
移动终端APP通过蓝牙、Wi-Fi、ZigBee等方式管理智能设备,智能设备则通过网络将需要保存的数据上传到云服务端(包括:数据,配置等)。
以智能摄像头为例,首先需要在手机上下载 APP、注册并登录;接着用 APP 扫描设备底部的二维码添加设备, 添加过程中,APP中会提示给摄像头配置网络,APP给摄像头配置网络的方法比较多,例如小米是在APP界面输入要给摄像头配置的WIFI的SSID以及密码,然后用连接摄像头的AP,APP会通过摄像头AP自动配置WIFI。TP-Link安防摄像头则是输入SSID和密码后,手机APP通过声波传输这些信息给摄像头。
摄像头正常联网后,就可通过 APP 进行实时监控;监控录像则可以选择云存储,即一定时间内的监控录像可上传至厂商提供的云服务器进行保存,如果摄像头和APP在同一个局域网内,或者可以不通过云端即可通信的话,由摄像头到APP的UDP视频流的传输是通过本地完成的,不经过云端,如果两者之间不能直接通信,例如手机APP连接4G/5G移动网络,则UDP视频流由摄像头厂家提供的云端服务器进行转发。
以小米IOT设备举例看一下IOT设备整体的通信与配置情况如下,WiFi,BLE,ZigBee是主要的通信方式。
2 常用的三种通信协议
WiFi性能最强大,但是功耗太大,以至于不适合使用电池供电的设备,更适合插电使用的设备。例如电视、冰箱、洗衣机、洗碗机等智能大家电,使用WiFi通讯,不需要用户另外购买网关,直接就可以使用。
BLEmesh和ZigBee功耗都很低,因此都适用于使用电池供电的设备,两者对比的话,如果对带宽要求更大,那么蓝牙无疑更合适,而如果要求更快的响应速度,ZigBee更合适;
2.1 WiFi
通过WiFi交换数据和指令是最常见的方式,常见于较为复杂或者严重依赖网络的IOT设备,如智能音箱,网络摄像头等。通常使用2.4GHz或者5GHz,大多数需要配置WiFi的设备对5G频段的支持并不好。往往仅可使用2.4G。GHz ISM频段。
Wi-Fi协议标准有多套,例如802.11a、802.11b、802.11g、802.11n和802.11ac等。其中802.11b和802.11g协议使用2.4 GHz频段,802.11a、802.11n和802.11ac 协议使用5 GHz频段。2.4 GHz频段根据不同频率又分为14个无线子信道。在部分地区,Wi-Fi路由器还必须采用特定的广播信道。
2.2 ZigBee
ZigBee是基于IEEE 802.15.4协议为物理层和媒体接入控制层实现的规范,支持低功耗无线Mesh网络。不同地区的ZigBee协议使用不同的ISM[1]频段,但主要还是在全球使用2.4 GHz频段,在美国使用915 MHz频段,欧盟使用868 MHz频段。ZigBee网络由协调器[2](ZigBee Coordinator,ZC)、路由器[3](ZigBee Router,ZR)和终端节点(ZigBee EndDevice,ZED)组成。建立ZigBee网络时协调器自动启动进行组网。每个网络只允许有一个协调器,它是整个网络的信任中心,负责对入网节点的认证与验证,并且拥有唯一的人网密钥。路由器主要负责在各节点之间传送数据,并将协调器与终端节点连接起来。
注释,非引用
[1] ISM(工业、科学、医疗)频段为国际电信联盟(ITU)《无线电规则》定义的指定无线电频段。这些频段是为电信之外的其他射频用途挪出的频段。
[2] ZigBee协调器向下与多个同区域的终端通信,向上与路由器通信。
[3] ZigBee路由器是连接多个区域的网络设备,有时还负责与外网通信,一般树形网络中用的较多,星形网络不用路由器。
[4] 电灯开关、各种传感器等终端设备。
为了确保报文在网络中的正确传递,ZigBee协调器/路由器需要一直处于工作状态。终端节点在没有数据传输的情况下会以低功率模式休眠。ZigBee网络基于两个安全密钥,即网络密钥和链路密钥。网络密钥是网络中所有设备共享的128位密钥,主要用于确保传输通信的安全。链路密钥是只在相互通信的两个设备之间共享的128位密钥,主要用于确保ZigBee应用层单播通信的安全。链路密钥可以预先分配给设备或通过密钥交换进行分发。但是在ZigBee网络中,已知设备配对过程中的密钥交换存在漏洞,攻击者能够利用该漏洞嗅探网络密钥交换过程.进而影响整个网络的安全。
2.3 蓝牙
蓝牙是一种常用的短距离数据通信的无线技术标准( IEEE 802.15.1)。蓝牙在2.4GHz~2.485 GHz频段进行广播,最远通信距离可以达到100米,但常用于10米以内的通信。
BLE是为那些资源和功耗存在限制的设备设计的,通过提供短脉冲进行远程无线连接,可以有效地解决资源与功耗有限的问题,从而大大降低了电池的消耗。BLE首先在蓝牙4.0规范中引入,主要针对采用极低功耗通信模式的设备,其声称仅靠一粒纽扣电池就可以维持几个月甚至是几年的电量。
BLE协议栈如下所示
BLE协议栈主要分为三层,即应用层、主机层和控制器层。此外,主机层和控制器层通过主机控制器接口(Host Controller Interface,HCI)进行交互。
控制器层又包含链路层(Link Layer,LL)和LE物理层(LE Physical Layer,PHY)。其中物理层主要负责信号调制和解调,并计算连接过程中设备的跳频模式。链路层则负责包括管理设备的蓝牙地址、加密和连接启动以及处理广播数据包等在内的多项工作。
主机层所包含的部分最为重要,这部分内容在对BLE进行漏洞利用时会直接用到,包括通用访问配置文件(Generic Access Profile,GAP)和通用属性配置文件(GenericATTribute profile,GATT)。
GAP负责控制大部分的广播和连接初始化,并定义通信过程中出现的各种设备的角色。GATT位于ATT(属性协议)的顶部,而ATT是负责主从设备数据交换的组件,并执行读、写和错误处理等操作。GATT在ATT之上增加了一个总体数据组织层,使之更容易理解。在GATT中,所有数据均按照下图的方式加以组织:
总体数据由最小元素特征( Characteristic)组成,每个特征中又包含一个值( Value)和描述符( Descriptor)。举个例子,心率( heart-beats-per-minute)即是特征的一个实例,心率值就储存在特征当中。特征具有唯-的UUID,该UUID可以从蓝牙SIG ( Special Interest Group, SIG) 的数据库中找到,蓝牙SIG数据库特征UUID列表的链接:
SIG: https://btprodspecificationrefs.blob.core.windows.net/assigned-values/16-bit%20UUID%20Numbers%20Document.pdf
接着,多个相似的特征会包含在同一个服务当中。以心率服务( heart-rate-service)为
例,该服务就包含心率、不规则心率( irregular-heart-heats)和急性焦虑( panic-attack)等
特征。每个服务均会包含一个16比特的UUID,这些UUID也可以从蓝牙SIG数据库的
服务UUID列表中找到,蓝牙SIG数据库的服务UUID列表的链接
再接下来,整个服务又包含在一个配置文件(Profile) 中,该配置文件是一个通用配置文件。以之前介绍的心脏健康配置文件为例,该文件中就包含了多项服务,如心率服务和心脏含氧量服务(heart-oxygen-service)。
蓝牙、WiFi、ZigBee三者的对比如下
3 一些补充协议,可能出现在部分设备中
3.2 MIIO
(更多关于MIIO的文档、相关标准、JSON实例以及米家设备的固件:https://github.com/sunxueliang96/xiaomi-mijia-MIIO-documentsdocuments-examples-firmwares)
MIIO是小米配置和控制智能家具设备的通信协议,是一种加密的(AES-128),基于UDP的协议,数据包格式如下所示:
| Magic number = 0x2131 | Packet Length (incl. header) |
|-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-|
| Unknown1 |
|-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-|
| Device ID ("did") |
|-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-|
| Stamp |
|-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-|
| MD5 checksum |
| ... or Device Token in response to the "Hello" packet |
|-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-|
| optional variable-sized data (encrypted) |
|...............................................................|
Token是加密双方后续通信内容的对称密钥,仅在初始化连接设备时被明文传输,后续所有指令和内容由Token加密后传输
data/payloads的格式使用的是JSON,如下所示
{
'id': XXX,
'method': 'miIO.config_router',
'params': {
'ssid': 'WiFi network',
'passwd': 'WiFi password',
'uid': YYY
}
}
3.3 RTSP
网络摄像头有时会支持RTSP来传输视频流。
RTSP(Real Time Streaming Protocol),RFC2326,实时流传输协议,是TCP/IP协议体系中的一个应用层协议,该协议定义了一对多应用程序如何有效地通过IP网络传送多媒体数据。RTSP在体系结构上位于RTP和RTCP之上,它使用TCP或UDP完成数据传输。
HTTP与RTSP相比,HTTP请求由客户机发出,服务器作出响应;使用RTSP时,客户机和服务器都可以发出请求,即RTSP可以是双向的。RTSP在体系结构上位于RTP和RTCP之上,它使用TCP或UDP完成数据传输。HTTP与RTSP相比,HTTP传送HTML,而RTSP传送的是多媒体数据。RTSP允许同时多个串流需求控制,传输时所用的网络通讯协定并不在其定义的范围内,服务器端可以自行选择使用TCP或UDP来传送串流内容,它的语法和运作跟HTTP 1.1类似,但并不特别强调时间同步,所以比较能容忍网络延迟。RTSP的网络模型如下:
其中RTSP负责建立和控制会话,RTP负责多媒体的传输,RTCP配合RTP做控制和流量统计。我们重点关注用于交互的RTSP协议。
一次基本的RTSP交互过程如下,C表示客户端,S表示服务端。
RTSP交互抓包:
客户端发起request
服务器回复
4 常见安全攻击面
根据OWASP 组织提出的“IoT Attack Surface Areas”,梳理出智能设备硬件、固件中可能存在的攻击面如下:
攻击面 | 风险点 |
硬件 | • 物理篡改 • 物理破坏 |
物理接口 | • 调试接口暴露 • 固件提取 • 获取用户CLI • 获取Admin CLI • 特权提升 • 重置至不安全状态 • 移除存储介质 • 设备ID/ 序列号泄露 |
固件 | • 敏感数据泄露 ▫ 后门账号 ▫ 硬编码密码 ▫ 加密key ▫ 加密算法(对称,非对称) ▫ 敏感信息 ▫ 敏感URL • 易受攻击服务(Web,SSH,TFTP 等) • 固件降级 |
内存 | • 敏感数据泄漏 ▫ 明文用户名 ▫ 明文密码 ▫ 第三方凭证 ▫ 加密key |
最后
以上就是平常故事为你收集整理的家用智能IOT设备间的架构交互与通信,以及安全攻击面1设备间架构2 常用的三种通信协议 3 一些补充协议,可能出现在部分设备中4 常见安全攻击面的全部内容,希望文章能够帮你解决家用智能IOT设备间的架构交互与通信,以及安全攻击面1设备间架构2 常用的三种通信协议 3 一些补充协议,可能出现在部分设备中4 常见安全攻击面所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复