1

物联网生态系统

在物联网世界论坛提出的参考模型中,将物联网生态系统划分为了7个层次。这7个层次分别是:

  1. 物理设备与控制器
  2. 互联互通
  3. 消息传输协议
  4. 数据汇聚
  5. 数据抽象
  6. 应用
  7. 协作与处理

1. 物理设备与控制器

物联网设备类型众多,专门为其中的某一类设备提出安全建议是一项较为困难的工作。然而,究其核心,物联网设备其实就是具备感知和通信能力的硬件设备。同时,某些物联网设备还具备执行、存储和处理能力。

1)硬件

当前市面上主流的物联网开发板包括Arduino、BeagleBoard、Pinocchio、Raspberry Pi和CubieBoard等。这些开发板主要用于搭建物联网解决方案的原型系统。开发板中包含可以用作设备大脑的微控制器(MCU)、内存,还有很多用于数字信号和模拟信号传输的GPIO(General Purpose Input/Output,通用输入/输出)引脚。同时开发板也可以与其他模块化板卡堆叠使用,进而实现通信功能,或者构建新的传感器、执行器,最终构建完成一套完整的物联网设备。

ARM、Intel、Broadcom、Atmel、Texas Instruments(TI)、Freescale和Microchip Technology等公司的MCU产品都可以用于物联网开发。MCU其实就是一块集成电路(Integrated Circuit,IC),其中包含处理器、只读存储器(Read Only Memory,ROM)和随机访问存储器(Random Access Memory,RAM)。在这些设备中内存资源经常是受限的。通常,通过为MCU添加完整的网络协议栈、接口以及无线或蜂窝移动通信信号收发器,制造商就可以将传统设备改造为物联网设备。所有这些工作最终构成了片上系统和小型子板(单片机)。

就物联网中所使用的传感器而言,其类型没有任何限制。举例来说,温度传感器、加速计、空气质量传感器、电位计、距离传感器、湿度传感器以及振动传感器等类型的传感器都可以用作物联网设备的传感器。这些传感器通常以硬连线的方式接入MCU,实现本地处理、响应执行等功能,也可以用作其他系统的中继。

2)实时操作系统

物联网设备通常采用实时操作系统(Real Time Operating System,RTOS)进行进程和内存管理,并为消息传输等通信服务提供支撑。对实时操作系统的选型应从产品所需的性能、安全和功能性等多方面进行考虑。当前可用的表1所示。

表1 实时操作系统

名称 描述
TinyOS 针对低功耗嵌入式系统进行了优化。框架中还包含了组件,为开发适用于特定应用的操作系统提供支撑。TinyOS系统采用NesC语言编写,可以支持事件驱动的并发

Contiki

该系统支持IP、UDP、TCP、HTTP协议,同时支持6loWPAN与CoAP协议,专为低功耗系统设计,支持基于802.15.4协议的链路层加密
Mantis 该系统是针对无线传感器平台的嵌入式操作系统,包括内核、调度程序和网络协议堆栈。同时支持远程更新和远程登录。系统可以采用睡眠模式来节约能耗。
Nano-RK 该系统专门为监视和环境监测应用进行了定制。系统支持节能运行模式,以及抢占式多任务处理,运行环境要求为2KB RAM和18KB ROM
Lite-OS 该系统提供了了通过无线访问的shell以及远程调试功能,体积只有10 KB
FreeRTOS 该系统为通用RTOS系统。支持TCP协议组网和安全通信(TLS)。用户可以使用加密库,例如FreeRTOS中的WolfSSL库
SapphireOS 该系统支持MESH组网并具备设备发现功能。系统中包含Python工具集,以及采用RESTful API接口设计的服务器
BrilloOS 该系统运行需要32MB~64MB RAM,并针对消费级物联网设备与家用物联网设备进行了优化
uCLinux 该系统是一款嵌入式Linux操作系统,支持多种应用、库和工具
ARM Mbed OS 该系统中包含安全监督内核(uVisor),可以在带有内存保护单元(Memory Protection Unit,MPU)的ARM Cortex M3、M4和M7等MCU中创建隔离安全域。
RIOT OS 该系统在8位、16位和32位平台上均可运行,支持TCP/IP协议栈,以及6LoWPAN、IPv6、UDP和CoAP协议。系统支持多线程,运行环境要求为1.5 KB RAM和5 KB ROM
VxWorks

该系统包含两个版本(VxWorks和VxWorks+)。通过可选的安全配置选项,系统可以实现安全分区、安全引导、运行时安全保护、程序加载器和高级用户管理。系统还支持加密容器和安全组网

