了解物联网中的安全性:Wi-Fi 链路层

一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡/ 赠书活动

目前,正在 星球 内带小伙伴们做第一个项目:全栈前后端分离博客项目,采用技术栈 Spring Boot + Mybatis Plus + Vue 3.x + Vite 4手把手,前端 + 后端全栈开发,从 0 到 1 讲解每个功能点开发步骤,1v1 答疑,陪伴式直到项目上线,目前已更新了 204 小节,累计 32w+ 字,讲解图:1416 张,还在持续爆肝中,后续还会上新更多项目,目标是将 Java 领域典型的项目都整上,如秒杀系统、在线商城、IM 即时通讯、权限管理等等,已有 870+ 小伙伴加入,欢迎点击围观

您的物联网系统中可以使用许多不同的无线技术,但 Wi-Fi 几乎肯定会出现在某个地方。考虑到这一点,我们或许应该谈谈 Wi-Fi 链路层提供的安全级别。作为开发人员,我们真的只对一件事感兴趣——它对我的安全有多大帮助(如果有的话)? tl;dr 版本是 Wi-Fi 链路层安全性可能是一个不错的选择,但不能作为安全措施来依赖。让我们多讨论一下,找出原因。

第一个主要缺点是 Wi-Fi 链路层安全性只会为无线网络中发送的数据包提供加密。如果您的设备正在与后端服务器通信,则当数据包离开您的接入点 (AP) 时,链路层安全性就会结束。因此,链路层安全性可能会阻止恶意窃听者在本地侦听您的无线信号,但不会为您的 AP 和后端服务器之间受损的网络实体提供保护。对于与后端服务器的通信,您真的应该考虑实施 SSL/TLS 加密

链路层安全的第二个主要缺点(当然是从开发人员的角度来看)是您无法控制它。用户的 Wi-Fi AP 可能正在使用 WEP、WPA2 甚至根本没有安全措施。显然后者是最坏的情况。但是,正如我们将看到的,WEP 已完全损坏,因此几乎与没有安全性一样糟糕。 WPA2 虽然相对安全,但也存在一些漏洞。

无线接入点

WEP(有线等效保密)在第一个 IEEE 802.11 (WLAN) 规范中进行了描述。它旨在在相当于有线网络的无线网络上提供隐私。 WEP 使用 RC4 流密码来加密要发送的明文数据。作为 RC4 密码的密钥,WEP 将 24 位初始化向量 (IV) 与 AP 的 WEP 密钥连接起来。流密码的一个要求是同一个密钥不应该被使用两次。显然,AP 的密钥将始终相同(用户手动更改除外)。包含 IV 是为了确保 RC4 密码输入密钥满足此条件。但是,24 位不足以保证这种唯一性。事实上,相同的 IV 在大约 5000 个数据包后重复的可能性为 50%。

2001 年,Scott Fluhrer、Itsik Mantin 和 Adi Shamir 公布了一次攻击(也称为 FMS 攻击)的详细信息,该攻击利用 IV 和 RC4 在 WEP 中的使用方式并导致恢复 WEP 密钥。

在最初的 FMS 论文之后,发表了许多其他 WEP 破解攻击。使用这种攻击的密钥恢复速度取决于可以观察到的数据包数量,但可以在短短一分钟内完成。 Erik Tews、Ralf-Phillipp Weinmann 和 Andrej Pyshkin 的一篇论文概述了如何通过 104 位 WEP 密钥实现这一点。此外,您不必成为加密专家即可制作执行攻击的工具。可以免费获得可以发起此类攻击的软件包。例如, Aircrack-ng 。有了这样一个有缺陷的协议和免费提供的破解工具,WEP 显然无法提供对计算机技能有限的黑客的保护。

WPA2

WPA2(Wi-Fi 保护访问 2)是作为 WEP 的替代品而创建的。 WPA 确实存在,但它是从不支持 WPA2 的 WEP 硬件迁移过来的人们的临时解决方案。 WPA2 是一个安全的 Wi-Fi 链路层(当然会有一些注意事项,我们马上就会看到)。

设置 WPA 连接需要四个步骤。具体来说,这些步骤是安全策略协议、802.1x 身份验证、密钥派生和分发以及最后的数据机密性和完整性(即加密您的数据)。出于我们的目的,我们不需要深入研究四步过程;对于感兴趣的读者,Guillaume Lehembre 对 WPA/WPA2 在 Wi-Fi 安全中的四步设置——WEP、WPA 和 WPA2 进行了很好的总结。对于这次讨论,我们真正需要知道的是 WPA2 解决了 WEP 在密钥破解方面的关键缺陷。然而,如果我们只能说 WPA2 是牢不可破的,事情就有点太简单了。仍有许多攻击可以尝试。

我们首先要讨论的是蛮力攻击。对于非企业用户,WPA2 接入点可能会使用预共享密钥 (PSK) 架构。 PSK 由用户输入的 256 位字符串或 8 到 63 个字符的密码生成。对于短密码,比如 8 个字符的密码,暴力攻击是可能的。但是,由于密码不是实际的 PSK,因此可以针对此类攻击提供一些保护。 PSK 是通过应用 PBKDF2 密钥派生函数,使用 AP 的 SSID 作为盐和 HMAC-SHA1 的 4096 次迭代从密码短语计算得出的。以这种方式从密码短语中导出 PSK 需要时间,并且最终会减慢暴力攻击的速度,因此这是不切实际的。值得注意的是,确实存在用于常见的SSID和密码组合的彩虹桌,但是可以通过适当的SSID和密码来减轻这些组合。

我们将讨论的第二种更成功的攻击类型不直接攻击 WPA2。相反,名为 Wi-Fi Protected Setup (WPS) 的 Wi-Fi 扩展受到攻击。 WPS 旨在帮助简化用户在连接到受保护的 Wi-Fi 网络时的体验。 WPS 要求用户只需输入一个八位数的 PIN 码即可加入网络。正是这个引脚将成为 Stefan Viehböck 设计的暴力攻击 的焦点。这八位数字包括七位实际密码和一个校验和位。这应该意味着有 10,000,000 个可能的引脚。但是,WPS 中的交换意味着 pin 的前四位数字和 pin 的后四位数字是在不同的步骤中验证的。通过监控这些验证步骤,最多有 10,000 个(前 4 位数字)加上 1,000 个(后 3 位数字)可能的 PIN 码,暴力攻击变得更加可行。

概括

正如我们在介绍中指出的那样,Wi-Fi 链路层安全性可能是一个很好的选择,但实际上不能保证为您的物联网设备增加任何安全性。考虑到这一点,作为 IoT 开发人员,不应依赖 Wi-Fi 链路层安全来保证用户数据的安全。可以依赖其他方法,例如 SSL/TLS 加密。我们还将在我们的安全系列的未来帖子中研究其他安全措施。