关注网络安全
和行业未来

TLS 1.3将拯救我们所有人 而物联网由于种种原因仍不安全

大约在2016年秋季前后,我们开始发现DDoS攻击看起来与平常略有不同。那时我们看到的一次攻击来自52467个单独的IP地址。这些客户端既不是服务器也不是台式计算机;而当我们试图连接到这些客户端的80端口时,我们竟然来到了闭路电视摄像头的登录页面。

很明显,锁定物联网(IoT)设备是很重要的,这样它们就不会被选中而加入邪恶的僵尸网络大军,但是,当我们与一些物联网开发者交谈时,我们会听到一些关于安全模式的担忧。我们将针对两个存在问题的领域及其解决方案进行深入探讨:软件更新和TLS。

更新方面的麻烦

对于个人计算机来说,保护设备安全最终要由终端用户来负责。大家都知道需要对自己的电脑和手机进行更新。就在苹果发布iOS 10系统4个月后,已经有76%的活跃设备安装了该系统。然而,大家却不知道应该更新物联网的设备,就像应该更新自己的电脑一样,这是因为他们过去从来没有更新过这些设备。我的父母永远不会为他们的温度计安装软件更新。

随着时间的推移,问题变得越来越严重。一个设备停留在较老的软件版本上的时间越长,它与新版本兼容的可能性就越小。在某个时候,该设备也许就再也无法进行更新了。这是一个非常令人担忧的现实问题,因为一个联网设备的保存期限可以是10年,比如厨房用具——你买过电冰箱吧?

这是设备软件可以打补丁的情况。首先,低电池的设备被设定为不接收更新,因为这太耗电了。其次,物联网设备太轻薄了,无法运行完整的操作系统,它们只能在固件上运行一个编译后的二进制文件,这意味着后期向其推送代码会受到限制。而有些设备无法接收特定的软件补丁。

我们从物联网开发人员那里听到的关于更新的另一件事是,他们常常害怕推送新的更新,因为这可能意味着成千上万的设备被一次性攻陷。

所有这一切看起来都不像是一件大事——好吧,一个烤面包机可能会被黑,那又怎么样呢——但是有两件非常真实的事情存在危险。首先,每一个容易被攻击的设备都能让其它应用程序成为目标。其次,一旦有人控制了某个设备,他们就会处于你的网络之中,这样就会威胁到任何通过该网络传输的通信。

对个人计算机来说,正常运转的安全模式并不适用于物联网——终端用户负不了这个责任,而软件补丁也不可靠。我们需要别的东西。解决方案是什么呢?

通向物联网设备的通信经过了许多不同的网络,包括应用程序服务器的传输服务提供商、用于分发设备流量的内容分发网络以及物联网设备所在的建筑物的网络服务提供商。

在这些网络层中,可以添加保护。随着物联网设备的流量在这些网络中移动,数据包可以被过滤,只允许好的流量进入。即使一个设备运行的是易受攻击的代码,在网络级别添加的过滤器也能阻止黑客的攻击。

TLS方面的麻烦

TLS在物联网设备中有两种用途:首先,TLS被用来对传输中的数据进行加密。这是用来保护数据隐私的,并且使得对设备的通信进行反向工程变得更加困难。其次,设备存储着客户端的TLS证书,以便应用程序对设备进行身份验证——这使得伪造设备增加了一个步骤,难度更大。

当开发人员想要在物联网中实现TLS时,他们会遇到三个问题。第一个问题是,物联网要求通信必须是快速和轻便的,但TLS在每次会话开始时都增加了两次信息往返。第二个问题是,证书文件可能是会比较大,但物联网设备的内存是有限的。第三个问题是,一些为物联网而开发的协议默认情况下是明文。

TLS并不轻便