LynxOS 该系统支持TCP/IP、IPv6协议和蜂窝通信。同时还支持802.11 Wi-Fi、ZigBee和蓝牙协议。此外,系统还提供加密、访问控制、审计和账户管理等功能
Zephyr 该系统是专门为资源受限系统设计的开源操作系统。该开源项目聚焦于安全开发实践。系统中实现了超微内核和微内核。支持蓝牙、低功耗蓝牙和基于802.15.4的6LoWPAN协议
Windows 10 IoT 该系统支持Bitlocker加密和安全引导。系统包含DeviceGuard和CredentialGuard功能。还支持WSUS(Windows Server Update Service)自动更新服务
QNX(Neutrino) 该系统通常用在车载信息娱乐系统当中,提供沙盒和细粒度访问控制等安全功能
Ubuntu Core 该系统是只读的根文件系统,应用均在安全沙盒中运行,同时会将应用更新(独立)同操作系统相隔离。在系统中,可将应用分为可信应用于不可信应用。系统还支持UEFI(Unified Extensible Fireware Interface)方式的安全引导
OpenWRT

该系统是一款流行的开源操作系统,常用于无线路由器

GreeHills IntegrityOS 该系统是一款符合高可信要求的操作系统

虽然许多物联网设备尺寸在不断缩小,但是借助强大功能的SoC单元可以运行多种能够实现安全引导的操作系统,同时具有严格的访问控制、进程隔离、可信执行环境、内核分离、信息流控制等功能,另外还可以同安全加密架构相集成。功能安全攸关的物联网设备还需要采用符合行业标准的RTOS。常用的行业标准规范包括:

  • DO-178B:机载系统和设备合格审定中的软件考量·
  • IEC 61508:工业控制系统的功能安全·
  • ISO 62304:医疗器械软件·
  • SIL3/SIL4:交通运输和核系统的功能安全完整性等级

其他一些重要的安全属性同安全配置及安全敏感参数的存储有关。通常情况下,如果未向RAM提供备用电源或者也没有其他持久性存储设备,那么操作系统重启后配置设置就会丢失。因此,很多情况下会将配置文件保存在持久性存储设备中,需要时再从中提取出网络等各种配置信息,基于这些配置信息,设备就可以正常运行并进行通信。更加值得关注的是设备在重启时对存储于其中的root用户口令、其他账户口令以及密钥的处理方式。上面每种情况都可能存在一个或多个安全隐患,安全工程师对此要予以关注。

3)网关

边缘设备和Web服务之间的端到端(end-to-end)连接主要通过一系列实体网关和云网关设备来实现,每台网关都会汇聚大量数据。Dell、Intel等公司都在市场上推出了物联网网关设备。Systech等公司还推出了多协议网关,采用多组天线和接收器,多协议网关可以将不同类型的物联网设备互连在一起。同时,各大厂商还推出了面向普通用户的消费级网关,也称为Hub,用来为智能家居通信提供支持。三星公司推出的SmartThings Hub就是一个例子。

4)物联网集成平台与解决方案

Xively、Thingspeak等公司均提出了灵活的开发解决方案,用来将新兴的物联网设备集成到企业架构当中。在智慧城市领域,Accella和SCOPE等平台都是基于云端的智慧城市开放平台和生态系统,借助上述平台可以将各种物联网系统集成到企业解决方案当中。

同时,这些平台也为物联网设备开发人员提供了API接口,开发人员可以利用API接口开发新的功能和服务。物联网开发人员已经开始越来越多地应用这些API接口,利用它们可以方便地将物联网设备集成到企业的IT环境当中。例如,如果要实现基于HTTP协议的通信,那么物联网设备就可以采用ThingsPeak API。之后,机构还可以通过调用API从传感器中捕获数据、分析数据,继而对数据进行操作。与之类似,AllJoyn是AllSeen联盟的一个开源项目。该项目主要聚焦于物联网设备之间的互操作性,也就是说,即使设备采用了不同传输机制,设备之间也可以进行互操作。随着物联网的不断成熟,不同的物联网组件、协议和API会不断地“黏合”在一起,进而共同构建起功能强大的企业级物联网系统。而这种趋势带来了这样一个问题:这些系统的安全性怎么样呢?

2. 互联互通

物联网的互联互通已经比较成熟了,有很多通信和消息传输标准都可以被物联网系统采用。

1)传输层协议

无论是TCP协议(Transmission Control Protocol,传输控制协议)还是UDP协议(User Datagram Protocol,用户数据报协议)在物联网系统中都有用武之地。举个例子,REST就是基于TCP协议的,而且MQTT协议在设计之初也是用来同TCP协议配合使用的。但是,由于需要对时延、带宽受限的网络和设备提供支持,所以也可以从TCP协议转向采用UDP协议。例如,MQTT-SN就是MQTT的定制版本,其采用UDP协议进行通信。其他如CoAP等协议也被设计为能够基于UDP协议工作。如果传输层严重依赖UDP协议,那么可以采用DTLS协议(Datagram Transport Layer Security,数据报传输层安全协议)等协议替换TLS协议(Transport Layer Security,传输层安全协议),从而确保UDP通信的安全。

2)网络层协议

无论是IPv4协议还是IPv6协议,在众多物联网系统中均占有一席之地。而由于很多物联网设备运行在网络受限的环境当中,因此需要对协议栈进行定制,举个例子,物联网设备可以采用6LoWPAN协议(IPv6 over Low Power Wireless Personal Area Network,基于低功耗无线个域网的IPv6协议),进而在网络受限的环境中使用IPv6协议。而且,受各种因素所限,物联网设备无线连接到互联网的传输速率较低,而6LoWPAN协议的设计初衷也包括为数据传输速率较低的无线互联网连接提供支持,从而可以满足此类设备的需求。

除此之外,6LoWPAN也可以基于802.15.4协议实现,即LRWPAN协议(Low Rate Wireless Personal Area Network,低速无线个域网络),作用是创建适配层为IPv6协议提供支持。在适配层可以对IPv6与UDP协议首部进行压缩,还可以实现数据分片,从而为不同用途的传感器提供支持,其中就包括用于楼宇自动化与安全保障的传感器。利用6LoWPAN协议,设计者既可以采用IEEE 802.15.4协议实现链路层加密,也可以采用DTLS等协议实现传输层加密。

3)数据链路层和物理层协议

低功耗蓝牙(Bluetooth Low Energy,BLE)、ZWave和ZigBee等射频(Radio Frequency,RF)协议可以用于物联网设备之间、物联网设备同网关之间的通信,然后这些设备再使用LTE或以太网等协议与云端通信。Tjensvold、Jan Magne于2007年9月18日发表的论文(《Comparison of the IEEE 802.11,802.15.1,802.15.4,and 802.15.6 wireless standards》)对802.11、802.15.1、802.15.4和802.15.6等无线通信标准进行了比较。该论文的URL链接为https://janmagnet.files.wordpress.com/2008/07/comparison-ieee-802-standards.pdf。

在能源行业中,主要采用WirelessHART标准和Insteon等电力线通信(Power Line Communication,PLC)技术进行设备间的通信。电力线通信报文直接通过已有的电力线进行路由转发,从而实现了对接电设备的控制与监控,读者可以参考链接https://www.eetimes.com/document.asp?doc_id=1279014进行了解。无论是家用场景还是行业用例,都可以采用电力线通信技术。IEEE 802.15.4协议相对于ZigBee、6LoWPAN、WirelessHART以及Thread等物联网通信协议,IEEE 802.15.4作为物理层和数据链路层协议其作用非常重要。IEEE 802.15.4协议的设计初衷是用来实现点对点(point-to-point)或星形拓扑网络的通信,适用于低功耗或低速网络环境。采用IEEE 802.15.4协议的设备工作频率范围为915MHz~2.4GHz,数据传输速率最高可达250kb/s,通信距离约为10m。该协议物理层可以管理射频网络访问,MAC层可以管理数据链路中数据帧的收发。

4)ZWave协议

ZWave协议支持网络中3种数据帧的传输,分别是单播、多播和广播。其中,单播通信(即直接通信)需要接收方予以确认,而多播和广播均不需要确认。采用ZWave协议的网络由控制端(controller)和被控端(slave)组成。当然,实际应用中也存在变化。例如,有些用例中就同时采用了主控制端和二级控制端。其中,主控制端主要负责网络中节点的添加/移除。ZWave协议可以在908.42MHz(北美)与868.42MHz(欧洲)频率上运行,传输速度为l00kb/s,传输距离约为30m。

5)低功耗蓝牙

蓝牙/智能蓝牙(Bluetooth Smart)也被称为低功耗蓝牙,是蓝牙协议的改进版本,目的是延长电池寿命。智能蓝牙默认进入休眠模式,只在需要时才被唤醒,以实现省电的目的。两种协议的工作频率均为2.4GHz。智能蓝牙采用了高速跳频技术,并且支持采用AES加密技术对通信内容进行加密

