你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
适用于 IoT 解决方案的安全体系结构
设计和构建 IoT 解决方案时,了解潜在威胁并包括适当的防御措施非常重要。 了解攻击者可能如何入侵系统有助于确保从一开始就采取适当的缓解措施。
威胁建模
Microsoft 建议将威胁建模过程用作 IoT 解决方案设计的一部分。 如果不熟悉威胁建模和安全开发生命周期,请参阅:
IoT 中的安全性
作为威胁建模练习的一部分,将 IoT 架构划分为几个区域会很有帮助:
- 设备
- 现场网关
- 云网关
- 服务
每个区域通常都有自己的数据以及身份验证和授权要求。 还可以使用区域来隔离损坏,并限制低信任区域对较高信任区域的影响。
每个区域都由信任边界来隔离;下图中以红色虚线标示。 它代表从某个源到另一个源之间的数据转换。 在此转换期间,数据可能受到以下威胁:
- 欺骗
- 篡改
- 否认
- 信息泄露
- 拒绝服务
- 特权提升
若要了解详细信息,请参阅 STRIDE 模型。
可以使用 STRIDE 对每个区域中每个组件的威胁建模。 以下部分详述了每个组件和特定的安全注意事项,以及应准备好的解决方案。
本文的其余部分更详细地讨论了这些区域和组件的威胁和缓解措施。
设备区域
设备环境是指设备周围的空间,其中可进行设备的物理访问和局域网数字访问。 假设局域网是独特的,并且与公共 Internet 隔离,但可能桥接到公共 Internet。 设备环境包括允许设备对等通信的任何短距离无线电技术。 不包括任何创建此类局域网错觉的网络虚拟化技术。 不包括公共运营商网络,如果任何两个设备要进入对等通信关系,则需要它们通过公共网络空间进行通信。
现场网关区域
现场网关是一种设备、工具,或作为通信启用器的一般用途服务器计算机软件,甚至可能是设备控制系统和设备数据处理中心。 现场网关区域包括现场网关本身以及连接到它的所有设备。 现场网关可作为外部专用的数据处理设备,通常与位置绑定,也可能受限于物理入侵的影响,并具有有限的操作冗余。 如果攻击者获得物理访问权限,通常可以对现场网关进行物理破坏。
现场网关不同于流量路由器,因为它在管理访问和信息流方面发挥着积极的作用。 现场网关有两个不同的外围应用。 其中一个面向附加到它的设备,并表示区域内部。 另一个面向所有外部方,表示区域边缘。
云网关区域
云网关是一个系统,支持在多个站点部署的设备或现场网关之间进行远程通信。 云网关通常支持基于云的控制和数据分析系统,或此类系统的联合。 在某些情况下,云网关可立即促进从终端(如平板电脑或手机)到特殊用途设备的访问。 在云网关区域中,用于防止物理访问目标的操作措施并不一定要向公有云基础结构公开。
云网关可被映射到网络虚拟化覆盖,以隔离云网关与所有附加设备或现场网关的任何其他网络流量。 云网关本身不是设备控制系统,也不是处理或存储设备数据的设备;而是这些设备与云网关对接。 云网关区域包含云网关和所有现场网关,以及直接或间接附加到其上的设备。 区域边缘是不同的外围应用,所有外部方都可以通过它进行通信。
服务区域
此上下文中的服务是任何通过现场网关或云网关与设备进行交互的软件组件或模块。 服务可以从设备收集数据,并命令和控制这些设备。 服务是一个转存进程,它在其标识下对网关和其他子系统进行如下操作:
- 存储和分析数据
- 根据数据见解或计划向设备发出命令
- 向最终授权用户公开信息和控制功能
IoT 设备
IoT 设备通常是专用设备,从简单的温度传感器到每条生产线包含上千个组件的复杂工厂生产线,不一而足。 IoT 设备功能示例包括:
- 测量和报告环境条件
- 转向阀
- 控制伺服系统
- 发出警报
- 打开或关闭灯
这些设备的具体用途确定了它们的技术设计,以及它们生产和计划的生命周期操作的可用预算。 这些因素的组合将限制可用的操作能源预算、实际使用量,乃至可用的存储空间、计算和安全功能。
自动化或远程控制 IoT 设备可能出现的问题包括:
- 物理缺陷
- 控制逻辑缺陷
- 有意未经授权的入侵和操作。
这些故障可能会导致严重后果,如生产批次被毁,建筑物被烧毁,或受伤和死亡。 因此,对于那些使物体移动或报告传感器数据而导致物体移动的命令的设备来说,有一个很高的安全标准。
设备控制与设备数据的交互
特殊用途的连接设备具有大量的潜在交互接口区与交互模式,必须全面考虑所有项目才能提供适当的框架,以保护这些设备的数字访问安全性。 数字访问是指通过软件和硬件而不是通过直接物理访问设备执行的操作。 例如,通过将设备放入门上锁的房间来控制物理访问。 尽管无法使用软件和硬件拒绝物理访问,但仍可以采取一些措施来防止物理访问干扰系统。
在探索交互模式时,对设备控制和设备数据同等重视。 设备控制是指为改变设备行为而向其提供的任何信息。 设备数据是指设备向任何其他方发出的关于其状态和环境观察状态的信息。
对 Azure IoT 参考体系结构进行威胁建模
本部分使用 Azure IoT 参考体系结构来演示如何思考 IoT 的威胁建模以及如何解决所识别的威胁:
下图使用数据流图表模型提供了参考体系结构的简化视图:
该体系结构将设备和现场网关功能隔离开来。 此方法使你能够使用更安全的现场网关设备。 现场网关设备可以使用安全协议与云网关通信,这通常需要比简单设备(如恒温器)本身提供的处理能力更强大的处理能力。 在该图表中的 Azure 服务区域中,Azure IoT 中心服务是云网关。
根据前面概述的体系结构,以下部分显示了一些威胁建模示例。 这些示例将侧重于威胁模型的核心元素:
- 进程
- 通信
- 存储
进程
下面是进程类威胁的一些示例。 威胁根据 STRIDE 模型进行分类:
欺骗:攻击者可能会在软件或硬件级别从设备中提取加密密钥。 然后,攻击者使用这些密钥通过原始设备标识从其他物理或虚拟设备访问系统。
拒绝服务:通过干扰无线电频率或剪断线路,导致设备无法运行或无法通信。 例如,蓄意破坏监控摄影头的电源或网络连接,使其完全无法报告数据。
篡改:攻击者可能会部分或完全替换设备上的软件。 如果设备的加密密钥可供攻击者代码使用,那么攻击者就可以使用设备标识。
篡改:显示空走廊的可见光谱图像的监控摄影头可能是对着走廊拍摄图片。 烟雾或火灾传感器可能将报告下面有人手持打火机。 任一情况下,设备可能会在技术上对系统是可信的,但是它报告的信息却有可能受到操控。
篡改:攻击者可能会使用提取的加密密钥来截获和抑制从设备发送的数据,并将其替换为通过被盗密钥进行了身份验证的虚假数据。
信息泄露:如果设备正在运行受操控的软件,此类受操控的软件可能会数据泄漏给未经授权方。
信息泄露:攻击者可能会使用提取的加密密钥将代码注入设备和现场网关或云网关之间的通信路径,从而窃取信息。
拒绝服务:可将设备关闭或改为无法通信的模式(许多工业机械刻意设计了此功能)。
篡改:可将设备重新配置为在未知状态下运行,以控制系统(在已知校正参数的范围以外),并因此提供可误导的数据
权限提升:执行特定功能的设备可能将被强制执行其他操作。 例如,编程为半开的阀门可能将受骗而完全打开。
欺骗/篡改/否认性:如果未受保护(在使用者进行远程控制时很少出现这种情况),攻击者可以匿名方式操控设备的状态。 可以关掉任何电视的遥控器就是一个很好的例子。
下表显示了这些威胁的示例缓解措施。 威胁列中的值为缩写:
- 欺骗 (S)
- 篡改 (T)
- 否认 (R)
- 信息泄露 (I)
- 拒绝服务 (D)
- 特权提升 (E)
组件 | 威胁 | 缓解措施 | 风险 | 实现 |
---|---|---|---|---|
设备 | S | 将标识分配给设备并对设备进行身份验证 | 用其他设备替换设备或部分设备。 如何确定是否在与正确的设备通信? | 使用传输层安全性 (TLS) 或 IPSec 来验证设备。 如果设备无法处理完全非对称加密,则基础结构应该支持在这些设备上使用预共享密钥 (PSK)。 使用 Microsoft Entra ID、OAuth。 |
TRID | 对设备应用防篡改机制,例如,确保不能从设备中提取密钥和其他加密材料。 | 但风险是我们不知道设备是不是已受到篡改(物理干扰)。 如何确定没有人篡改过设备? | 最有效的缓解措施是受信任的平台模块 (TPM)。 TPM 可存储密钥,但不允许读取密钥。 但是,TPM 本身可以使用密钥执行加密操作。 设备的内存加密。 设备的密钥管理。 为代码签名。 | |
E | 针对设备使用访问控制。 授权方案。 | 如果设备可以根据外部源甚至遭入侵的传感器的命令来执行各项操作,则意味着攻击可以凭此执行操作,而不仅是访问内容。 | 具有设备的授权方案。 | |
现场网关 | S | 现场网关到云网关的验证(例如证书式、PSK 或基于声明)。 | 如果某人可以欺骗现场网关,则就可以伪装成任何设备。 | TLS RSA/PSK、IPSec、RFC 4279。 同样地,一般的设备密钥存储和证明考虑因素都高度建议使用 TPM。 IPSec 的 6LowPAN 扩展可支持无线传感器网络 (WSN)。 |
TRID | 保护现场网关免遭篡改 (TPM) | 欺骗云网关认为它正在与现场网关通信的欺骗攻击可能会导致信息泄露和数据篡改 | 内存加密、TPM、身份验证。 | |
E | 针对现场网关使用访问控制机制 |
通信
下面是一些通信类威胁示例。 威胁根据 STRIDE 模型进行分类:
拒绝服务:受约束的设备通常在主动侦听入站连接或网络上未经请求的数据报时受到 DoS 威胁。 攻击者可以并行打开许多连接,要么不为它们提供服务,要么缓慢地提供服务,要么用未经请求的流量淹没设备。 在这两种情况下,网络可能会将设备解释为无法正常工作。
欺骗、信息泄漏:受限设备和特殊用途设备通常具有一次性安全设施,例如密码或 PIN 保护。 有时,它们完全依赖于信任网络,并授予同一网络上任何设备访问信息的权限。 如果网络受共享密钥保护,而共享密钥被泄露,攻击者就可以控制设备或观察它传输的数据。
欺骗:攻击者可能会拦截或部分替代广播,并欺骗发起方。
篡改:攻击者可能会拦截或部分替代广播,并发送虚假信息。
信息泄露:攻击者可能会在未经授权的情况下窃听广播并获取信息。
拒绝服务:攻击者可能会干扰广播信号并拒绝信息分发。
下表显示了这些威胁的示例缓解措施:
组件 | 威胁 | 缓解措施 | 风险 | 实现 |
---|---|---|---|---|
设备 IoT 中心 | TID | 用于加密流量的 (D)TLS (PSK/RSA) | 窃听或干扰设备与网关之间的通信 | 协议级别的安全性。 使用自定义协议时,需要了解如何对其进行保护。 在大多数情况下,通信主要是发生在设备到 IoT 中心这一段位置(由设备发起连接)。 |
设备到设备 | TID | 用于加密流量的 (D)TLS (PSK/RSA)。 | 读取设备之间正在传输的数据。 篡改数据。 使用新连接使设备过载 | 协议级别的安全性 (MQTT/AMQP/HTTP/CoAP)。 使用自定义协议时,需要了解如何对其进行保护。 DoS 威胁的缓解措施是通过云网关或现场网关将设备设为对等,使其仅可充当网络客户端。 网关代理对等互连后,对等方之间可以有直接连接。 |
外部实体设备 | TID | 外部实体与设备的强式配对 | 窃听设备的连接。 干扰设备的通信 | 使用 NFC/蓝牙 LE 安全配对外部实体与设备。 控制物理设备的操作面板。 |
现场网关 云网关 | TID | 用于加密流量的 TLS (PSK/RSA)。 | 窃听或干扰设备与网关之间的通信 | 协议级别的安全性 (MQTT/AMQP/HTTP/CoAP)。 使用自定义协议时,需要了解如何对其进行保护。 |
设备 云网关 | TID | 用于加密流量的 TLS (PSK/RSA)。 | 窃听或干扰设备与网关之间的通信 | 协议级别的安全性 (MQTT/AMQP/HTTP/CoAP)。 使用自定义协议时,需要了解如何对其进行保护。 |
存储
下表显示了存储威胁的示例缓解措施:
组件 | 威胁 | 缓解措施 | 风险 | 实现 |
---|---|---|---|---|
设备存储 | TRID | 存储加密、为日志签名 | 读取存储中的数据、篡改遥测数据。 篡改排队或缓存的命令控制数据。 在本地缓存或排队时篡改配置或固件更新包可能导致 OS 和/或系统组件遭到入侵 | 加密、消息身份验证代码 (MAC) 或数字签名。 尽可能通过资源的访问控制列表 (ACL) 或权限进行强式访问控制。 |
设备 OS 映像 | TRID | 篡改 OS/替换 OS 组件 | 只读 OS 分区、签名的 OS 映像、加密 | |
现场网关存储(将数据排队) | TRID | 存储加密、为日志签名 | 读取存储中的数据、篡改遥测数据、篡改排队或缓存的命令控制数据。 在本地缓存或排队时篡改配置或固件更新包(发往设备或现场网关)可能导致 OS 和/或系统组件遭到入侵 | BitLocker |
现场网关 OS 映像 | TRID | 篡改 OS/替换 OS 组件 | 只读 OS 分区、签名的 OS 映像、加密 |
后续步骤
若要了解有关 IoT 安全性的详细信息,请参阅: