Practical Internet of Thing Security Notes
概述
本文是阅读 Brian Russell 和 Drew Van Duren 合著的《物联网安全》的笔记。该书从物联网带来的改变开始,引出物联网中存在的漏洞、面临的攻击以及可采取的对策,详细阐述物联网安全工程、密码学基础、身份识别与访问控制、隐私管理、合规监控、云安全以及物联网安全事件响应等诸多方面的内容。
危险的新世界
(什么是 IOT?)
一个信息社会的全球性基础设施,基于已有的和演化的、可互操作的信息与通信技术,利用(物理和虚拟)设备互联来提供先进的服务。—— ITU
一个物联网是指这样一种网络,它将唯一标识的“实物”连接到互联网上。这里的实物具有感知/驱动能力,以及潜在的可编程能力。通过对唯一身份标识和感知能力进行开发,
任意实体可以从任意时刻从任何位置收集“实物”相关信息,以及改变‘实物’的状态。 —— IETF
(什么是物联网安全?)
物联网安全不是传统意义上的网络安全,而是网络安全与其他工程规范融合的产物。…… 网络安全一般不关注硬件设备的物理和安全方面,或者是设备与物理世界的交互方面的内容。
物理网安全的安全需求不再仅仅局限于包括可信性、完整性、不可否认性等内容的基本信息保障原则,还包括与在物理世界中生成并接收信息的物理资源和机器相关的原则。
跨行业合作的必要性 (信息安全工程 + 行业核心工程规范)
信息安全是一个生态系统
物理安全:系统必须不对世界造成伤害。
信息安全:世界必须不对系统造成伤害。
物联网中的实体
ITU-T Y.2060 中的定义:
- 设备:一个具有必需的通信能力和可选的感知、运动、数据收集、数据存储和数据处理能力的装置。
- 实体:一个物理世界(物理实体)或虚拟世界(虚拟实体)中能够被识别或者被整合到通信网络中的对象。
设备的生命周期:设备的实现(OEM、ODM、BSP), 服务的实现(CSP、OEM),设备和服务的部署。
硬件:MCU、主板、传感器、通信模组
操作系统:RTOS,TinyOS、Mantis、FreeRTOS、BrilloOS、嵌入式Linux、Ubuntu Core等。
物联网通信:设备->网关->控制器或网络服务
通信协议
应用层:REST、AMQP、MQTT、LLAP、CoAP、SSI、DDS、XMPP 和 MQTT-SN、XMPP-IoT
传输层:TCP、UDP 和 TLS\DTLS
网络层:IPv4、IPv6 和 6LoWPAN
链路/物理层:Zigbee、Bluetooth/LE、802.15.4、802.11 WIFI、WAVE、WBAN、LTE、CDMA、GRPS、LoaWAN
漏洞、攻击和对策
信息保障的传统核心概念:保密性、完整性、认证性、不可抵赖性、可用性。
与物联网的信息物理方面相关的安全保障需求:可快速恢复性和物理安全性。
威胁、漏洞和风险
风险可以通过威胁模型进行管理。
攻击与对策
物联网相关的最重要的攻击类型:
有线/无线扫描映射攻击、协议攻击、窃听攻击、密码算法和密钥管理攻击、伪装攻击、操作系统与应用完整性攻击、拒绝服务与干扰、物理安全攻击(如改装、接口薄露等)、访问控制攻击。
攻击树
攻击树是一种概念图,可以用来展示一项资产或者目标可能被攻击的方式。
SecurITree 软件 基于能力的攻击树模型构建工具。
攻击目标 + 攻击操作(攻击操作之间的关系可以是‘与’关系,也可以是‘或’关系)。操作也是一个节点,也可以进行展开。
总的来说,攻击树可能有非常简单或者复杂的子树。一般地,子树越复杂,越需要在隔离主树的情况下对其进行分析,这个过程称为‘子树分析’。
错误树
物理安全和可靠性工程原则的模型构建工具被称为错误树(也被称为故障树),它被用于错误树分析(FTA)中。
错误树和攻击树的区别(用户如何进入并遍历树):
- 错误树并不是基于精心编排的攻击行为来构建的,在错误树中,一个智能实体经过慎重考虑可以随意进入树的多个叶子节点。
- 错误树可以基于随机过程(故障/错误发生比率),从每个叶子节点经过所依赖的中间节点进行遍历。
- 错误树的每个叶子节点完全独立(错误随机发生,且彼此相互独立)于树的所有其他叶子节点。
威胁建模
构建威胁模型为人们提供了一个系统的方法,来对一个系统或者系统设计进行安全评估。
构建威胁模型有助于加深对一个系统中的人员、入口点和资产的透彻理解。
流程:
- 识别资产
- 创建对系统/架构的纵览
- 剖析物联网系统
- 识别威胁
- 记录威胁
- 对威胁进行评级
STRIDE 模型:
威胁类型:身份欺骗、篡改数据、否认抵赖、信息泄漏、拒绝服务、权限提升、物理安全绕过、社会工程和供应链问题。
威胁矩阵
物联网开发中的安全工程
在设计和开发中融入安全。
微软 SDL:致力于解决安全需求并且引入了‘需求分类’这一概念,以此减轻开发团队在每个迭代周期内的负担。微软的技术提出了‘一次性、每次迭代、筒状安全需求’的概念。
一次性需求:
- 建立在整个开发中必须遵守的编码指南。
- 为第三方组件和库建立许可软件列表。
每次迭代:
- 为了发现错误,在并入基线前对代码进行用行评审。
- 确保在持续集成(CI)环境中通过静态代码分析工具运行代码。
安全设计
物联网身份识别和访问管理解决方案
IAM