在线工博会

在无线传感器网络中获得保障
凌力尔特公司 K. Pister
为节省流量,手机版未显示文章中的图片,请点击此处浏览网页版
物联网 (IoT) 正在快速成长,而无线传感器网络 (WSN) 对于扩展互联网基础设施至覆盖一切是至关紧要。WSN 已在全球各地的关键监视和控制应用中得到了广泛的使用。这些系统中的任何保障缺失都有可能对效率和安全性产生实际和直接的影响。
很幸运,有关保护无线系统的文献比比皆是,而且最佳的做法也是广为人知。尽管拥有这些相关的知识,但是新闻中仍然充斥着关于一般无线网络及特定 WSN 遭受攻击的报道。令人惊讶的是,市面上的很多产品并未接受甚至是最基本的系统安全概念,而另一些其他要求良好安全性的产品却没有达到目的。这里我们记录了一些常见的错误及其众所周知的解决方案。无线安全性并非微不足道,但凭借对于细节的严格关注,构建不容易遭受无线攻击的系统还是很简单的。
基本知识
安全性问题并不局限在无线系统。的确,现在大大小小的互联网攻击实在是如同家常便饭,以至于几乎没什么新闻价值。有一种看法认为无线系统更容易遭受攻击,因为任何人采用合适的无线电装置都能够从远处与一部无线设备进行通信。当然,在互联网上,任何人使用计算机都可以从比所有无线电信号传播距离更远的地方发起网络攻击。我们的底线是:所有的网络物理系统,无论是有线的还是无线的,都需要采取针对攻击的谨慎预防措施。
目标
在 WSN 中,安全性的主要目标是提供:
 保密性 — 在网络中传输的数据只可由预定的接收人读取,其他任何人均不能截取阅读。
 完整性 — 接收的任何消息都被认定确实是发送时的消息,其内容未经任何添加和删改。
 真实性 — 声称来自某个给定信息源的消息事实上的确来自那个信息源。如果时间被用作认证方案的一部分,那么真实性还可避免消息被记录和重放。
