最近研究了一些物联网平台技术资料,以做选型参考。脑子里积累大量信息,便想写出来做一些普及。作为科普文章,力争通俗易懂,不确保概念严谨性。我会给考据癖者提供相关英文链接,以便深入研究。
—— 冯立超 HiwebFrank
5. 安 全
我想用遥控器把隔壁邻居家的电视给关了!
不知是否可以,但至少,我拿着一个空调遥控器可以到各个房间开关空调。
如果物联网设备没有任何安全措施,那么状况将无法设想。
如何做到全方位安全?
微软早在2003年就提出了可信赖的计算 Trustworthy Computing 和基于 STRIDE 网络安全风险模型的纵深防御 Defence in Depth 理念。
这些理念并不是针对微软产品及其解决方案的,而是被业界充分认可的通用的理念。
我们将根据这些理念与模型,为大家展开讨论物联网安全。
微软基于上述网络安全模型与理念,给出了通用的 物联网安全构架 和 物联网安全最佳实践。具体信息请参见:
- 物联网安全架构
- 物联网安全最佳实践
在上述资料中,微软对物联网的物理安全层面进行了细分,将其分为 设备、现场网关(Field Gateway)、云网关 及 服务等多个分区Zone。指出各区域都是分离的信任边界,每个分区都应有自己的数据安全、验证、授权机制。
在这些分区之间数据与信息的传输都应考虑 STRIDE 各种风险,即:
- Spoofing 欺骗
- Tampering 篡改
- Repudiation 抵赖
- Information disclosure 信息泄露
- Denial of service 拒绝服务
- Elevation of privilege 特权提升
微软给出的物联网安全构架示意图如下所示:图中红色虚线框为不同的分区Zone,红色虚弧线则为信任边界。
下图是用微软威胁建模工具所建立的数据流原理模型:
关于上述模型的详细信息,原文在 Internet of Things security architecture,中文可以参见 物联网安全体系结构,这篇文档好像是人翻译的:),中文可读。(谢谢Sunny Deng和v-cchen)
微软 Azure IoT Suite 物联网安全
具体到微软自己的 Azure IoT Suite 物联网部署构架,则主要包括如下三个安全领域:
- 设备安全:在实际部署物联网设备时,保护设备安全
- 连接安全:确保物联网设备和 Azure IoT Hub 之间数据传输的机密性和防篡改性
- 云安全:确保数据在云中传输、移动和存储时的安全
下图给出微软 Azure IoT 物联网安全相关概念:
- 设备预配与验证安全
微软 Azure IoT Suite 使用两种方法确保设备安全:
- 为每个设备提供唯一标识密钥(安全令牌),设备可使用该密钥与 IoT Hub 通信。
- 使用设备内置 X.509 证书和私钥作为一种向 IoT Hub 验证设备的方式。 此身份验证方式可确保任何时候都无法在设备外部获知设备上的私钥,从而提供更高级别的安全性。
- IoT Hub 安全令牌
IoT Hub 使用安全令牌对设备和服务进行身份验证,而不在网络上发送密钥。,安全令牌的有效期和范围有限。 Azure IoT SDK 无需任何特殊配置即可自动生成令牌。 但在某些情况下,需要用户生成并直接使用安全令牌。 包括 MQTT 、AMQP 或 HTTP 应用层协议的直接使用,以及令牌服务模式的实现。
- 连接安全
使用传输层安全性 (TLS) 标准来保护 IoT 设备和 IoT 中心之间的 Internet 连接安全。 Azure IoT 支持 TLS 1.2、TLS 1.1 和 TLS 1.0
- 云安全
Azure IoT Hub 为每个安全密钥定义访问控制策略。 它使用设备注册表读写、服务连接、设备连接等权限,向每个 IoT Hub 的终结点授予访问权限。
另外,在云端的各种服务中,如 Azure DocumentDB、Azure Stream Analytics、Azure App Service、Logic App、Azure Blob Storage等服务,都应设置响应的安全权限配置。
亚马逊 AWS 物联网安全
亚马逊同样有一套完善的物联网安全方案。
所连接的每台设备必须拥有凭证才能访问消息代理或物联网设备影子服务。对于往返 AWS 物联网的所有流量,都必须通过传输层安全性 (TLS) 进行加密。必须保证设备凭证的安全,以便安全地将数据发送到消息代理。数据到达消息代理后在 AWS IoT 和其他设备或 AWS 服务之间移动时,AWS 云安全机制可为数据提供保护。
下图是亚马逊物联网安全与标识示意图:
- 我们需要管理设备上的设备凭证(X.509 凭证、AWS 凭证)及 AWS IoT 中的策略。将唯一身份分配给每台设备并管理设备或设备组的权限。
- 设备将按照 AWS IoT 连接模式使用所选身份(X.509 证书、IAM 用户和组,或者 Amazon Cognito 身份)来建立安全连接。
- AWS IoT 消息代理 针对账户内的所有操作执行身份验证和授权。消息代理负责对设备执行身份验证、安全地接收设备数据,以及支持通过策略授予设备的访问权限。
- AWS IoT 规则引擎 根据所定义的规则将设备数据转发到其他设备和其他 AWS 服务。利用 AWS 访问管理系统将数据安全地传输到最终目标。
AWS IoT 消息代理和设备影子服务利用传输层安全 TLS 对所有通信进行加密。TLS 用于确保受 AWS IoT 支持的应用程序协议(MQTT、HTTP)的保密性。
对于 MQTT,TLS 可将设备与代理之间的连接加密。AWS IoT 使用 TLS 客户端身份验证来识别设备。对于 HTTP,TLS 可将设备与代理之间的连接加密。身份验证工作委派给 AWS Signature Ver. 4 执行。
IBM Watson IoT 物联网安全
同样,IBM Watson IoT 物联网解决方案也包含完备的安全方案。
在 IBM Watson IoT Platform Security 一文中, 首先强调了安全性的合规性、验证、授权、加密四各方面,并指出 Watson IoT Platform 以 Bluemix 为基础,而 Bluemix 基础构架的安全性与可靠性是 Watson IoT Platform 的基石。
然后,IBM 像个学生一样老老实实认认真真地道出他的安全方案。
首先,掏出证书。指出 Watson IoT Platform 获得了 ISO 27001:2013 认证。
然后,在 Watson IoT Platform 构架图的基础上,分别讲述了如下几个方面:
- 如何实现物联网信息管理安全
- 如何实现设备与应用程序凭据安全
- 如何实现设备连接安全
- 如何防止设备数据在设备之间泄露
- 如何防止数据在组织之间泄露
上面每一方面,都有较详细的描述和示意图,此不一一列出,仅以下图设备与应用程序凭据安全为例供大家参考:
另外,IBM 给出了安全风险管理建议,包括客户端证书、组织规划与安全策略、连接策略、黑白名单策略等。
总之,物联网安全是一个重要的、同时也是复杂的问题。不仅仅包括物联网特定的设备与构架,还牵涉到网络安全及软件开发安全的各个方面。需要在构架设计、开发、部署、运维、应用的各个方面确保安全与合规。