IoT 十大安全挑战
从设备安全到网络安全、应用程序安全等等
学习路径:培养 IoT 开发技能
本教程已纳入面向 IoT 的开发者指南 IoT 201 学习路径。
- IoT 架构
- IoT 安全挑战(本文)
- IoT 数据分析
- IoT 设备管理
- 教程:构建门禁监控系统
随着越来越多 IoT 设备面世,部署在无法控制、复杂且通常恶劣的环境中,保护 IoT 系统面临着大量独特挑战。依据 Eclipse IoT 工作组 2017 年的 IoT 开发者调查,安全是 IoT 开发者关注的首要问题。
下面我们将介绍我认为 IoT 安全面临的十大挑战:
- 安全约束装置
- 授权和验证设备
- 管理设备更新
- 安全通信
- 保证数据隐私和完整性
- 保护 Web、移动和云应用程序
- 保证高可用性
- 通过检测漏洞防止事件发生
- 管理漏洞
- 预测并抢先预防安全问题
1. 安全约束装置
许多 IoT 设备的存储、内存和处理能力有限,通常需要能够在低功耗条件下运行,比如在使用电池运行时。
高度依赖于加密的安全方法不太适合这些资源受限的设备,因为它们执行复杂加密和解密的速度不足以让它们实时安全地传输数据。
这些设备常常容易受到旁路攻击,比如 功耗分析攻击,这些攻击可用来对算法执行逆向工程。相反,资源受限的设备通常仅采用快速的 轻量型加密算法。
IoT 系统应使用多层防御来弥补这些设备局限,例如将设备隔离到单独的网络上并使用防火墙。
2. 授权和验证设备
由于如此多设备在 IoT 系统中提供了潜在的入口点,设备验证和授权对保护 IoT 系统至关重要。
设备在访问网关、上游服务和应用程序之前,必须先确定自己的身份。但是,有许多 IoT 设备未能有效实现设备验证,例如那些使用弱基础密码验证或原封不动地使用默认密码的设备。
采用默认提供了安全保护的 IoT 平台 有助于解决这些问题,比如,通过启用双因素验证 (2FA) 和强制使用强密码或证书。IoT 平台还提供了设备授权服务,用于确定每个设备有权访问系统中的哪些服务、应用程序或资源。
3. 管理设备更新
对在 IoT 设备和网关上运行的固件或软件应用更新(包括安全补丁)存在着许多挑战。例如,需要不断跟踪可用的更新,跨包含异构设备(它们通过一系列不同的网络协议通信)的分布式环境而异步应用更新。您必须实现一个良好的回滚策略,以防更新失败。
不是所有设备都支持无线更新或无中断更新,所以可能需要物理地访问设备或临时停止生产来应用更新。另外,可能不是所有设备都能够获得更新,特别是旧设备或制造商不再提供支持的设备。
甚至在更新可用时,设备所有者也可能选择不更新应用,所以保持向后兼容性很重要。作为设备管理的一部分,您需要持续跟踪每个设备上部署的版本,以及哪些设备在不再提供更新后退役。
设备管理器系统常常支持向设备自动推送更新,以及在更新过程失败时设法回滚。它们也有助于保证只执行合法的更新,例如通过使用数字签名。
详细阅读 保护 IoT 设备和网关。
4. 安全通信
设备本身受到保护后,下一个 IoT 安全挑战是保证设备通过网络与云服务或应用程序的通信是安全的。
许多 IoT 设备在通过网络发送消息之前未进行加密。但是,最佳实践是使用传输加密,并且是采用 TLS 这样的标准。使用单独的网络来隔离设备也有助于建立安全、私有的通信,从而使传输的数据保持机密。常用的措施包括使用防火墙,限制对网关设备的物理访问,使用随机生成的一次性密码,以及关闭设备不需要的操作系统功能。
详细阅读 保护网络中的 IoT 数据。
5. 保证数据隐私和完整性
同样重要的是,无论数据通过网络最终传输到何处,它都应该得到安全的存储和处理。实现数据隐私包括在存储之前编辑或匿名化敏感数据,或者使用数据分离措施从 IoT 数据负载中分离出个人可识别的信息。不再需要的数据应安全地处置,而且如果数据已存储,保持符合法律法规框架也是一项重要挑战。人们对开发支持 联合机器学习 的系统越来越感兴趣,在这些系统中,数据保留在设备本地,机器学习工作则在边缘进行,只有学习内容、洞察会进行云共享。这类系统的本质是,应该将算法应用于数据,而不是像传统方法那样将所有数据都传递至算法。
保证数据完整性,这可能涉及到采用校验和数字签名来保证数据未被修改。区块链 —— 作为 IoT 数据的一种去中心化分布式账本,提供了一种可扩展且具有灾备能力的方法来保证 IoT 数据的完整性。
详细阅读这篇博客文章中的 区块链对于 IoT 的意义。
6. 保护 Web、移动和云应用程序
Web、移动和云应用程序及服务用于管理、访问和处理 IoT 设备和数据,所以它们也必须在一种多层 IoT 安全方法中受到保护。应遵循所有保护移动和 Web 应用的标准实践。
开发 IoT 应用程序时,确保应用安全工程实践来避免漏洞,比如 OWASP 十大漏洞。像设备一样,无论是对应用程序本身还是应用程序的用户,应用程序也都应该通过提供 2FA 等选项和安全密码恢复选项来支持安全验证。
详细阅读 IoT 应用程序的安全最佳实践。
7. 保证高可用性
随着我们的日常生活越来越依赖 IoT,IoT 开发者必须考虑 IoT 数据及依靠该数据的 Web 和移动应用程序的可用性,以及考虑我们访问 IoT 系统所管理的物理设备的能力。连接中断或设备故障,或者 拒绝服务攻击 等攻击导致的破坏潜力不只是带来不便。在一些应用程序中,缺乏可用性的影响可能意味着损失收入,损坏设备或者甚至失去生命。
例如,在互联城市中,IoT 基础设施负责交通控制等基础服务;在医疗领域,IoT 设备包括起搏器和胰岛素泵。要保证高可用性,必须保护 IoT 设备免遭网络攻击和物理篡改。IoT 系统必须包含冗余性来消除单点故障,而且还应该采用具有灾备能力且容错的设计,以便在出现问题时快速适应和恢复。由于大多数 IoT 系统本质上都是分布式的,因此务必要牢记 CAP 定理(一个分布式计算机系统最多只能具有高可用性、一致性和网络分区容错性这三项属性中的两项)。
8. 通过检测漏洞防止事件发生
尽管竭尽所能,但安全漏洞和破坏在所难免。您如何知道您的 IoT 系统是否受到了损害?在大规模 IoT 系统中,系统在连接的设备数量以及涉及的设备、应用程序、服务和通信协议的种类上非常复杂,这可能导致难以及时发现发生了故障。检测漏洞及破坏的策略包括监控网络通信和活动日志中的异常,参与渗透测试和道德黑客行动来暴露漏洞,以及应用 安全智能和分析 来识别何时发生事故并发出通知。
详细阅读 保护 IoT 设备免遭恶意软件攻击。
9. 管理漏洞
IoT 系统的复杂性还使得很难评估漏洞的后果或破坏程度,从而无法管控其影响。挑战包括识别哪些设备受到了影响,哪些数据或服务被访问或损害,以及哪些用户受到了影响,然后立即采取措施来解决该情形。
设备管理器维护着一个设备注册表,可使用它来临时禁用或隔离受影响的设备,直到可以修复它们。此特性对网关等重要设备特别重要,可用来限制它们导致危害或破坏的潜力,例如,它们在受到攻击后可能会利用虚假数据让系统泛洪。可以通过基于漏洞管理策略的规则,使用规则引擎来自动应用操作。
10. 预测并抢先预防安全问题
更长期的 IoT 安全挑战是,不仅能检测和减轻所发生的问题,还能用来预测和前瞻性地防御潜在的安全威胁。 威胁建模 是一种用来预测安全问题的方法,另外还有些其他方法,包括应用监控和分析工具来实时关联事件和可视化显现出来的威胁,以及应用 AI 基于以前措施的有效性来自适应地调整所应用的安全策略。这些方法本质上是尽量减少人为干预,并尽可能地使用算法来完成工作,因为连续的手工检查几乎是不可能实现的。
结束语
要安全地管理设备、数据及移动和基于云的 IoT 应用程序和服务,以及处理出现的威胁或问题,务必为 IoT 开发采用多层安全设计方法。忽视 IoT 系统安全可能会导致系统故障、资金损失,甚至是其他损害。
整合默认安全保护 —— 始终为安全特性配置最安全的设置,包括在开发之前、期间和之后,这将使您能够维护数据隐私和完整性,同时提供高度可用的 IoT 数据、应用和服务。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论