保密性不仅是与安全相关的应用所需要的,对于日常应用也是必不可少。例如,有关生产水平或设备状态的传感器信息或许具有某种涉及竞争的敏感性,例如:美国国家安全局 (NSA)就不公布其数据中心的功耗情况,因为该数据有可能被竞争对手用来估计其计算资源。传感器数据应加密,只有预定的接收者才可以使用。
传感和命令信息必需原封不动地到达。如果传感器说:“罐内液面水平为 72cm” 或控制器说:“将阀门旋转至 90°”,那么这些数据中的任何一个数位丢失都将是非常糟糕的。
对消息来源有信心是至关紧要的。假如上面两个消息中的任一个是由某个恶意攻击者发送,都有可能造成非常恶劣的后果。一个极端的例子是一条像这样的消息:“这里是一个供您运行的新程序。”
后果
安全性欠佳的后果并非总是容易预料的。例如:无线温度传感器或恒温器或许看似一种几乎不需要安全性的产品。然而,设想这样一个报纸头条新闻,其描述了犯罪分子是怎样使用无线电装置探测到恒温器上的“假期”设置,并趁主人外出度假之际洗劫了这些房屋。对于客户忠诚度的影响将是巨大的,更不用说销售业绩了。最安全的习惯程序是对所有的数据实施加密处理。
在 ZigBee 的早期,大多数网络的运行都没有任何的安全性保障。因此,当面对众多潜在的客户进行多供应商互操作性的演示时,不少 ZigBee 网络出现了重大的故障,因为它们将来自一个不同网络的命令解读为协调器重配置消息,该消息告诉它们改变通道。ZigBee 网络完全没有办法确定这些消息是来自一个不在其网络内的设备!这种灾难性的行为并非源于一次实际的攻击,而是缺乏认证手段所致,因此导致解读一个来自完全不同的网络的数据包。
在工业过程自动化中,遭受攻击所产生的后果也许远比失去客户要可怕得多。由于错误的过程控制信息被传送至控制系统,因此攻击有可能造成物理损坏。例如,倘若一个负责向电机或阀门控制器馈送数据的传感器宣称电机速度或罐内液面过低,则可能引发灾难性的故障,与震网病毒 [Stuxnet (注 1)] 攻击中离心机所遭遇的情况相似。
在纯实用的层面上,即使只是遭遇了失败的攻击或者学术研究揭示存在某个“软肋”,都很有可能带来销售损失、应急性的技术工作和重大的公关挑战。
工具
幸运的是,我们有用于构建安全、坚固型无线通信网络的强大工具。这需要勤奋和关注细节,但并没有什么实质上的困难。
密码和随机数
最基本的加密工具是分组密码。举个例子,AES-128 就是一种特殊的分组密码,其取一个 16字节消息 (明文) 和一个 128 位密钥,并生成该消息的 16 字节加密版本 (密文)。任何拥有相同密钥的人都可以对密文进行解密以恢复明文。而没有密钥的人则不能找回明文。高级加密标准 (AES) 密码易于采用软件来实现,而且在许多无线电和微处理器芯片上通常能以硬件的方式提供。大家都知道,AES-128 是不可破译的 ── 面对密文,在没有密钥的情况下是绝对无法获知明文的。实际上,美国国家安全局选择了相同的基本密码用于最高机密文件的加密。在 WSN 安全遭受攻击的所有相关报道中,从未有人声称 AES 密码是其中的薄弱环节。
唯一已知针对 AES-128 的攻击是所谓的“蛮力”攻击,意思是攻击者尝试每种可能的密钥以确定哪一种提供了合理的消息。尝试每一种可能的 128 位密钥是一项十分浩大的任务。假设您有 10 亿台计算机,每台计算机每秒可检查 10 亿个密钥,那么让所有这些计算机运行 10 亿年也将只能尝试全部可能的 128 位密钥的大约 0.1%。有超过 3000 亿种不同的128 位密钥。
分组密码让消息源对消息进行加密,从而使得只有目的地 (拥有相同的密钥) 能够对其进行解密 (图 1)。当然,如果是类似于“开灯”或“关灯”这样的简单消息,那么即使这些消息被加密成看似没有意思的位串,那么任何截取了几条消息的人也可快速地断定只有两种不同的消息。针对该问题的一种解决方案是采用一个消息计数器,并对每个发送的消息进行编号。由于密码性质的原因,消息明文中的任何变化都会产生一个不同的密文,而且在不同的时间发送的两条消息 (比如:“消息 1:开灯”和“消息 53:开灯”) 对于任何不掌握密钥的人来说看上去将是完全不同的。只要消息计数器永不重复,那么密文也将永远不会重复。这种绝不重复的消息计数器的概念被称为随机数 (nonce),其代表“只使用一次的数字 (number used once)”。

(图片)

图 1:源节点采用一个分组密码、一个随机数和一个密钥来给明文消息加密,将其转变为密文。只有掌握密钥的人方能进行消息的解密。随机数既可以明确地发送,也可以是隐含的 (由于协议结构的原因,例如:时间戳)。

