IoT由内而外的安全
扫描二维码
随时随地手机看文章
很多物联网(IoT)设备都是我们日常生活中所使用的,例如家电和恒温器等,因此,网络安全应是IoT系统供应商首先要考虑的问题。人们在日常生活中遇到问题最容易让人沮丧:如果您的冰箱由于软件缺陷而停止工作,这是不是也会成为头版头条!
IoT产品在安全上有各种层面的考虑,从基本的数据流加密到用户和设备级的认证等。在这篇文章中,我们重点介绍网络级安全。
一个典型的IoT设备位于私有网路中,在防火墙的后面。这种体系结构既有优点也有问题。一方面,它减少了设备与防火墙和Wi-Fi网络本身的安全接触,无论如何,减轻了网络供应商的安全责任。安全代理有助于降低CPU成本。另一方面,防火墙阻止了云服务器出于通过移动应用程序进行控制的目的而直接连接IoT设备。
有些技术能够帮助旁路防火墙,支持从云端到IoT设备的输入连接。但是,很多这类技术利用了漏洞,并不是所有网络都支持这样做,而且,这种体系结构很难设计一种真正安全的 IoT设备。旁路防火墙最简单、最安全、最可靠的方法是IoT设备符合“仅输出连接”规则:所有连接都是从设备向云端发起,然后,设备应保持这一连接是开放的。这一方法简单而且更安全,这是因为它不依靠防火墙的开放端口,也不依靠让防火墙完成数据流路由的技术,例如,NAT会话穿越(STUN)方法等。
建立连接后,我们应选择怎样高效的使用连接,在响应和资源占用之间达到均衡。HTTP 长轮询是一种双向通信,基于“由内而外输出 标准的方法 (图1)。
图1. 双向通信,基于由内而外标准的方法
在长轮询模型中,IoT 设备向服务器发出HTTP请求。服务器延迟对HTTP请求的响应,直至经过了预先设定的时间周期,或者直至收到要求响应IoT设备的命令或者请求。如果命令是必须的,服务器会立即响应命令,IoT客户端处理命令。IoT客户端会立即发出另一服务器 HTTP 请求,开始循环。如果命令或者请求需要向服务器提供结果,那么,它会在新的长轮询请求中进行。
这一方法有几种优点。从IoT设备的角度看,HTTP简单,轻量,而且还有很多支持库。HTTP还提供了互联网路由功能,包括对长轮询所需要的持续连接的支持。
HTTP还支持任意负载,您可以灵活的选择与设备相关的消息。我们成功的在长轮询上使用了JSON/REST语法,以及谷歌协议缓冲消息。
从云端服务器的角度看,大部分工作框架都是设计成处理HTTP请求,支持服务器开发人员自由的使用现有工作框架和库以加速开发。
HTTP 长轮询还支持服务器通过简单的实现更长的响应延时,从而控制带宽利用率。而且,通过增加简单的“轮询定时器”,迫使 IoT 客户端延时HTTP请求,这样,您很容易获得真轮询模型,一方面,牺牲响应时间,而另一方面,降低了对资源的占用,可以使用电池供电。
WebSockets 是另一种选择,与HTTP长轮询非常相似。WebSockets与HTTP帧头配合使用,效率非常高。WebSockets还提供实时设备至服务器提醒功能,某些应用会需要这一功能。为获得长轮询模型的实时提醒功能,必须使用单独的套接字,以保持服务器控制的长轮询通道。
然而,并不是所有服务器工作框架都支持WebSockets,在很少的一些实际应用中,网络布线会成为问题。在不远的将来,WebSockets 会是很好的选择,但是目前而言,我不会使用它,除非您的目标环境支持它。
这些技术的基础都是传输控制协议(TCP)套接字。合理可行的安全模型在这一套接字连接上对数据流进行加密。虽然最近有些不好的消息,但是安全套接字层(SSL)或者传送层安全(TLS)仍然是加密层最好的选择。SSL 通过的审查最多,支持最多,也最被容易理解。
您想过要发明自己的协议?考虑到最近的安全缺陷,例如,目前出名的“Heartbleed” 缺陷,它来自一些大公司的SSL和开放源库,这说明了很难开发一种真正安全的协议,更不用说正确的实现它。因此,在尝试自己的安全方案之前一定要三思。
然而,SSL 本质上是一种大规模协议,在连接建立过程中需要很多次握手。这种开销进一步说明所有通信应使用持续连接方法,好在HTTPS长轮询(结合TCP套接字“保持连接”,因此,每次轮询不会重新打开)适合这一应用。
SSL还会占用大量的代码空间和运行时存储器。对于资源丰富的云服务器,SSL资源开销并不是太大的问题,但是对于低成本IoT设备却不然,这是因为存储器和CPU功耗是首当其冲要考虑的。当考虑IoT设备的SSL库时,如果您选择的SSL库提供了选项来禁用您不使用的功能,那么应评估您需要使用 SSL 的哪些功能。您还应该看看目标硬件能否帮助您减轻负载。SSL 基于高级加密标准(AES)、安全哈希算法(SHA),以及其他标准密码算法。很多硬件平台提供专门的加密硬件,把这些计算从CPU中卸载下来。
最后,这些方法实际上是在资源和理解安全需求之间达到均衡。认真的思考,提前规划好有助于解决很多棘手的问题。