6)蜂窝移动通信

LTE通常指的是4G蜂窝移动通信技术,也是物联网设备常用的通信方式。在典型的LTE网络中,诸如智能手机(也可以是物联网设备)之类的用户设备(User Equipment,UE)内置USIM卡,通过USIM卡实现认证信息的安全存储。而利用存储在USIM卡中的认证信息,可以向运营商的鉴权中心(Authentication Center,AuC)进行身份认证。使用时,需要向USIM卡(制造时)和鉴权中心(订阅时)分发对称预共享密钥,然后使用该对称密钥生成接入安全管理实体(Access Security Management Entity,ASME)。利用ASME再生成其他密钥,用于信令和用户通信的加密。由于5G通信具有更高的吞吐量可以支持的连接数更多,因此在未来5G通信的应用场景下,物联网系统的部署方式会更加多样。物联网设备可以同云端直接建立连接,同时还可以加入集中控制器功能,来对部分基础设施中的地理位置分散的大量传感器/执行器提供支持。未来,随着功能更加强大的蜂窝移动通信的推广应用,云端将成为传感器数据、Web服务交互以及大量企业应用接口的汇聚点。

除了之前讨论的通信协议外,物联网设备还用到其他诸多通信协议。表2是对这些协议的简单介绍。

表2 物联网设备常用通信协议

通信协议 介绍
GPRS 所有的数据和信号均采用GPRS加密算法(GPRS Encryption Algorithm,GEA)加密,SIM卡主要用于存储身份信息和秘钥
GSM 基于时分多址(Time Division Multiple Access,TDMA)的蜂窝移动通信技术,SIM卡用于存储身份信息和秘钥
UMTS 信令和用户数据采用128位长度的秘钥和KASUMI算法加密
CDMA 基于码分多址(Code Division Multiple Access,CDMA)的蜂窝移动通信技术,不使用SIM卡
LoRaWAN Long Range Wide Area Network 远距离广域网。支持的数据传输速率范围为0.3Kbps~50Kbps。LoRaWAN网络在传输过程中用到了3种秘钥,分别是:唯一的网络会话秘钥、负责保证端到端安全的唯一应用会话秘钥和针对具体设备的设备访问秘钥
802.11 即Wi-Fi,可用于多种场景的标准无线技术
6LoWPAN 低功耗无线个人局域网(Personal Area Network,PAN),设计初衷是使用LoWPAN引导服务器向6LoPAN设备分发引导信息,以实现设备的自动入网。6LoWPAN网络中包括认证服务器、支持可扩展认证协议(Extensible Authentication Protocol,EAP)等认证机制。用户也可以为引导服务器配置设备黑名单
ZigBee ZigBee在物理和MAC层采用802.15.4协议。ZigBee网络可采用星型、树型和MESH等拓扑结构,ZigBee协议可以提供秘钥建立、秘钥传输、数据帧保护和设备管理等安全服务
Thread 该协议在物理层和MAC层采用802.15.4协议。Thread网络可支持多大250台设备的连接。协议采用AES加密算法保护网络传输。协议中还会用到口令认证秘钥交换协议(Password Authentication Key Exchange,PAKE)。新加入的节点使用Commissioner设备和DTLS协议创建秘钥对,该秘钥可用于网络参数的加密
SigFox 该协议采用超窄带(Ultra Narrow Band, UNB)通信技术,运行频率分别为915MHz(美国)和868MHz(欧洲)。设备采用私钥对消息进行签名。每台设备每台可以发送140条消息,SigFox可以采用抗重放保护机制
NFC 近场通信(Near Field Communication,NFC)该协议提供的安全保护机制较为有限,所以通常与其他协议结合使用。该协议主要用于短距离通信
Wave 1609 在网联汽车通信中普遍应用。该协议依赖IEEE 1609.2证书,借助证书实现属性标记

3. 消息传输协议

MQTT协议(Message Queuing Telemetry Transport,消息队列遥测传输协议)、CoAP协议(Constrained Application Protocol,受限应用协议)、DDS协议(Data Distribution Service,数据分发协议)、AMQP协议(Advanced Message Queuing Protocol,高级消息队列协议)以及XMPP协议(Extensible Messaging and Presence Protocol,可扩展消息处理现场协议)都运行于底层通信协议之上,用于客户端和服务器端协商数据交换格式。很多物联网系统也采用REST架构实现高效通信。在本书撰写时,REST架构和MQTT协议均是物联网系统的主流选择。

1)MQTT

MQTT协议基于发布/订阅模型,其中客户端负责主题订阅,以及维护同消息代理(message broker)之间不间断的TCP连接。当新的消息发送给消息代理时,会在消息中包含主题,消息代理可以据此判断哪个客户端应当接收该消息。消息通过不间断的连接推送到客户端。基于MQTT协议的物联网架构如图1所示。

 

 图1基于MQTT协议的物联网架构示意图

MQTT模型可以支持多种应用场景,其中传感器发布数据,然后消息代理将数据传送给订阅系统,由其接收传感器数据或者做进一步处理。虽然MQTT协议主要适用于基于TCP协议的网络,而在无线传感器网络(Wireless Sensor Networks,WSN)中,则可以使用MQTT-SN协议,MQTT-SN协议(MQTT For Sensor Networks,MQTT-SN)是对MQTT协议的优化,专门用于传感器网络。对于很多采用电池供电方式的设备而言,其处理能力与存储资源均有限,MQTT-SN协议对此专门进行了优化调整。采用MQTT-SN协议,基于ZigBee协议等类似无线协议的传感器和执行器也能够使用发布/订阅模型。[插图]如果想了解更多内容,可以查阅IBM公司Stanford-Clark与Linh Truong于2013年发表的论文《MQTT For Sensor Networks protocol specification》,Version l.2。论文链接为http://mqtt.org/new/wp-content/uploads/2009/06/MQTT-SN_spec_v1.2.pdf。

2)CoAP

CoAP也是一种物联网消息传输协议,其基于UDP协议,主要针对资源受限联网设备(例如无线传感器网络节点)的应用场景而设计。CoAP协议采用DTLS协议提供安全保护。CoAP协议共有4种消息类型,很容易同HTTP的请求方式对应起来,这4种消息类型分别是GET、POST、PUT和DELETE,基于CoAP协议的传感器网络架构如图2所示。

 

 图2 基于CoAP协议的传感器网络架构示意图

基于CoAP协议的设备在同Web服务器通信时采用特定的统一资源标记符(Uniform Resource Indicator,URI)进行命令处理。智能灯泡开关就是现实中采用CoAP协议一个实例,开关只需要发送一条命令,就可以操纵系统中的灯泡(改变状态或颜色)。

3)XMPP

XMPP协议是一个基于可扩展标记语言(Extensible Markup Language,XML)的开放式协议,主要用于实时通信。它由Jabber即时通信(IM)协议演化而来。相关信息请查看https://developer.ibm.com/tutorials/x-xmppintro/。XMPP支持基于TCP协议的XML消息传输,采用该协议,物联网开发人员可以高效地实现服务发现和动态实体发现等功能。XMPP-IoT协议是XMPP的一个改进版本。类似于人与人交流的场景,XMPP-IoT协议通信过程从“添加好友”请求开始。想了解更多信息请查看链接http://www.xmpp-iot.org/basics/being-friends/。一旦“添加好友”请求通过,那么两台物联网设备就可以进行通信了,而无须考虑双方是否处于同一个域。基于XMPP-IoT协议的设备之间存在父子关系。XMPP-IoT协议中的父节点可以制定信任策略,指示可以同哪些设备建立连接。而如果两台物联网设备之间的“添加好友”请求未得到通过,那么双方无法继续进行通信。

4)DDS

DDS协议是数据分发协议,主要用于智能设备的集成。类似于MQTT协议,DDS协议也基于发布/订阅模型,读者可以订阅感兴趣的主题,基于DDS协议的物联网架构示意图如图3所示。

 

 图3 基于DDS协议的物联网架构示意图

由于无须在终端之间建立联系,因此DDS协议能够以匿名和自动化的形式进行通信。另外,DDS协议还提供了服务质量(Quality of Service,QoS)保障机制。该协议的设计初衷是用来实现设备到设备(device-to-device)的通信,当前已在多个场景进行了部署,包括风力发电场、医学成像系统和资产追踪系统。

5)AMQP

AMQP协议的设计初衷是提供一个队列系统以支持服务器到服务器(server-to-server)的通信。在物联网场景中,AMQP也能够实现发布/订阅模型以及点对点的通信。采用AMQP协议的物联网终端可以监听到每条队列中的消息。如今,AMQP已经在多个领域有所应用,例如在交通运输中,车辆遥测设备就采用了AMQP协议向分析系统提交数据,从而实现了准实时处理。

posted @ 2022-09-06 20:09  Bonne_chance  阅读(1407)  评论(0)    收藏  举报
1