消息完整性检查
消息完整性检查 [即 MIC (有时也被称作“消息认证码”,即 MAC)] 是消息的密码校验和。通过利用一个带特定密钥的分组密码顺序运行一条消息的所有部分,消息的发送者可创建整条信息的简短加密概要,称作“消息完整性检查”。该 MIC 随后被添加到消息上。采用相同密钥的接收者之后能够在该消息上执行同样的函数,计算其特有的 MIC,并验证计算结果与接收到的 MIC 相匹配。消息的任何改变 (即使只是单个位的改变) 都将引起 MIC 的改变,从而导致消息遭遇接收者的拒绝。
随机数发生器
可以在 WSN 中产生加密密钥,但这往往不切实际而且最终将是不安全的,下面我们将会看到这一点。理想的情况是,我们希望由计算机为我们产生密钥。我们不想任何人能够猜出密钥,所以我们期望密钥是随机的,而这需要一个随机数发生器 (RNG)。当计算机的行为是完全确定,人们是最满意,而对于其随机行为是不可取的。让计算机真正地随机并不是一件普通的任务,而且总是需要与某种非数字的东西进行互动。幸运的是,无线电通信本质上就是非数字的,而且其从马可尼 (Marconi) 时期开始历经一个世纪的进步发展到了能够可靠传输数字信息的阶段。所有设计精良的 WSN 系统都将使用无线电或者某种其他的热噪声源作为其 RNG 的一个组成部分,并且将生成真正随机的数字。
接入控制
即使是一个合法获得的设备,如果部署不当,也有可能使一个未预料到会有额外输入的控制系统无所适从。接入控制清单 (白名单、黑名单) 提供了一个附加的控制层,以确保不需要的设备不会使网络陷于混乱。
错误
对问题缺乏了解
在 WSN 安全性中最常见的一个错误是未重视问题的严重性,直到问题出现时一切为时已晚。设计和部署不具备安全性的无线照明控制系统也许听起来不像是个问题,但当一个捣蛋的大学生在您客户的办公地点外控制灯光之时,您才会恍然大悟。
即使那些认识到安全重要性的人也有可能忽视广泛存在复杂性、软件和硬件工具、以及可利用的并且常常施加在该冲突的阴暗面的技能。多家 WSN 公司兜售其通道跳频协议所具备的某些安全性优势,仿佛攻击者不能购买多通道接收器和发送器似的。其他的公司则认为几百万或几十亿个密钥便足以避免遭受攻击,而事实上即使是几百亿个密钥也未必足够[DES-cracking 1998 (注 2)]。如果存在“蛮力”攻击破解密钥的可能性,那么采用一种密钥旋转计划 (其实施时间要比蛮力攻击的时间短得多) 将能够阻止一般的攻击者,但也许无法阻止其中的某个非常“幸运的”攻击者。
共享密钥和软件逆向工程
如果选择了一种合适的密码,并且采用了随机数,那么最简单的系统将为所有的密码操作使用单个共享密钥。只要密钥处于保密状态,此方法自然很好,但这一目标是很难实现的。
一个极端的例子是近期报道的一种蓝牙控制型马桶 / 坐浴盆组合式产品所存在的安全漏洞,该产品中使用的是全部为“0”的默认配对密钥 [Trustwave (注 3)]。这实际上更多的是一个“无安全性”(而非安全性欠佳) 的例子,但说明了这样一点:最好的协议对于选择不当的密钥 (甚至是一种在互联网上变得广为人知的随机密钥) 没有防御作用。蓝牙具有非常出色的安全工具,但如果未能正确地加以使用,那么一旦有人将您考虑不周的产品密钥发布在网上,它们就毫无价值了。
下一个级别是为每个提供或安装的网络采用单个唯一密钥,或者每次形成一个网络就启用一个新密钥。如果您有一部上佳的随机数发生器,并能控制网络中的所有硬件,那么这种方法就是很好的。然而,假如网络中的任何一个节点受到损害,则整个网络对于攻击而言便是“门户大开”。如果允许用户在网络中的节点上编写其自有的软件,则很难阻止那些恶意的用户找到网络密钥。
即使网络软件被封闭,倘若攻击者拥有硬件,那么要想防止他读出微处理器中的程序是相当困难的。有关安全的文献中大量列举了此类攻击的例子,情况常常是这样的:
 获得硬件的一个合法版本并非法侵入以获得代码。
 对代码进行逆向设计以找出密钥的存储位置 (这可以简单到通过比较来自两个不同网络的代码来查看哪些位是不同的)。
 使用该信息以弄清密钥是怎样计算的 (见“劣质 RNG”部分),或者大大加快从遭受攻击的实际网络所捕获之硬件中取出密钥的速度。
