书名:物联网信息安全技术
ISBN:978-7-115-50571-2
本书由人民邮电出版社发行数字版。版权所有,侵权必究。
您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。
我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。
如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。
著 张小松 刘小珍 牛伟纳
责任编辑 吴晋瑜
人民邮电出版社出版发行 北京市丰台区成寿寺路11号
邮编 100164 电子邮件 315@ptpress.com.cn
网址 http://www.ptpress.com.cn
读者服务热线:(010)81055410
反盗版热线:(010)81055315
本书旨在帮助读者全面、系统地掌握物联网(IoT)安全的相关知识、原理和技术。本书从IoT的认识、理解与安全概述开始,详细介绍攻击界面、漏洞威胁和网络安全危害等重点知识,然后针对智能家居、智能汽车、智能穿戴设备等典型应用场景,详细分析其中存在的安全风险,最后介绍IoT安全分析的技术、方法和所用工具,并展望了信息技术的发展可能为IoT安全带来的影响。
本书可作为计算机、网络通信、信息安全、软件工程等相关专业的参考用书,也可作为物联网及安全行业从业者、对信息安全感兴趣的读者的自学读物。
近年来,随着通信技术的发展,第五代移动通信技术已经面世,为物联网技术的应用提供了更为广阔的平台。同时,芯片的工艺与架构也在稳步前进,使得物联网设备拥有了更强大的功能。这些都将促进物联网技术的应用,但是相关的安全问题也随之而来。物联网技术的目标是“万物互联”,随着“万物互联”时代大幕的拉开,与物联网技术相关的安全问题也面临着更为广泛、更为严重的威胁。
目前人们的研究热情与精力主要集中在物联网技术的研发与应用上,关于物联网技术应用过程中的安全问题虽然在一定程度上引起了人们的关注,但是其相关研究还处于较为不成熟的阶段。2015年乌克兰电网被攻击、2017年发生在俄罗斯的电网渗透、2018年Twitter被曝用户密码泄露……物联网安全事件频频发生,这在很大程度上制约着物联网技术的应用与发展。
目前,国内物联网安全类相关图书较少,本书从攻防的角度全面讲解了物联网安全领域的相关问题及其应对方式,为读者提供了一种新的阅读角度。具体来讲,本书从概念出发,从物联网及其安全入手,深化了读者对物联网与物联网安全的认知;接着,对物联网“安全威胁”的攻击方式、应用场景以及危害进行了详细的描述与讲解,让读者对物联网安全问题有更加深入的认识;最后,讲解了多种应对物联网威胁的方式,让读者了解应对物联网安全威胁的思路与最新的技术。本书按照“概念—具体案例—应对方式”的思路组织内容,逻辑清晰、条理清楚,适合初学者了解物联网安全领域的相关技术,也适合安全从业人员进一步了解在物联网环境下所面临的新威胁与应对这些威胁的新思路。
本书由我熟悉的网络安全领域的教授与同事编写,他们长期在第一线进行相关项目的研究工作,有着丰富的研究经验和扎实的理论基础。编写高质量的技术图书,需要丰富的科研经验,还需要对国际上相关领域的发展前沿有着准确的把握和了解,而这些正是本书的编写团队所具备的。本书的编写,结合了大量的国内外文献与作者在科研过程中所面临的问题与解决方式,做到了理论与实践的结合;同时也加入了作者对相关问题的认识,生动形象地阐明了物联网安全的相关概念,是一本不可多得的、面向初学者的物联网安全技术类图书。
中国科学院院士
改革开放40多年来,从互联网到物联网,网络技术的变革不仅见证了时代进步,也重新定义了人们的生活方式。“物联网”这一概念自2005年被正式提出后,联网设备数量快速增长,据高德纳公司预计,其复合年均增长率高达40%;随着5G通信技术的发展,“万物互联”产业规模不断扩大,相关企业如雨后春笋般不断涌现,据统计,仅我国物联网市场规模就已破万亿。物联网拉近了物理世界与虚拟世界的距离,促进了世界信息产业的发展,提高了人们的生产效率,改善了人们的生活质量。随着物联网技术的持续发展和人们对物联网认识的不断深入,物联网被赋予了新的内涵,由此衍生出新的应用场景以及众多与之结合的线上、线下新型经济模式,物联网的行业渗透率快速提升,跨界应用迅速崛起。
数以亿计的设备加入物联网,给人们的生产、生活带来极大便利,然而其网络安全问题也不可忽视。目前,国内虽有网络安全标准但尚未形成完善体系,部分智能设备制造商在产品研发过程中缺乏安全意识和安全投入,给物联网安全埋下隐患。不少电影中的情节也引发了人们对物联网安全的担忧,例如在《速度与激情 8》中,反派为了制造混乱的道路环境,入侵了道路上甚至车店里的汽车系统,使得所有汽车进入了自动驾驶模式,一起涌向街道,顿时车祸横生,给人们的生命财产安全造成了极大的威胁。电影场景中出现的物联网攻击事件并非凭空设想,美国网络安全专家查利•米勒(Charlie Miller)和克里斯•瓦拉塞克(Chris Valasek)曾“黑入”了一辆切诺基吉普车系统,并远程控制了车的行驶速度,操控其空调、雨刮器、电台等设备,甚至把车“开进沟里”。物联网被攻击事件屡屡发生,不只局限于智能汽车行业,还延伸到智能家居、视频监控、智能医疗等其他领域。媒体曾报道世界各地某些物联网设备因存在漏洞或弱口令而被控制利用、开展大规模DDoS攻击的案例,造成巨大经济损失。一旦发生严重的物联网安全事件,除了隐私信息泄露、经济损失以外,交通、能源、金融、电信等方面的关键基础设施也可能会受到威胁。显然,物联网安全需要国家、行业以及民众高度重视。
目前,国内的物联网设备安全类图书较少,本书从攻防的角度全面讲解物联网设备安全领域的相关问题与应对方式,面向物联网技术爱好者尤其是安全从业者和大专院校学生,针对物联网设备安全问题和安全技术进行广泛分析和探讨。
本书共包括10章内容。第1章和第2章侧重于物联网及其安全的基础知识介绍;第3~5章从攻击界面、漏洞威胁和网络安全危害三个方面,对物联网系统的安全研究切入点、典型漏洞和虚拟现实方面的危害进行系统性讨论,这部分内容具有普适性;第6~8章针对智能家居、智能汽车、智能穿戴等应用场景的具体特点,开展安全分析和案例介绍,提供全面的学习素材;第9、10章着重介绍物联网安全分析的技术及工具,并提出未来结合5G、AI等技术可能的发展趋势,既为读者提供学习、实践的机会,又利于读者对研究趋势的把握。
本书内容主要源于电子科技大学网络空间安全研究院、成都网域探行科技有限公司等近年来在网络系统安全领域的研究成果。在编写本书的过程中,写作团队得到了国家自然科学基金项目(61572115)和国家重点研发计划“网络空间安全”重点专项(2016QY04W800)的大力支持。相关老师、博士研究生、硕士研究生和科研人员在张小松院士的带领下共同完成本书的编写。张小松院士设计了本书的总体架构,组织并指导各章的编写工作;刘小珍老师负责第1~5、9、10章的编写工作;牛伟纳老师负责第6~8章的编写工作。此外,启明星辰信息技术集团股份有限公司的王东博士负责对本书的关键原理知识和重点案例进行梳理;肖海斌等同学收集、整理了相关的论文、文献和其他素材,并参与了部分内容的修订。感谢人民邮电出版社各位编辑的精心编校,没有大家的辛勤努力和耕耘,本书就无法顺利和读者见面。
由于笔者水平有限,书中难免有疏漏之处,敬请广大读者批评指正。
本章先介绍IoT的基本含义,然后逐步介绍其体系结构(包括IoT网络架构、智能硬件设备、移动智能终端、IoT云端资源、IoT通信管道和IoT通信协议),旨在让读者对IoT有一个直观的认识,为学习后续内容打下基础。
信息技术和网络技术的快速发展,让我们的工作和生活日新月异。在现实世界中,与我们紧密相关的信息网络主要有三大类:第一类是传统的互联网(Internet),即“计算机互联网”,它是其他网络类型的根基;第二类是“移动互联网”(Mobile Internet,MI),即把传统互联网的技术、平台、应用与移动通信技术、移动终端相结合的网络类型,其正向应用和安全性已为学术界和产业界所广泛研究,因此本书不进行重复介绍;第三类是物联网(Internet of Things,IoT),它是在前两类网络基础上延伸发展的网络类型,目前正处于高速发展阶段,各类应用层出不穷,这是本书的主要介绍内容。此外,工业物联网(Industrial Internet of Things,IIoT)也是一类常见的网络,主要由大量工业设备联网构成,学术界和产业界将其归为另一类网络,因此也不将其列入本书探讨的范畴。
IoT是“信息化时代”的一个重要组成部分。事实上,它由来已久。早在1995年,比尔·盖茨在The Road Ahead一书对未来的描述中,就已提及“物联网”的构想:“互联网仅仅实现了计算机的联网而没有实现万事万物的互联。虽然现在看来这些预测不太可能实现,甚至有些荒谬,但是我保证这是本严肃的书,而绝不是戏言,十年后我的观点将会得到证实。”1999年,麻省理工学院Auto-ID中心的Ashton教授在研究射频识别(Radio Frequency Identification,RFID)时首次提出了“物联网”的概念,但由于当时的技术条件和社会条件都还不成熟,这一概念提出之后未能得到重视。2005年,国际电信联盟(International Telecommunications Union,ITU)发布的《ITU互联网报告2005:物联网》报告中指出“无所不在的物联网通信时代即将来临”,这进一步扩展了物联网的意义和范畴。经过十几年的发展,IoT的技术框架和应用场景已日趋丰富,深刻影响着社会的方方面面。此外,IoT设备数量也在飞速增长,根据高德纳(Gartner)和HIS等机构的预测,2021年至2022年,全球IoT设备数量至少将超过200亿,覆盖传感设备、移动终端、PC主机、网络设备等类型,设备智能化程度也持续提升。可以预见,5G、人工智能(Artificial Intelligence,AI)和区块链(blockchain)等技术推广应用之后,将很快呈现“世上万物凡存在,皆互联;凡互联,皆计算;凡计算,皆智能”的景象。
当然,IoT作为新兴的网络类型,至今依然没有“标准”定义。本书引用一个目前普遍接受的定义:通过射频识别技术(RFID)、红外感应器、全球定位系统(GPS)、激光扫描器等信息传感设备,按约定协议,把物品与互联网连接起来,以实现智能化识别、定位、跟踪、监控和管理的一种网络。
简言之,IoT就是物物相连的互联网,可以把“物品”理解为IoT设备。这句话有三层含义:一是IoT的核心和基础仍然是互联网,IoT是在互联网基础上延伸和扩展的网络,即IP架构是IoT的基础架构;二是IoT的网络终端范畴延伸到了物与物之间,进行信息交换和通信;三是设备是IoT的必备要素与核心部件。
学术界对IoT的理解是,随着人工智能、边缘计算和5G传输的应用,未来IoT应具有“精确感知、可靠传输、智能处理”3个特点。无人机、网络打印机等都可以纳入广义的IoT设备范畴。
IoT已广泛应用到社会和生活的方方面面,典型的应用场景如图1-1所示。其覆盖大众消费、公共设施等不同领域,主要包括智能家居、智能监控、车联网、智能穿戴和智慧城市等。本书将共享单车(共享经济系列)、智能物流、智能交通、智慧能源以及智能防灾等应用场景均归入智慧城市。
图1-1 IoT典型的应用场景
应用场景简要描述如下。
(1)智能家居。智能家居对应的英文名称为smart home或home automation,它以住宅为基础平台,利用综合布线、无线/有线网络通信、安全防护、自动控制以及音视频等技术,有效集成家居生活设施,使家居生活更便利和舒适,打造良好的家居环境。典型的智能家居设备包括门锁、摄像头、家用路由器、电器(如电视、音箱、空调、插座、扫地机器人)等。
(2)智能监控。智能监控以网络摄像头设备为中心,用于环境监控与安防告警,通常是指公共环境(如学校、企业、商场、餐厅、地铁站等众多场景)中部署的监控系统,实际上也包括家居网络环境中的视频监控系统。
(3)车联网。车联网是以联网汽车(包括普通联网汽车和智能联网汽车两大类型)为信息感知对象的IoT网络,由车载网和外部网络组成,按照既定通信协议和数据交互接口,实现车与X(X代表其他车辆、公路设施、移动互联网)之间的无线通信和信息交换。主流厂商的新车大多具备智能联网特点。
(4)智能穿戴。穿戴医疗设备又称智能穿戴设备,能穿在身上或贴身佩戴并采集、发送信息。典型的智能穿戴设备包括智能手表、手环、眼镜等。这些设备本质上是在日常穿戴物品基础上增加了智能化设计,用微型传感器达到与人体无缝接入的目的,采集的人体信息包括心率、步数、体温、睡眠状况、血压和呼吸频率等。智能穿戴设备与云端服务互通,通过云端的计算和分析把结果反馈给用户,帮助用户实现健康管理。
(5)智慧城市。智慧城市对应的英文名称为smart city,它是IoT应用的综合范畴,将IoT为代表的新一代信息技术继承到城市系统及服务中,提升城市资源的运用效率,优化城市管理及服务,改善市民的生活质量。其常见场景如共享单车、智能物流、智能交通、智慧能源、无人超市、远程医疗、智能防灾等。部分描述如下。
● 共享单车。共享单车是非常典型的IoT应用,也是城市共享经济的代表,是指在校园、车站、地铁站、居民点、商业区等提供分时租赁的自行车(单车)共享服务,也是近几年“绿色环保共享经济”的典型代表。目前的共享单车品牌包括美团单车、青桔单车、哈啰出行等。
● 智能物流。智能物流是IoT在物流运输领域的应用,其将条形码、射频识别、传感器、全球定位系统(GPS)等IoT设备或技术与信息处理、网络通信平台相结合,应用于物流的仓储、包装、配送、运输、装卸等各个环节,实现货物运输过程的自动化运作和高效率优化管理,提高物流行业的信息化、智能化、系统化运营水平。
● 智能交通。智能交通代表交通管理系统的发展方向,其将IoT关键技术与地面交通系统相结合,推进交通信息的广泛应用与服务,同时提升交通基础设施的运行效率。典型的应用场景包括ETC、智慧路灯等。
● 智慧能源。智慧能源是指通过技术创新和制度变革,将城市生活中的水、电、气等能源开发利用、生成消费全过程与IoT关键技术相融合,呈现更加安全、充足、清洁的能源,使生态环境更加宜居。
● 智能防灾。智能防灾是指将IoT关键技术与城市、山区的自然灾害预防相结合,将大量能够自组网的传感器散播在敏感地域,通过自组网来描述环境状态。一旦环境状态发生变化,该自组网能快速感知,将信息通过网络传输到云端处理平台并发出告警提示。
● 其他IoT应用场景。如消费级无人机、办公打印机等,本书也将其纳入IoT行列。
综合IoT、传统互联网和移动互联网的各自特点,三者的概要对比如表 1-1 所示。为了以统一尺度描述,我们将互联网和IoT的云端统称为“云端”。相比而言,IoT更加注重网络互联和网络控制,它的整个运行机制都是通过网络和协议来实现的,凸显了网络和协议的重要性;传统网络安全更偏重系统和软件,因为其用户的接触面和接触程度更广、更深。
表1-1 IoT与传统互联网、移动互联网之间的概要对比
对比要素 |
IoT |
传统互联网 |
移动互联网 |
---|---|---|---|
网络层次 |
三层:感知层、网络层和应用层 |
缺少感知层 |
缺少感知层 |
网络组成 |
“端—管—云”:“端”即智能硬件设备和移动智能终端,“云”即云端,“管”即通信管道(如线路、网关传输设备) |
PC终端、通信管道和云端 |
移动终端、通信管道和云端 |
终端类型 |
嵌入式设备为主,计算资源有限; |
PC终端(计算机、服务器)为主,计算资源充足 |
移动终端为主(如手机、平板等),计算资源比较充足 |
通信关系 |
设备—云端 |
计算机—云端 |
移动终端—云端 |
操作系统 |
嵌入式操作系统,如嵌入式Linux、Android、QNX、RTOS等 |
通用计算机操作系统,如Windows、UNIX、Linux、macOS等 |
专用移动操作系统,如Android、iOS等 |
网络节点 |
IoT网关、IoT传输设备 |
路由器、交换机和防火墙等 |
共用互联网节点,以及移动通信专用节点等 |
通信协议 |
网络接入协议、网络应用协议和GPS协议 |
互联网接入,TCP/IP为主 |
3G/4G/5G移动接入、Wi-Fi接入,在此基础上的TCP/IP |
产品安全要求 |
IoT产品厂商对安全开发及测试的要求不一,整体上逐渐重视 |
厂商通常具备严格的安全开发规范及测试流程 |
厂商通常具备严格的安全开发规范及测试流程 |
IoT以IP网络为参考框架。按照数据的采集、传输、处理流程,网络层次主要分为两种模型,一种是IoT三层模型,另一种是IoT四层模型,如图1-2所示。二者的区别是IoT四层模型对网络层进行了进一步拆分。这里给出了两种网络层次模型的含义,但为统一描述,本书将以IoT三层模型的描述为主。
图1-2 两种IoT网络层次模型
(1)IoT三层模型。IoT三层模型自下而上包括感知层、网络层和应用层。
● 感知层。感知层是IoT数据的最初来源,主要负责采集数据。感知层通过常规传感器获取(如音频、视频、图像等)、二维扫描、GPS定位等多种途径采集数据,并将数据进行转换和一定的预处理后以特定格式传递给网络层。
● 网络层。网络层主要负责设备接入和数据传输。设备接入的目的首先是构建数据传输通道,重点是设备到云端的接入;其次是设备到设备的连接。接入方式包括近场接入(如Wi-Fi、蓝牙、ZigBee、NFC、车内总线等)和基于移动互联网线路(如3G、4G、5G等)的远程接入。数据传输基于接入通道将感知层采集的数据传输到应用层作进一步分析处理。
● 应用层。应用层主要负责对网络层传输来的数据进行分析处理,最终为用户提供丰富的应用服务,如家居管理、健康分析、单车开锁、车辆定位等。依靠感知层提供的数据和网络层的传输,应用层进行相应处理后,数据可能再次通过网络层反馈给感知层。
(2)IoT四层模型。同IoT三层模型相比,IoT四层模型对网络层做了进一步拆分——把设备接入专门划为一层,即接入层。接入层的主要职能是解决智能设备到云端并发接入的问题,这是因为一些IoT应用场景中智能设备的数量级较大(十万级、百万级甚至更大),如果不处理并发接入问题,那么很可能会影响云端的处理效率。在IoT四层模型中,网络层的功能简化成以数据传输为主,感知层和应用层的功能与IoT三层模型基本一致。
接下来我们介绍IoT的具体组成部件。IoT是以IP架构为参考的多网络叠加开放性网络,信息传输路径会经过各种网络和节点,其基本网络架构以及同IoT三层模型的对应关系如图1-3所示。它具备“端—管—云”三大要素,“端”指的是IoT终端,包括各种智能硬件设备和以手机为主的移动智能终端;“云”是指云端,即为IoT提供各种服务的云平台和服务资源;“管”是指终端之间、终端与云端之间的通信管道,包括网络通信线路和网关传输设备。
图1-3 IoT基本网络架构以及同IoT三层模型的对应关系
我们将在后文详细介绍IoT的组成部件,在这里只做概要描述。
(1)智能硬件设备(端)。智能硬件设备理论上分为两类,一是采集外界数据的传感器,二是负责局部计算处理功能的应用终端。随着AI和边缘计算日益普及,二者大多集成在同一IoT设备中,如家用摄像头(摄像拍照+部分计算分析)、智能门锁(锁功能+人脸识别)、智能音响(语音录入+语音识别)等。后文中,智能硬件设备、智能设备、硬件设备、终端设备等称谓均指这类对象。
(2)移动智能终端(端)。其主要是指智能手机,是IoT的重要用户接口,用户可以通过移动应用(Application,App)对IoT中的智能设备进行配置管理和状态查询;同时,在某些场景下移动智能终端还起到硬件设备的通信网关(如蓝牙网关等)作用。移动智能终端按操作系统一般可分为安卓(Android)手机和苹果手机。
(3)通信管道(管)。IoT通信管道包括“虚”和“实”两部分:“虚”的部分主要是指IoT网络通信协议;“实”的部分主要是指承载通信的信道链路和配套的网关传输设备,前者分为无线信道和有线信道(如光纤、网线等),后者包括路由器、各种IoT网关中控(如ZigBee网关、车载网关等)、防火墙设备等。
(4)云端(云)。云端通常部署在互联网中,其主要功能是IoT数据管理和面向行业的计算应用。除数据管理外,云端还作为智能设备和用户(智能手机)之间的通信“汇集区”,承载设备辅助管理和用户管理等功能。
按照最初的IoT设计,应用层数据处理和计算都集中在云端,如早期的家用网络摄像头只具备数据的采集与上传功能,数据分析和业务处理则在云端进行。随着处理性能的提高和应用场景的丰富,部分面向行业应用的计算处理已变为放在智能设备开展。因此,应用层实际上可能分布在智能设备和云端。
IoT通信涉及设备接入和数据传输,各部件之间的通信方式如图1-4所示。IoT通信以IoT智能设备到云端的接入通信为主线,兼顾智能手机的作用,大致包括设备直连通信、Wi-Fi代理通信、手机代理通信(手机作为特殊网关)和USB总线通信4种类型。
图1-4 IoT各部件之间的通信方式
(1)设备直连通信。设备直连通信主要涉及可移动类 IoT 设备,是指智能硬件设备通过3G/4G/5G等移动通信线路直接接入云端通信,如图1-5所示。设备直连通信的前提是设备集成了嵌入式用户标志模块(embedded Subscriber Identity Module,eSIM)或者内置用户标志模块(Subscriber Identity Module,SIM),即具备独立的移动上网功能。基于体积、供电和研发成本等综合因素,联网汽车和部分智能穿戴(如手表等)大多支持eSIM,单车一般会内置专用SIM卡。以共享单车的一种早期开锁通信方式为例,起初共享单车通过2G/3G移动通信线路入网,用户进入移动App扫描二维码,然后向云端发送对应单车信息,再由云端通过移动互联网向单车发送开锁指令(现在的单车开锁过程更加安全)。
图1-5 设备直连通信
智能手机在通信过程中主要起到业务配合作用,如二维码扫描激活、蓝牙辅助认证等。此外,设备直接接入云端需要考虑如下问题。
● 独立入网。设备需要SIM卡或eSIM卡,可通过移动运营商专门申请。
● 数据流量。如果有视频数据等,可能会产生较高的流量费用。
● 通信质量。如果设备所处环境没有信号或信号不好,会影响通信质量。
(2)Wi-Fi代理通信。Wi-Fi代理通信是指单个或多个智能硬件设备运行在一个局域网环境中,直接或间接通过Wi-Fi无线路由器接入云端通信。智能手机也通过Wi-Fi无线路由器接入云端或管理设备,智能家居是典型的应用场景。按照智能硬件设备对IP的支持情况,Wi-Fi代理通信分为图1-6和图1-7所示的两种方式。
图1-6所示的代理通信方式中,支持IP的智能硬件设备直接通过Wi-Fi入网,常见的家居环境与办公环境中的网络摄像头、智能音箱(或智能闹钟)、部分门锁、网络打印机以及扫地机器人等都采用该代理通信方式。
图1-6 Wi-Fi代理通信方式1
图1-7 Wi-Fi代理通信方式2
图1-7所示的代理通信方式中,某些家居生态系统的智能硬件设备只支持ZigBee组网协议,不支持IP,需要无线路由器和ZigBee两级代理实现云端接入。实际上,部分厂商的无线路由器也集成了ZigBee、蓝牙等协议支持,即提供复合网关,这种情况下通信连接同方式1基本一致。“复合网关”代理通信如图1-8所示,多个智能硬件设备通过复合网关接入云端通信。
图1-8 “复合网关”代理通信
(3)手机代理通信。手机代理通信是将智能手机作为蓝牙网关,实现智能硬件设备的云端接入通信,如图1-9所示。
图1-9 手机代理通信
实际上,大多数蓝牙通信场景没有把智能手机作为蓝牙网关使用,而只进行普通配对基础上的数据传输处理,包括车载蓝牙音频同步、移动App+蓝牙开启车门或居家门锁、智能手环与手机数据同步等,这基本符合蓝牙网关作用的场景。智能手机开启“蓝牙共享网络”,如图1-10所示。智能手表中的网络应用软件(如移动微信等)通过共享智能手机的“蓝牙热点”直接访问网络。
(4)USB总线通信。USB总线通信主要出现在车联网场景中,车载USB总线通信如图1-11所示。
车载USB总线通信是典型的车联网通信方式。其中,车载T-BOX设备通过3G/4G/5G线路接入云端通信,这几乎是车上唯一的上网接口。车载信息娱乐系统(In-Vehicle Infotainment,IVI)和控制器局域网络(Controller Area Network,CAN)总线网关通过USB连接T-BOX,其他电子控制单元(Electronic Control Unit,ECU)设备(如车窗、油门、空调等)则通过USB总线连接车联网安全网关。智能手机通过3G/4G/5G访问云端,管理配置车载设备、查询车辆状态或GPS信息。
图1-10 在智能手机中开启“蓝牙共享网络”
图1-11 车载USB总线通信
生态系统是某些IoT行业的一个发展趋势,通常是指该行业中由同一厂商提供面向应用场景的整体解决方案,即该场景下的IoT设备几乎都来自这一厂商。目前,生态系统以智能家居行业为代表,厂商包括小米、苹果、三星、LG、微软、亚马逊等,他们大多以“全家桶”形式提供解决方案,包括门锁、摄像头、音箱、插座、空调、家用路由器以及网关等种类众多的IoT设备,这些设备之间可能出现一些额外的互联互通协议或接口(如果不是“全家桶”形式,则可能没有这样的协议或接口)。
智能硬件设备是IoT系统中重要的实体要素,也是网络空间和现实世界的衔接点。目前全球有上百亿台智能硬件设备同时联网,设备厂商、应用场景和系列型号繁多,为有利于后续安全知识和技术的学习,读者需要对智能硬件设备的共性和个性进行基本了解。因此,本节将自下向上地按照智能硬件设备的架构,从底层硬件资源、基础操作系统和功能应用这3个方面进行介绍,如图1-12所示。
图1-12 智能硬件设备的架构
其中,针对底层硬件资源重点介绍设备的处理器芯片和指令集,针对基础操作系统重点介绍系统类型和常见命令,针对功能应用重点介绍应用形态和场景差异。智能硬件设备组成要素如图1-13所示。
图1-13 智能硬件设备组成要素
如前所述,IoT由“端—管—云”构成。为便于读者理解,本节统一介绍智能设备和IoT通信管道的网关传输设备硬件资源,后文不赘述。对智能设备而言,其核心硬件资源主要包括传感器和处理器芯片,本节重点介绍处理器芯片的相关知识,对传感器不予过多讨论。
目前,提供IoT设备处理器芯片的厂商有两大类:一类是通信芯片提供商,包括高通(Qualcomm)、博通(Broadcom)、联发科(MediaTek)等公司,无线路由器芯片大多由这些公司提供;另一类是智能设备芯片提供商,一些主流IoT厂商自己提供芯片及集成解决方案(SoC或模组),如小米、华为、苹果等厂商。就硬件特点而言,IoT设备处理器芯片本质上仍然是芯片,只是比传统芯片更具指向性,可应用于众多面向行业场景的智能设备中,需要配合各种各样的应用解决方案。同时,IoT设备处理器芯片的智能化、高速化以及安全性成为关注焦点,AIoT芯片、5G芯片等成为近几年的热点。
常见的IoT设备处理器芯片处理器架构有x86、ARM、MIPS和Power PC(PPC),为便于读者理解,我们先给出指令集相关的一些基本概念。
(1)复杂指令集计算机(Complex Instruction Set Computer,CISC)。指令系统庞大,指令功能复杂,指令格式、寻址方式多,每条指令的长度并不固定,x86就是典型的CISC架构。
(2)精简指令集计算机(Reduced Instruction Set Computer,RISC)。指令数量少且指令功能相对简单,指令长度固定。ARM、MIPS和PPC大都采用RISC。
(3)大端模式(Big-Endian)。数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,ARM、MIPS和PPC通常采用大端模式。
(4)小端模式(Little-Endian)。数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中,x86是典型的小端模式。
接下来我们介绍ARM、MIPS和PPC指令集。
(1)ARM指令集的特点。ARM(Advanced RISC Machine)为RISC处理器架构,广泛应用于嵌入式系统设计。其指令集的主要特点如下。
● 指令长度固定为4字节,即32位。
● 使用寄存器。大量数据操作在寄存器中完成,指令执行速度快。
● 寻址方式灵活简单,执行效率高。
● 采用流水线处理方式,实现指令集并行操作。
(2)ARM通用寄存器的用途。ARM通用寄存器分为三类:未分组寄存器(R0~R7)、分组寄存器(R8~R14)和程序计数器PC(R15)。
ARM通用寄存器有一些使用规则,如表1-2所示。
表1-2 ARM通用寄存器的使用规则
寄存器名称 |
别名 |
使用规则 |
---|---|---|
R0 |
a1 |
变量/参数/返回值 |
R1 |
a2 |
变量/参数/返回值 |
R2 |
a3 |
变量/参数/返回值 |
R3 |
a4 |
变量/参数/返回值 |
R4 |
v1 |
变量 |
R5 |
v2 |
变量 |
R6 |
v3 |
变量 |
R7 |
v4 |
变量 |
R8 |
v5 |
变量 |
R9 |
v6 |
变量 |
R10 |
v7 |
变量 |
R11 |
v8 |
变量 |
R12 |
IP |
子程序内部调用的scratch寄存器 |
R13 |
SP |
堆栈指针 |
R14 |
LR |
连接寄存器(保存返回地址) |
R15 |
PC |
程序计数器 |
若函数的参数少于或等于4,参数由R0、R1、R2和R3这4个寄存器传递;若参数个数大于4,则大于4的部分通过堆栈进行传递。如果函数返回结果为一个32位的整数,那么用R0存储返回值;如果函数返回结果为一个64位的整数,那么可以用R0和R1存储返回值。
(3)ARM指令集的分类和功能。ARM指令集可分为跳转指令、数据处理指令、程序状态寄存器(Program Status Register,PSR)处理指令、加载/存储指令、协处理器指令和异常指令六大类。表1-3简要总结了ARM指令集中的主要指令及其功能。读者如需进一步学习,可以查阅相关资料。
表1-3 ARM指令集中的主要指令及其功能
助记符 |
功能 |
|
助记符 |
功能 |
---|---|---|---|---|
ADC |
带进位加法指令 |
|
MRC |
协处理器寄存器到ARM通用寄存器的数据传输指令 |
ADD |
加法运算指令 |
|
MRS |
程序状态寄存器到ARM通用寄存器的数据传输指令 |
AND |
逻辑与操作指令 |
|
MSR |
ARM通用寄存器到程序状态寄存器的数据传输指令 |
B |
跳转指令 |
|
MUL |
乘法指令 |
BIC |
位清零指令 |
|
MVN |
数据取非传输指令 |
BL |
带返回的跳转指令 |
|
ORR |
逻辑或操作指令 |
BLX |
带返回和状态切换的跳转指令 |
|
RSB |
逆向减法指令 |
BX |
带状态切换的跳转指令 |
|
RSC |
带进位逆向减法指令 |
CMN |
负数比较指令 |
|
SBC |
带进位减法指令 |
CMP |
比较指令 |
|
STC |
协处理器写入内存指令 |
EOR |
逻辑异或操作指令 |
|
STM |
批量数据存储指令 |
LDC |
协处理器数据加载指令 |
|
STR |
ARM通用寄存器到内存的数据传输指令 |
LDM |
批量数据加载指令 |
|
SUB |
减法指令 |
LDR |
内存到ARM通用寄存器数据传输指令 |
|
SWI |
软件中断指令 |
MCR |
ARM通用寄存器到协处理器寄存器的数据传输指令 |
|
SWP |
交换指令 |
MLA |
乘加运算指令 |
|
TEQ |
相等测试指令 |
MOV |
数据传输指令 |
|
TST |
位测试指令 |
此外,ARM指令集中的指令会根据程序状态寄存器(CPSR)条件码的状态和指令的条件域有条件地执行,例如,B可以加上后缀EQ(BEQ)表示相等则跳转。指令条件码如表1-4所示。
表1-4 指令条件码
助记符 |
含义 |
|
助记符 |
含义 |
---|---|---|---|---|
EQ |
相等 |
|
HI |
无符号数大于 |
NE |
不相等 |
|
LS |
无符号数小于或等于 |
CS |
无符号数大于或等于 |
|
GE |
带符号数大于或等于 |
CC |
无符号数小于 |
|
LT |
带符号数小于 |
MI |
负数 |
|
GT |
带符号数大于 |
PL |
正数或零 |
|
LE |
带符号数小于或等于 |
(1)MIPS指令集的特点。MIPS指令集的主要特点如下。
● 指令均为32位编码,固定为4字节指令长度。
● 内存中的数据访问必须严格对齐(至少4字节对齐)。
● 跳转指令只有26位目标地址,加上2位对齐位,可寻址28位空间,即256MB。
● 条件分支指令只有16位跳转地址,加上2位对齐位,可寻址18位空间,即256KB。
● 默认函数的返回地址不存放到栈中,而存放到$31($ra)寄存器中。
● 采用了高度的流水线,最重要的一个效应就是分支延迟效应:当执行跳转指令时,跳转指令还没有执行,分支后面的指令就执行了。例如:
move $a0,$s1
jalr src
move $a0,$s0
其中,在执行位于第一行的跳转指令时,位于第三行的指令已经执行完了,因此跳转后的函数参数a0的值为s0而不是s1。
(2)MIPS通用寄存器的用途。MIPS有32个通用寄存器(可以用编号$0~$31表示)。表1-5所示为MIPS通用寄存器的功能及使用规则。
表1-5 MIPS通用寄存器的功能及使用规则
通用寄存器名称 |
别名 |
功能及使用规则 |
---|---|---|
$0 |
$zero |
常量0 |
$1 |
$at |
保留寄存器 |
$2~$3 |
$v0~$v1 |
返回值 |
$4~$7 |
$a0~$a3 |
函数调用前4个参数 |
$8~$15 |
$t0~$t7 |
临时寄存器 |
$16~$23 |
$s0~$s7 |
子函数临时变量 |
$24~$25 |
$t8~$t9 |
临时寄存器 |
$26~$27 |
$k0~$k1 |
保留,中断函数使用 |
$28 |
$gp |
全局指针 |
$29 |
$sp |
堆栈指针 |
$30 |
$fp |
帧指针 |
$31 |
$ra |
返回地址 |
其中,$a0~$a3用于函数调用传递参数,如果不够用,那么用栈传递多余的参数;$v0~$v1用于传递返回值,如果不够用,那么用栈传递多余的返回值。
(3)MIPS指令的分类与功能。MIPS指令共32位,最高6位为操作码,剩下的26位表示指令类型,分为R型、I型和J型3类。
● R型指令组成如表1-6所示。
表1-6 R型指令组成
操作码 |
指令类型 |
|
|
|
|
---|---|---|---|---|---|
6 |
5 |
5 |
5 |
5 |
6 |
op |
rs |
rt |
rd |
shamt |
funct |
其中,op表示操作码;rs表示第一个源操作数寄存器;rt表示第二个源操作数寄存器;rd表示目的寄存器;shamt表示位移量;funct表示功能码。
R型常见指令及示例如表1-7所示。
表1-7 R型常见指令及示例
助记符 |
示例 |
示例含义 |
---|---|---|
add |
add $1,$2,$3 |
$1=$2+$3 |
sub |
sub $1,$2,$3 |
$1=$2−$3 |
and |
and $1,$2,$3 |
$1=$2&$3 |
or |
or $1,$2,$3 |
$1=$2|$3 |
xor |
xor $1,$2,$3 |
$1=$2^$3 |
slt |
slt $1,$2,$3 |
if($2<$3) $1=1 |
sll |
sll $1,$2,10 |
$1=$2<<10 |
srl |
srl $1,$2,10 |
$1=$2>>10 |
jr |
jr $31 |
goto $31 |
● I型指令用于加载/存储字节、半字、字、双字,还可用于条件分支、跳转、跳转并链接寄存器。I型指令的组成如表1-8所示。
表1-8 I型指令的组成
操作码 |
指令类型 |
|
|
---|---|---|---|
6 |
5 |
5 |
16 |
op |
rs |
rt |
immediate |
I型常见指令及示例如表1-9所示。
表1-9 I型常见指令及示例
助记符 |
示例 |
示例含义 |
---|---|---|
addi |
addi $1,$2,100 |
$1=$2+100 |
lw |
lw $1,10($2) |
$1=memory [$2+10] |
lui |
lui $1,10 |
$1=10*65535 |
sw |
sw $1,10($2) |
memory [$2+10]=$1 |
ori |
ori $1,$2,100 |
$1=$2|100 |
beq |
beq $1,$2,10 |
if($1==$2) goto PC+4+10*4 |
bne |
bne $1,$2,10 |
if($1!=$2) goto PC+4+10*4 |
slti |
slti $1,$2,10 |
if($2<10) $1=1 |
● J型指令用于跳转、跳转并链接、陷阱和从异常中返回。J型指令组成如表1-10所示。
表1-10 J型指令组成
操作码 |
指令类型 |
---|---|
6 |
26 |
op |
Address |
J型常见指令及示例如表1-11所示。
表1-11 J型常见指令及示例
助记符 |
示例 |
示例含义 |
---|---|---|
j |
j 1000 |
goto 1000 |
jal |
jal 1000 |
$31<−PC+4 |
特别地,R、I、J这3类MIPS指令类型中,都存在不少分支跳转指令,如表1-12所示。
表1-12 分支跳转指令及示例
助记符 |
示例 |
示例含义 |
---|---|---|
b |
b target |
goto 1000 |
beq |
beq $1,$2, target |
if ($1==$2) goto target |
blt |
blt $1,$2, target |
if ($1<$2) goto target |
ble |
ble $1,$2, target |
if ($1<=$2) goto target |
bgt |
bgt $1,$2, target |
if ($1>$2) goto target |
bge |
bge $1,$2, target |
if ($1>=$2) goto target |
bne |
bne $1,$2, target |
if ($1!=$2) goto target |
(1)PPC指令集的特点。PPC指令集的特点如下。
● 大量使用寄存器,数据操作大多在寄存器中完成,指令执行速度更快。
● 指令长度固定,都使用定长的32位指令。
● 采用流水线处理方式。
(2)PPC通用寄存器的用途。PPC有32个通用寄存器(可以用编号r0~r31表示),表1-13所示为PPC通用寄存器的功能及默认用途。
表1-13 PPC通用寄存器的功能及默认用途
通用寄存器名称 |
功能及默认用途 |
---|---|
r0 |
函数开始时使用 |
r1 |
栈指针sp |
r2 |
内容表指针 toc |
r3 |
第一个参数和返回值 |
r4~r10 |
函数调用参数 |
r11 |
用于指针的调用或当作环境指针 |
r12 |
用于异常处理和动态连接器代码 |
r13 |
系统线程ID |
r14~r31 |
本地变量 |
PPC还有多个专用寄存器,其专用寄存器功能及默认用途如表1-14所示。
表1-14 PPC专用寄存器功能及默认用途
专用存器名称 |
功能及默认用途 |
---|---|
lr |
连接寄存器,返回地址 |
ctr |
计数寄存器,用作循环计数器 |
xer |
定点异常寄存器,记录溢出和进位标志 |
msr |
机器状态寄存器,用来配置微处理器的设定 |
cr |
条件寄存器,反映算法操作的结果并且提供条件分支 |
(3)PPC指令分类与功能。PPC指令分为存储/加载指令、转移指令、特殊寄存器传送指令、系统调用指令等类型,PPC主要指令及其功能具体如表1-15所示。
表1-15 PPC主要指令及其功能
助记符 |
功能 |
|
助记符 |
功能 |
---|---|---|---|---|
stb |
字节存储(偏移地址寻址) |
|
Stmw |
多字存储 |
stbx |
字节存储(寄存器寻址) |
|
b(ba bl bla) |
无条件转移 |
stbu |
记录有效地址的字节存储(偏移地址寻址) |
|
bc(bca bcl bcla) |
条件转移 |
stbux |
记录有效地址的字节存储(寄存器寻址) |
|
bclr(bclrl) |
条件转移(转移目标地址由LR指出) |
sth |
半字存储(偏移地址寻址) |
|
bcctr(bcctrl) |
条件转移(转移目标地址由CTR指出) |
stw |
字存储(偏移地址寻址) |
|
Mfmsr |
读取机器状态寄存器 |
lbz |
高位清零的加载字节指令(偏移地址寻址) |
|
Mtmsr |
写入机器状态寄存器 |
lbzx |
高位清零的加载字节指令(寄存器寻址) |
|
Mfspr |
读取特殊功能寄存器 |
lbzu |
高位清零的加载字节并记录有效地址指令(偏移地址寻址) |
|
Mtspr |
写入特殊功能寄存器 |
lbzux |
高位清零的加载字节并记录有效地址指令(寄存器寻址) |
|
Mfsr |
读取段寄存器 |
lhz |
高位清零的加载半字指令(偏移地址寻址) |
|
Mtsr |
写入段寄存器 |
lha |
加载半字指令(偏移地址寻址) |
|
Mfsrin |
间接读取段寄存器 |
lwz |
加载字指令(偏移地址寻址) |
|
Mtsrin |
间接写入段寄存器 |
lmw |
多字加载 |
|
Mftb |
读取时基寄存器 |
与传统嵌入式操作系统相比,智能设备内置的操作系统弱化了对实时性的严格区分,增加了对无线连接和IoT协议种类的支持。部分IoT设备的操作系统如表1-16所示。可以看到,IoT设备(智能设备+网关传输设备)的操作系统可以分为两大类:一类是使用率较高的标准架构操作系统,如嵌入式Linux、Android、VxWorks、QNX、实时操作系统(Real Time Operating System,RTOS)等;另一类是专用IoT操作系统,如智能穿戴设备中的原生态WearOS(类似于Android)、修改版WearOS、watchOS等。此外,因供电受限等原因,门锁、单车等设备以单片机为主,大多没有集成上述操作系统。
表1-16 部分IoT设备的操作系统
操作系统大类 |
操作系统名称 |
典型设备 |
---|---|---|
标准架构操作系统 |
嵌入式Linux |
网络摄像头、智能音箱、无线路由器、车载T-BOX设备等 |
Android |
车载信息娱乐系统(IVI)、智能电视等 |
|
QNX |
车载仪表设备 |
|
RTOS |
车载ECU设备 |
|
专用IoT操作系统 |
WearOS(原生态) |
智能穿戴设备(如三星等公司的产品) |
WearOS(修改版) |
智能穿戴设备(如小米、华为等公司的产品) |
|
watchOS |
智能穿戴设备(如苹果公司的产品) |
下面重点介绍部分操作系统及其常见命令。
嵌入式Linux是将Linux系统进行裁剪修改,专门为某个应用场景而设计实现的操作系统。嵌入式Linux和传统PC Linux在内核、函数库及上层应用程序上没有本质区别,它们之间的区别更多在于底层驱动程序是本地编译的还是交叉编译的。
嵌入式Linux常用的工具和命令(如ls、cat和ping等)一般压缩集成到BusyBox的单一可执行文件中。BusyBox提供了一个比较完善的Shell(命令行会话)环境,可适用于各种小的嵌入式操作系统。嵌入式Linux的Shell可以使用ls、cat等命令,实际上这些命令不是独立的执行程序,而是指向BusyBox的一个链接。表1-17所示为一些常见的嵌入式Linux命令。
表1-17 常见的嵌入式Linux命令
序号 |
命令 |
备注 |
---|---|---|
1 |
ps |
查看进程 |
2 |
ipconfig |
查看网络配置 |
3 |
uname |
显示系统信息(如内核版本、硬件架构、操作系统类型等) |
4 |
cd xxx |
进入目录xxx |
5 |
ls |
列出当前目录文件 |
6 |
cat |
显示文件内容 |
7 |
cat /proc/version |
显示Linux版本信息 |
8 |
ping xx.xx.xx.xx |
ping目标xx.xx.xx.xx |
9 |
pwd |
显示当前工作目录 |
10 |
netstat |
显示网络连接和开放端口 |
11 |
vi |
Shell命令下的文本编辑器 |
Android是一种基于Linux内核的开源操作系统,主要应用于移动设备(如手机、平板电脑等),由谷歌公司和开放手机联盟开发。目前,Android已逐渐扩展到IoT领域,包括智能电视(Android TV)、智能车载系统(Android Auto)、智能穿戴设备(WearOS)等。基于IoT特殊应用场景,谷歌公司推出了全新的IoT操作系统Android Things。Android Things的前身是IoT平台Brillo,除了继承Brillo的常见功能,Android Things还加入了Android Studio、Android SDK、Google Play服务以及谷歌云平台等Android开发者熟悉的工具和服务。基于Android Things,Android开发者可以使用Android API和谷歌公司提供的服务轻松构建智能联网设备。
Android的主要开发和调试工具为adb。adb提供了一系列用于调试Android设备的shell命令。adb调试工具命令示例如图1-14所示。
图1-14 adb调试工具命令示例
表1-18所示为一些常见的adb shell命令。
表1-18 一些常见的adb shell命令
序号 |
命令 |
备注 |
---|---|---|
1 |
adb devices |
查看设备 |
2 |
adb install <apk文件路径> |
安装APK软件 |
3 |
adb shell |
登录设备shell,shell下可以执行Linux命令 |
4 |
adb push <本地路径> <远程路径> |
push命令可以把计算机上的文件或者文件夹复制到设备中 |
5 |
adb pull <远程路径> <本地路径> |
pull命令可以把设备上的文件或者文件夹复制到计算机中 |
VxWorks是美国风河(Wind River)公司推出的实时操作系统。VxWorks的shell界面如图1-15所示。
图1-15 VxWorks的shell界面
为了便于程序开发,风河公司提供了VxWorks集成开发环境Tornado(VxWorks 6以后的集成开发环境称为Workbench)。开发者可以通过Tornado编辑、编译、链接和调试VxWorks代码。图1-16所示为集成开发环境Tornado界面。
图1-16 集成开发环境Tornado界面
VxWorks shell又称为内核shell,可以通过串口或者Telnet连接。表1-19所示为一些常见的VxWorks shell命令。
表1-19 常见的VxWorks shell命令
序号 |
命令 |
备注 |
---|---|---|
1 |
I |
查看进程 |
2 |
ifShow |
查看网络配置 |
3 |
devs |
列出系统所有设备 |
4 |
cd xxx |
进入目录xxx |
5 |
ls |
列出当前目录文件 |
6 |
ll |
详细列出当前目录文件 |
7 |
version |
显示VxWorks版本 |
8 |
ping xx.xx.xx.xx |
ping目标xx.xx.xx.xx |
9 |
pwd |
显示当前工作目录 |
10 |
d xxxx |
显示地址xxxx内存 |
11 |
m xxxx |
修改地址xxxx内存 |
本节将更多地从软件层面介绍智能硬件设备的功能应用。
智能硬件设备的功能应用主要分为两类,如图1-17所示。一是完成感知层的功能,对传感器采集的数据进行转换和预处理,包括摄像头视频数据、智能音响音频数据、穿戴设备的健康数据、GPS数据等;二是发挥应用层的部分功能(边缘计算),配合云端完成IoT数据的局部分析和业务处理,在此基础上围绕场景应用得到相关结论或采取相应动作,同时将原始数据和上述分析计算得到的结果数据一并传输到云端。这些功能在应用形态上大多以软件程序的方式存在,如Linux的应用程序、Android的应用程序等。
图1-17 智能硬件设备的功能应用类型及形态
前文提到,智能硬件设备应用于社会生活的各个领域,典型场景如家居、汽车、安防、穿戴、共享单车、物流等,不同行业的智能硬件设备甚至是不同厂商的类似智能硬件设备差异较大。这些差异性体现在包括智能硬件设备的部署方式、外在形状、体积大小、计算资源、通信方式、耗电情况等环节,如图1-18所示。了解这些差异性的存在,能为后续安全原理知识和分析技术的学习打下基础。
图1-18 智能硬件设备的应用场景与差异环节
本书提到的“移动智能终端”主要是指智能手机,它在消费类IoT应用场景中是不可或缺的。用户通过智能手机和智能设备、云端进行信息交互,智能手机在IoT中的关联示意如图1-19所示。目前,主流的智能手机操作系统分为Android和iOS两大类。Android智能手机厂商众多,操作系统为Android——华为、三星、小米、OPPO、vivo等厂商的智能手机均使用Android;苹果智能手机厂商唯一,操作系统为iOS。就IoT普通用户而言,其关心与智能设备管理相关的移动App使用方法;就信息安全专业用户而言,其还关心智能手机在IoT中的具体作用,以了解底层的数据通信和业务处理机制。
智能手机在IoT中主要起到管设备、搭桥梁和查业务的作用,如图1-20所示。其中,“管设备”是指智能手机作为智能设备管理终端,“搭桥梁”是指智能手机作为智能设备网关或读卡器,“查业务”是指智能手机作为业务应用查询终端。
图1-19 智能手机在IoT中的关联示意
图1-20 智能手机在IoT中的主要作用
消费类IoT设备大多支持通过智能手机移动App完成对智能设备的远程管理,某智能汽车移动App和某智能家居移动App分别如图1-21和图1-22所示,包括设备的入网配置、远程操作、状态显示、固件升级、安全设置等功能。
图1-21 某智能汽车移动App
图1-22 某智能家居移动App
根据1.2节中介绍的IoT通信方式,移动App管理智能设备的通信方式包括以下3种。
(1)智能手机通过3G/4G/5G或Wi-Fi入网连接到云端服务,通过云端中转进行智能设备管理。在这种通信方式下,智能设备也是接入互联网并连接到云端,本质上云端作为业务交互平台,目前许多智能家居设备都采用该方式。
(2)智能手机通过Wi-Fi局域网内部直接访问智能设备开放的网络服务端口,以此进行智能设备管理。出于安全性考虑,主流IoT智能设备厂商大多不支持该方式。
(3)智能手机通过蓝牙等非IP信道进行智能设备管理,针对单个智能设备可直接配对连接管理,针对多个智能设备使用IoT网关进行集中管理。
智能手机常作为智能设备的蓝牙网关。智能手机通过自身蓝牙与智能设备蓝牙进行通信,然后通过智能手机的Wi-Fi或3G/4G与云端服务进行数据通信,从而承担起智能设备和云端的数据传输桥梁作用。典型应用场景包括智能家居、智能穿戴、共享单车等,例如,智能穿戴设备的人体健康数据同步,车载网络中的音频数据同步,共享单车使用蓝牙来配合开锁和身份验证等。
智能手机作为近场读卡器或读码器,通过近场扫描(如二维码、NFC等)获取硬件设备信息,然后将信息传输到云端。典型应用场景如共享单车、网购取货平台(如中邮速递易、京东、丰巢)等。
通过移动App查询IoT业务应用状态,包括主动业务查询和被动业务查询两种方式。
(1)主动业务查询。智能手机主动发起的业务查询。IoT设备采集的数据一般存储在云端或者智能设备自带的存储卡中,用户如果想查看这些数据,需要通过移动App远程读取云端中的业务数据,这些数据查询是通过移动App主动向云端发起的。
(2)被动业务查询。智能手机被动实施的业务查询。对一些具有报警和计费功能的IoT设备,如果设备监测环境、计费等发生改变,其会主动通过云端向移动App推送消息,以便用户实时掌控IoT环境变化、设备状态变化等情况。例如,智能摄像头因为周围环境发生改变给出警告信息,共享单车使用完成后的计费信息推送到云端等。
IoT设备厂商一般会同时提供针对Android和iOS两个系统的移动App,供不同的用户选择。Android和iOS上的生态系统不尽相同,移动App相应的特点也有所差异,这些会对安全性产生一定的影响。
(1)系统差异。Android由于其开源的特性,碎片化较为严重,即版本很多、很杂,尽管谷歌公司也一直在努力解决这个问题,但是收效甚微。iOS基于其特有的封闭性,版本一直处于相对统一的状态。
(2)代码开发差异。Android App在开发过程中可能使用一些第三方组件或代码资源,可能导致引入新的安全风险;iOS App在开发过程中基本使用自己的代码。
(3)移动App安装差异。Android App部署、下载和安装过程相对简单,通常在应用商城就能完成;iOS App安装过程相对复杂,需要注册Apple ID之后去App Store下载。计算机需要安装iTunes,连接并打开App Store下载软件,然后同步。
(4)移动App权限差异。Android App在安装时就会提示用户赋予一定的权限;iOS对移动App的访问控制较为严格,许多操作调用必须用户手动确定。
(5)移动App保护差异。由于Android开源,因此其移动App保护措施较多,如移动App加壳保护等;由于iOS App不开源,因此很少有相应的保护措施。
IoT云端资源是指由云平台提供、基于互联网通信的IoT服务资源,主要负责设备接入、业务处理、设备管理、用户管理、数据管理等应用层功能,是IoT重要的用户操作和数据汇聚平台。长远来看,“IoT管控云端化”即通过云端进行智能设备管理与配置是必然趋势。
IoT云端资源的基本架构如图1-23所示,自下而上为基础云平台、Web服务软件和IoT管理应用。
图1-23 IoT云端资源的基本架构
基础云平台是部署在互联网中的虚拟化系统环境,主要提供基础架构即服务(Infrastructure as a Service,IaaS)和平台即服务(Platform as a Service,PaaS)等服务,从类型上可分为大型互联网公司提供的公有云和厂商/组织机构的私有云。
(1)典型的公有云包括以下几种。
● 华为云
● 阿里云
● 百度智能云
● 腾讯云
● ThingWorx 8 IoT平台
● Bosch IoT云平台
● Oracle IoT云平台
● Microsoft Azure IoT套件
● Google Cloud IoT平台
● IBM Watson IoT平台
● AWS IoT平台
● Cisco IoT Cloud Connect平台
(2)典型的私有云(主流IoT厂商)包括以下几种。
● 小米IoT开发者平台
● 京东云
● 海尔U+云
● 美的云
● 大华乐橙云开放平台
● 海康威视萤石云开放平台 - 电信运营商
的私有云
Web服务软件是基于云平台的网络服务软件,并作为容器支持运行IoT管理相关Web应用。Web服务软件可能是Web中间件(或Web框架),也可能是厂商定制开发的服务软件。
Web中间件大多使用Java、PHP、JSP等服务器脚本开发,典型类型有JBoss、Joomla、Struts 2、vBulletin、Tomcat、WebLogic、Zabbix等,如图1-24所示。实际上,许多非IoT网站也会采用这些典型的Web中间件。
图1-24 典型的一些Web中间件
IoT管理应用是基于Web服务软件的上层功能应用,包括设备接入、业务处理、设备管理、用户管理、数据管理等具体功能。
(1)设备接入。支持不同类型、不同规模的智能设备以不同协议(如HTTP、HTTPS、MQTT等)及方式快速并发接入云端,在此基础上利用身份认证和消息推送等机制保证智能设备与云端的正常数据传输。
(2)业务处理。即数据业务处理,它根据定义的业务规则,对来自智能设备的IoT数据进行分析、响应以及可视化等处理。
(3)设备管理。为移动终端(用户)提供包括智能设备状态可视化、远程控制、远程配置、故障定位、升级维护等管理服务,使用户能远程灵活操控智能设备。
(4)用户管理。为IoT用户提供注册、登录、授权等服务,确保具有合法身份的用户能使用恰当的权限对智能设备进行远程管理。
(5)数据管理。提供对IoT业务数据的录入、查询、删除、修改以及数据挖掘等服务,也可以随时更新规则以实现新智能设备和应用程序的功能。
IoT通信管道是智能设备、移动终端和云端之间通信的基础支撑,包括网关传输设备和网络通信线路两部分,如图1-25所示。其中,网关传输设备主要是指IoT网关设备和无线路由器设备,网络通信线路主要是指无线线路和有线线路。
图1-25 IoT通信管道
顾名思义,网关传输设备包括IoT网关设备和无线路由器设备两类。
IoT网关设备作为网络和互联网之间的通信桥梁。对于不支持IP的智能设备而言,传感器采集的数据要到达云端必须经过IoT网关设备。IoT网关设备采集来自传感器的数据后进行协议转换,并在数据中转之前进行清洗和预处理。典型的IoT网关设备包括ZigBee网关、蓝牙网关、CAN总线网关等。IoT网关设备大多不支持IP协议,智能设备连接到IoT网关设备之后,通过Wi-Fi(+光纤)路由器或移动通信线路接入云端,如图1-26所示。同时,IoT网关设备还会对连接的智能设备提供一些额外的安全性和配置更改管理。目前一些智能家居厂商在其生态系统中已逐步将IoT网关设备和无线路由器设备集成为复合网关。
图1-26 IoT网关设备部署示意
生产与IoT相关的无线路由器设备的厂商很多,有多个品牌,如友讯(D-Link)、普联(TP-Link)、华为、华硕、网件(Netgear)、腾达等,主要用于为智能设备接入云端提供Wi-Fi通道。同体积较大的骨干路由器设备相比,这些无线路由器设备体积更小且支持Wi-Fi功能,如图1-27所示。
图1-27 部分无线路由器设备
IoT是复合的网络系统,数据从传感器采集到云端分析的通信传输过程可能经过不同的线路,分为无线线路和有线线路,整体上无线为主、有线为辅。
无线线路以无线空间为介质、以无线信号为承载进行数据传输,例如近场的Wi-Fi、蓝牙、ZigBee、NFC等通信,以及远程的3G、4G、5G移动通信,相关无线协议参见1.7节。
有线线路以光纤线路或专用有线线路进行数据传输。许多IoT应用场景,如智能设备、智能手机等都是直接采用光纤线路通信。采用专用有线线路的典型通信场景,一是家庭或企业办公网络采用有线光纤入网,如调制解调器(光猫)接入互联网;二是联网汽车的车载设备,其内部通过CAN总线+网关进行特殊的(按行业标准,有别于以太网)有线通信。
IoT通信协议分为网络接入协议、网络应用协议和GPS协议三大类,如图1-28所示。其中,网络接入协议用于设备组网和接入,支持数据传输,以无线协议为主,包括无线近场协议和无线远程协议;网络应用协议主要以IP为基础,用于设备接入后的业务应用通信,包括常规的HTTP/HTTPS和定制应用协议;GPS协议用于对智能设备(移动设备为主)的实时定位。
图1-28 IoT通信协议分类
无线近场协议是网络接入协议的重要组成部分之一,支持相对近距离的设备连接与通信。目前,IoT中使用较广泛的无线近场协议包括Wi-Fi协议(IEEE 802.11)、蓝牙或蓝牙低功耗(Bluetooth Low Energy,BLE)、ZigBee(IEEE 802.15.4)、NFC等。表1-20所示为常见无线近场协议的特点比较,关于这些协议的更多细节信息,读者可查看相关标准进一步学习。
表1-20 常见无线近场协议的特点比较
协议名称 |
基本描述 |
覆盖范围 |
功耗 |
应用场景 |
安全性 |
---|---|---|---|---|---|
Wi-Fi |
基于IEEE 802.11标准,通常使用2.4GHz UHF或5GHz SHF ISM射频频段,设备必须通过Wi-Fi热点接入Wi-Fi网络才能进行通信 |
100米左右 |
较高 |
智能家居,公共环境 |
较低,密码可能被破解,如果未设置密码,则任何人都可以接入Wi-Fi |
蓝牙 |
使用2.4~2.485GHz的ISM频段,支持设备之间短距离数据交换。因低功耗需求,多数IoT设备都支持蓝牙4.0及以上,即BLE |
15米以内 |
低,尤其是BLE |
智能家居、联网汽车、智能穿戴、共享单车等场景 |
较高 |
ZigBee |
基于IEEE 802.15.4标准,组网能力强,需要网关进行协议转换 |
10~100米 |
很低,一节电池可使用2~10年 |
智能家居 |
高,提供了数据完整性检查和鉴权功能,加密算法采用通用的AES~128 |
NFC |
短距高频的无线通信协议,设备自动连接 |
20厘米以内 |
低 |
智能门锁、门禁、移动支付等 |
高,支持身份验证,且近距离通信容易被攻击 |
无线远程协议主要是指2G、3G、4G和5G等通信协议。这些协议借助移动通信技术连接互联网,也可以称为移动通信协议。NB-IoT、LoRa等低功耗广域网协议不属于本书介绍范围。
(1)2G通信协议。第二代移动通信协议,主要分为两类:一类是基于时分多路访问(Time Division Multiple Access,TDMA)所发展出的全球移动通信系统(Global System for Mobile Communication,GSM)规格;另一类是码分多路访问(Code Division Multiple Access,CDMA)规格。2G通信速率一般在32kbit/s。
(2)GPRS通信协议。通用无线分组业务(General Packet Radio Service,GPRS)是基于GSM的无线分组交换协议,介于2G和3G之间,由中国移动开发并运营,也被称为2.5G。
(3)3G通信协议。第三代移动通信协议,支持高速数据传输的蜂窝移动通信技术。3G服务能够同时传送声音及数据信息,下行速率一般为2M~3Mbit/s。目前3G存在3种标准:CDMA2000(美国版)、WCDMA(欧洲版)和TD-SCDMA(中国版)。
(4)4G通信协议。第四代移动通信协议,集3G与无线局域网(Wireless Local Area Network,WLAN)于一体,能够快速传输高质量音频、视频和图像数据等。4G传输速率可达100Mbit/s,目前包括TD-LTE和FDD-LTE两种制式。
(5)5G通信。第五代移动通信协议于2019年陆续推出,已广泛应用于IoT领域。
网络应用协议是支持IoT业务应用的网络协议。传统应用协议是HTTP和HTTPS,二者的主要区别在于HTTPS增加了认证和加密,将HTTP和HTTPS直接应用到IoT中存在以下局限性。
(1)设备主动向服务器发送数据,难以实现服务器主动向设备发送数据。
(2)HTTP采用明文数据传输,安全性不高。
(3)资源占用率高,一些资源受限的设备处理速度跟不上。
因此,一些基于消息推送的定制应用协议更受关注,部分如下。
(1)MQTT协议。消息队列遥测传输(Message Queuing Telemetry Transport,MQTT)协议是IBM公司开发的一个即时通信协议,比较适用于智能设备通信应用场景。MQTT协议构建于TCP/IP上,采用发布/订阅消息模式,提供一对多的消息发布,可以解除应用程序耦合;MQTT协议头部固定长度为2字节,可适用于低功耗低网速的设备;MQTT协议支持服务质量(Quality of Service,QoS),有“至多一次”“至少一次”和“只有一次”3种消息服务模式。
MQTT协议的上述特点使其在卫星链路通信传感器、医疗设备、智能家居、受限环境小型化设备中广泛应用。小米、华为、三星、苹果等公司的IoT设备重点支持MQTT协议,一般同时集成两种协议,MQTT协议为主,外加一个常规的其他协议。
(2)XMPP。可扩展通信和表示协议(Extensible Messaging and Presence Protocol,XMPP)是一种基于标准通用标记语言的子集可扩展标记语言(eXtensible Markup Language,XML)的协议,可用于服务类实时通信、表示和需求响应服务中的XML数据元流式传输。XMPP采用客户端/服务器(C/S)通信模式,使用简单的客户端,将多数工作放在服务器进行。
XMPP是基于XML的协议,得益于开放性、易用性等特点,在即时通信、网络管理、内容供稿、协同工具、游戏等方面得到了广泛应用。
(3)REST协议。表述性状态传递(Representational State Transfer,REST)协议是一种针对网络应用的设计和开发协议,可以降低开发的复杂性,提升系统的可伸缩性,可快速实现客户端和服务器之间交互的松耦合,降低客户端和服务器之间的交互延迟。采用REST协议的客户端和服务器之间的交互在请求时是无状态的,并且使用标准的HTTP方法(如GET、PUT、POST和DELETE)。
REST/HTTP主要为了简化互联网中的系统架构,因此适合应用在IoT中。在IoT应用中,REST协议可以通过开放REST API的方式被互联网中其他应用所调用。
(4)CoAP。受限制的应用协议(Constrained Application Protocol,CoAP)基于REST架构,应用于无线传感网中。CoAP是一种应用层协议,它运行于用户数据报协议(User Datagram Protocol,UDP)之上,包含一个紧凑的二进制报头和扩展报头。CoAP基本报头只有4字节,基本报头后面跟扩展选项,一个典型的请求报头为10~20字节。为了实现客户端访问服务器上的资源,CoAP支持GET、PUT、POST和DELETE等方法。CoAP支持异步通信,适用于机对机(Machine-to-Machine,M2M)通信。CoAP支持内置的资源发现格式,用于发现设备上的资源列表。
CoAP的设计目标是为了让小设备可以接入互联网,解决设备直接连接到IP网络的问题,满足将IP技术应用到设备之间、互联网与设备之间的通信需求。
GPS是一种以空中卫星为基础的高精确无线导航定位系统。作为移动感知技术,它是IoT中用于采集移动设备位置信息的重要技术。目前,GPS协议在智能穿戴、智能汽车和共享单车、智能物流、智能交通等许多领域均有应用。
本章从IoT的起源、发展和应用场景等方面着手,给出了IoT的概念和基本含义,在此基础上引出了典型的IoT“端—管—云”架构,并详细介绍了IoT的网络层次、组成部件及其通信模型;然后,从IoT的智能硬件设备、移动智能终端、通信管道、云端资源和通信协议等方面介绍IoT基础知识。通过学习本章内容,读者可对IoT有一个清晰认识,为后续进行IoT安全分析奠定了基础。