物联网设备运行在低功率芯片上。一个物联网设备可能只有256或512 KB的内存,而且通常需要节省电池。它们不断地发送和接收大量的微小信息。想象一下,一个连接到互联网的风速传感器——它用来测量风速,并且每30秒将新的风速数据发送到应用程序服务器。它需要通过网络传输的只是几个字节的数据,而且它需要尽可能节省内存和电池,以便在开销不大的情况下实现自己的功能。

这里是一个HTTP POST请求:

现在假设同样的设备使用TLS的情况。下面是TLS握手时同样的POST请求的情况——这是TLS 1.2:

根据设备与应用程序服务器之间的距离和服务器的延迟不同,这可能额外需要数百毫秒的时间。解决方案可能是最新版本的TLS,也就是TLS 1.3。

TLS 1.3消除了在TLS握手过程中的一次完整的消息往返,这使得TLS变得更轻便、更快捷。通过预测服务器决定使用什么样的密钥协议和算法,它将握手中的消息往返次数减少了一半,并在其发送的客户端问候信息中直接包含了这些猜测的参数和密钥共享。如果服务器接受这些的话,它就会将自己的密钥共享以相同的算法发送回来,然后整个握手就完成了。

如果同样的物联网设备再次与同一台服务器进行通信,那么实际上根本不会有消息往返。初始握手中选择的参数将与第一个数据包中的应用程序数据一起发送。

今天,为什么不是每一个物联网设备都使用TLS 1.3呢?因为,在IETF的标准跟踪协议中,TLS 1.3仍在积极开发过程中,而截至1月份的Chrome浏览器56版本和截至3月份的Firefox浏览器的52版本均支持TLS 1.3,但并不是所有的浏览器版本都支持TLS 1.3。今天最大的问题是,互联网服务提供商(ISP)所使用的中间设备以及那些一看到TLS 1.3握手就会恐慌地关闭连接的企业。这种事情在大家升级到TLS 1.2的时候也发生过,而当时那些中间设备只支持TLS 1.1,所以这一切只是时间问题。

TLS证书的大小

在TLS握手过程中,服务器可以使用服务器端TLS证书来向客户端表明自己的身份,而客户端同样可以使用客户端证书来向服务器表明自己的身份。设备通常会存储证书,以便对向应用服务器表明自己的身份。然而,在物联网中,设备的内存通常是很有限的,而证书可能会很大。那我们能做些什么呢?

如今,大多数证书都使用RSA算法,这种算法自20世纪70年代以来就一直存在。使用这种算法的证书很大,这是因为RSA中的密钥必须很大才能确保安全——其大小在1024到2048个字节之间,但是,使用椭圆曲线加密的新算法自2000年初以来就已经被广泛使用了,该算法可以解决这个问题。使用椭圆曲线加密算法,我们就可以在相同安全级别的情况下,使用比RSA算法更小的密钥,这样就节省了设备的存储空间。

默认明文物联网协议

物联网设备必须是轻便的,因此两个新兴的协议正在取代HTTP协议,成为一些物联网设备的主流传输协议,它们就是MQTT协议和CoAP协议。

MQTT是一种发布/订阅协议,它已经有将近20年的历史了。在MQTT协议中,有一个代理服务器充当中间人。物联网设备或网络应用会向中间人发布消息,而中间人再将这些消息分发给其它需要接收这些消息的物联网设备。

在近20年前编写MQTT协议的时候,编写者主观上并没有安全方面的意图。它是为石油和天然气公司编写的,这些公司只是发送传感器数据,没有人认为这些数据需要加密。

CoAP协议在三年前就已经标准化了。它和HTTP协议有相同的方法,但它是在UDP协议之上的,所以它确实很轻便。

问题在于,如果你想要把TLS协议(实际上是DTLS协议,因为CoAP协议是在UDP协议之上的)加进去,那么它可就不会再那么轻便了。

随着部署的物联网设备的数量继续增长,更新机制和TLS实现的变化将是非常有趣的。我们期待TLS1.3的到来,让物联网变得更安全!

 

稿源: Cloudflare

评论 抢沙发