数字视频光盘 (DVD) 的安全性已经成为了此类攻击的牺牲品。攻击者通过检查播放机代码并暴露和公布用于保护该材料的若干处理密钥,使得最初的 DVD 内容加扰系统 (CSS) 和后来的 HD-DVD / Blu-Ray (蓝光) 高级内容访问系统 ([AACS (注 4)] 均遭到了破坏。
您必须做这样的假设,就是一个下定决心的攻击者将能够获得您的硬件,读出您的代码并逆向设计出您的算法和软件,极少会有例外。因此,一个设计良好的安全系统一定不得依赖于算法和软件处于保密状态,而且绝对不可以完全寄希望于任何一部设备中的密钥处于保密状态。您必须假定拥有网络节点之一的攻击者能够获得对于该节点的全面控制,而在一个精心设计的系统中,单个节点受到损害一定不会影响到网络中其余节点的安全性。
针对该逆向设计问题最简单的解决方案是确保每个通信会话 (或者两个端点之间的数据流动)具有其自己的唯一密钥,此密钥不为网络中的任何其他节点所知。在这种情况下,即使是网络中的一个已受到攻击损害的节点也无法侦听、篡改或模仿来自网络中任何其他节点的数据或命令。
密钥分布
当使用了合适的协议和密码时,具有用于每个端到端会话的唯一随机密钥的网络可保护网络通信的保密性、完整性和真实性 (图 2)。然而,密钥分布在某些系统中却暴露出了弱点。通常不方便为网络中的每一个节点预设置其全部未来会话将需要的所有唯一密钥,因此密钥在网络形成之后必需进行分配。在有些系统中,这是通过“以明码的方式”(不加密) 发送初始会话密钥来实现,其假设条件是网络随后仅在网络形成期间容易遭受持续时间短暂的攻击。不幸的是,攻击者完全能够建立他的侦听设备并耐心地等待网络重置,或者通过对网络控制器或网关的供电循环而在实际上导致网络重置,或通过其他某种方法引起网络重置。

(图片)

图 2:大多数安全 WSN 系统采用两级密钥:端到端会话密钥和一个或多个链接密钥。每对具有一个端到端通信通道的节点将拥有一个用于加密和验证的唯一共享密钥。此外,还有一个链接密钥用于逐跳验证。

面对该问题,一种简单的解决方案是在制造时于网络中的每个节点上安装单个唯一密钥,并在网络中设有单个受信任的安全管理器 (由其掌管这些密钥),从而在每个节点与安全管理器之间实现可靠的会话。该安全管理器随后产生所有其他会话需要的密钥,并通过其安全通道将这些密钥发送给涉及到的每部设备。另外,还有一套采用公共密钥基础设施的工具,其可提供相似的功能及其他的优势 [PKI (注 5)]。
劣质 RNG
在那些认真对待安全性的人群中,也许最常见的错误就是使用了一个随机性欠佳的随机数发生器。即使采用了所有正确的协议和密码,网络遭受攻击的难度也只相当于猜测密钥的难度。这里常犯的错误是使用了非加密的随机数发生器,或者那些具有非随机种子 (初始值) 的加密随机数发生器。
在计算机科学领域诸多的不同应用中,随机数都是很有用处的,因此许多操作系统都内置了一个“rand()”函数。例如:最初的 UNIX rand() 函数保持一种内部 32 位状态,并根据当前状态来计算下一个随机数和下一种状态。用户可以给该 RNG 赋予 32 位数的种子,然后,rand() 函数的每一次调用将产生一个含 40 亿个数值之序列中的下一个数值。它虽然不是一种非常出色的 RNG,但在过去对于大多数非加密应用来说却是足够好了。然而如今,利用一部台式计算机来产生一张包含所有 40 亿个可能的随机数及其在序列中之位置的表格只是一项简单的家庭作业。即使再多的种子随机处理也将无济于事 ── RNG 本身不够复杂。
加密 RNG 采用了更多的内部状态 ── 通常至少为 128 位。如上所述,由于采用了 128 位密钥,因此即使几十亿台计算机运作几十亿年也几乎不可能找到数字序列中的一种模式。有大量记录了优良 RNG 之实施方案和测试程序的文件 [NIST (注 6)]。
即便是最好的 RNG 算法其随机性也只能与提供给它的种子相同。IOActive (注 7) 指出了两个 WSN 安全系统中的一个常见错误,这里,他们通过对两个产品的软件二进制文件进行逆向设计发现:它们采用的是一种非常不具备随机性的种子。两个产品皆采用时间函数 (单位:秒) 作为其随机数发生器的种子。由于一年只有几千万秒,即使是一部性能适中的笔记本电脑也能够通过对过去几十年的快速搜索而产生全部可能的密钥。
安全网络
尽管新闻中充满了有关无线安全性失效事例的报道,但是世界上仍然遍布着事实上十分安全的无线网络。安全的网络只是常常没有什么新闻价值罢了。如上文讨论的那样,安全的网络需要一个安全协议和一个安全的实现方案 (图 3)。

(图片)

图 3:正确使用广为人知的安全性技术能够可靠地将保密、真实、未经改动的消息从源端输送到目的端。可以检测和挫败无效使用或攻击。

在 WSN 中,设计巧妙的安全协议之部分实例包括 Wireless HART 和 ISA100.11a 工业自动化协议,以及 ZigBee Smart Energy (智能能源) 协议。所有这些协议都经过了安全专家的广泛审议,而且很多实现方案已经顺利通过了类似的评审。
特别地,Wireless HART 协议是部署在世界各地 (从北极圏到阿拉伯沙漠均在其列) 关键型基础设施应用中的安全网络基础。此项技术的最终用户放心地托付 WSN 在经过认证的端点之间可靠和保密地提供过程控制信息。该行业中的客户以及为其供货的供应商对其网络很有信心,原因是对协议和作为其基础的实现方案之深度分析和测试。
在面向工业过程自动化的 WSN 中,从一开始人们就知道安全性是至关紧要的,而且协议和实现方案反映了这一现实。随着新协议不断涌现 (特别是针对 IoT 的协议),将需要在应用环境中重温一些深刻的教训,其在此类环境中可能不像 “安全性是至关紧要的” 这一点那么明显。正如上面的例子所表现的那样,有些人尚未汲取这些教训。幸运的是,在互联网协议 (IP)应用中提供 “工业质量” 的安全性与在工业应用中一样容易。具体示例包括由凌力尔特提供 SmartMesh IP™ 和几种新兴的 IP 标准 (图 4)。

(图片)

图 4: 凌力尔特的SmartMesh™ LTC5800(片上系统 ) 和 LTP5900 (模块 ) 系列是业界功耗最低且 符合 IEEE 802.15.4E 标准的无线传感器网络产品。 SmartMesh IC和模块使得能够设计出具有 10 年以上电池寿命的纤巧型传感器 “节点 ”,而配套使用的网络管理器组件则能帮助开发出高度稳固和安全的无线传感器网络 (WSN) 。

结论
在无线传感器网络中,安全性欠佳的后果是很严重。 不幸的是,目前市面上许多产品要 么未在实现安全性上做出过认真的尝试, 要就是努力之后以失败而告终。幸运通 过运用 已确立的原则、合适协议和密码以及热噪声之物理性质中固有随机,可构 建兼具安全性和高效的系统。 存在许多此类协议和实现方案,而且世 界上遍布着安全的无 线网络。而且, 线网络。而且, 当网络的所有其余部分均安全时, 无线传感器网络空间中的每个人也将获益。 8/11/2015


电脑版 客户端 关于我们
佳工机电网 - 机电行业首选网站