写点什么

【我的物联网成长记 9】物联网平台安全如何破?

  • 2019-12-24
  • 本文字数:3918 字

    阅读完需:约 13 分钟

【我的物联网成长记9】物联网平台安全如何破?

【摘要】 很多朋友都很关心华为物联网云平台的安全能力,今天它来了。安全的设备接入,稳定放心;安全的数据传输,可靠不怕泄露;安全的数据处理,保护用户隐私。今天我们就将围绕端、管、云和应用的安全能力为大家进行详细介绍。


物联网的核心是建立一个万物感知、万物互联、万物智能的网络,驱使全球各行各业向数字化和智能化转型。正如硬币有正反两面,物联网在驱动全行业数字化的同时,也带来了物联网技术应用的安全风险,据 Gartner 分析预测,到 2020 年,企业发现的攻击中超过 25%涉及物联网。


://bbs.huaweicloud.com/static/ueditor/themes/default/images/spacer.gif


1573526172297834.png


(注:引自 Gartner 2017 年 IoT 分析报告,https://www.gartner.com/imagesrv/books/iot/iotEbook_digital.pdf)


随着物联网业务越来越多的进入落地运营阶段,客户也明显认识到物联网安全的重要性,全球各行业在物联网安全的支出也越来越高。由于不同的商业应用面临的安全威胁差异巨大,物联网安全也从单一的产品安全,逐步走向端到端解决方案,并从端到端解决方案安全提升到整个架构的安全。通过不断演进的安全架构,来满足未来更多新的商业场景,如智慧农业、智慧城市、智慧交通等。因此,华为凭借在互联网、运营商网络多年的安全技术和经验积累,围绕端、管、云和应用构筑领先的物联网安全解决方案防护体系架构。今天我们就将为大家详细讲述其中的几种安全方案。


1573526211751765.png

-----------一机一密设备安全接入-----------

一机一密安全接入方案适用于 MQTT 设备的接入鉴权。所谓一机一密,即物联网平台会为每一个 MQTT 设备分配唯一的密钥信息,设备在烧录时,将该密钥信息提前烧录到设备中。当设备与物联网平台进行连接时,物联网平台对设备接入时携带的密钥信息进行认证,认证通过后,设备与物联网平台之间才能建立连接和传输数据。


1573526246201244.png


  1. 用户通过应用在物联网平台上注册设备,将设备的 nodeId(设备的唯一标识,一般为 IMEI 或 MAC 地址)信息注册到平台中。

  2. 物联网平台收到注册信息后,将生成全局唯一的 deviceId 和 secret 信息,并在平台进行加密存储。

  3. 物联网平台向设备返回注册响应,携带 deviceId 和 secret 信息,用于后续设备的接入鉴权。

  4. 用户进行设备的烧录,将 deviceId 和 secret 信息烧录到设备中。

  5. 设备(MQTT 客户端)向物联网平台(MQTT 服务端)发起建链请求,携带 deviceId 和 secret 信息。

  6. 物联网平台将设备携带的 deviceId 和 secret 信息与平台存储的信息进行鉴权认证,鉴权通过后,允许设备与物联网平台之间建立 MQTT 连接。

  7. 设备与物联网平台之间通过建立的 MQTT 连接进行数据传输。

-----------DTLS+数据安全传输-----------

DTLS+加密方案,适用于建立 NB-IoT 设备的安全传输通道。在与物联网平台之间进行消息交互时,会在设备与平台之间建立 DTLS+(Datagram Transport Layer Security,数据报传输层安全性协议)通道,对设备与物联网平台之间的数据传输通道进行加密。相比传统的 DTLS 协议,DTLS+在会话协商等方面做了优化,减少了终端与物联网平台通信过程中的握手次数,从而延长终端电池的使用寿命。下面我们就来看看 NB-IoT 设备详细的接入过程。


1573526282584691.png


  1. 设备厂商批量烧录 PSK 到设备中,用于设备接入时的 DTLS 建链。

  2. 用户通过应用在物联网平台上注册设备,将设备的 nodeId(设备的唯一标识,一般为 IMEI 或 MAC 地址)和 PSK 信息注册到平台中。当然,用户也可以选择先在物联网平台上注册完设备后,再将注册的 PSK 烧录到设备中。

  3. 物联网平台将应用注册的设备信息在平台上进行加密存储,用于后续 DTLS 建链和设备的接入鉴权。

  4. 注册完成后,物联网平台会向设备返回注册响应消息。

  5. 设备接入物联网平台,发起 DTLS 建链请求,请求消息中携带 nodeId 和 PSK。其中,PSK 用于与平台存储的 PSK 进行校验,校验通过后,保留会话信息(源/目的 IP 地址、源/目的端口号、协议类型),建立 DTLS 链接成功。DTLS+是在 DTLS 的基础上,引入 Resume_ID,在后续的交互过程中,通过 Resume_ID 即可建立 DTLS 链路,而不需要重新协商,可以大大减少协商过程中的消息交互次数,达到设备省电的目的。nodeId 用于设备的身份认证,只有设备携带的 nodeId 与平台存储的一致,才允许设备的接入。

  6. 通过 DTLS 链路,设备上报数据和应用下发命令的传输通道,均为加密通道,从而保障了设备与平台、应用交互的过程中,数据不会被非法窃取。

-----------X.509 数字证书安全认证-----------

数字证书是由 CA(Certificate Authority)机构发行的一种电子文档,是一串能够表明网络用户身份信息的数字,提供了一种在计算机网络上验证网络用户身份的方式。数字证书可以校验对方身份的合法性,还可以协商数据加密密钥,对交换的数据进行加密,同时还可以通过数字摘要校验数据的完整性。在物联网平台中,数字证书校验用户身份主要用于以下场景:


  • MQTT 设备接入:MQTT 设备接入时,采用加密的 MQTTS 协议,设备侧需要校验物联网平台的合法性,同时协商数据传输的加密密钥。

  • 应用调用 API 接口:应用调用物联网平台的 API 接口时,采用加密的 HTTPS 协议,应用需要校验物联网平台的合法性,同时协商数据传输的加密密钥。

  • 设备数据推送:物联网平台向应用推送订阅的设备数据时,采用加密的 HTTPS 协议,物联网平台需要校验应用的合法性,同时协商数据传输的加密密钥。


首先我们来看下网络用户身份真实性的校验过程:


://bbs.huaweicloud.com/static/ueditor/themes/default/images/spacer.gif


1573526293361073.png


  1. Client A 预置 CA 机构颁发的 CA 根证书(包含了 CA 公钥),然后向 Server B 发起建链请求,以明文的方式发送随机数 RandomC、SSL 版本、支持的加密算法等信息。

  2. Server B 向 Client A 以明文的方式返回服务器证书、随机数 RandomS 和协商后的加密算法。服务器证书是用 CA 机构的 CA 私钥进行加密的,包含了服务器的公钥信息。

  3. Client A 获取到 Server B 返回的服务器证书后,验证证书的合法性。Client A 用 CA 根证书对服务器证书进行解密,获得证书的有效期、公钥、摘要(Hash 值 X)等信息,Client A 通过 Hash 算法计算证书内容,得到 Hash 值 Y,然后比较 Hash X 和 Hash Y 的一致性,如果一致,则验证了 Server B 的真实性。证书校验完成后,Client A 会生成随机数 PreMaster Key,然后根据获取的三个随机数(RandomC、RandomS 和 PreMaster Key)和协商后的加密算法生成一个会话密钥,该会话密钥用于后续的数据加密。

  4. 注:可能有人会问,为什么还需要一个额外的随机数来生成会话密钥。因为客户端与服务端在交换 RandomC 和 RandomS 的过程中,都是明文的方式在进行通信,很有可能被不法分子窃取。因此通过这两个随机数计算出的会话密钥是不安全的,所以引入了第三个随机数 PreMaster Key,该随机数在传递过程中,都是密文形式,即使被窃取,没有私钥也是解密不了的。然后在通过这三个随机数生成一个会话密钥,安全性就大大增加,破解的难度就更高了。

  5. Client A 用从 Server B 获得的公钥,对 PreMaster Key 进行加密,并以密文的形式发送给 Server B。

  6. Server B 获取到使用自己公钥加密后的密文后,使用自己的私钥对密文进行解密,得到随机数 PreMaster Key,然后根据获取的三个随机数(RandomC、RandomS 和 PreMaster Key)和协商后的加密算法生成一个会话密钥。

  7. Server B 会将握手消息通过 Hash 算法得到一个 Hash 值,然后使用计算生成的会话密钥进行加密,以密文的形式发送给 Client A。

  8. Client A 通过生成的会话密钥,对密文进行解密并计算握手消息的 Hash 值,计算的 Hash 值与解密获得的 Hash 值一致,表明密文是没有被修改过的。至此,Client A 和 Server B 的 SSL 握手结束。

  9. 后续 Client A 与 Server B 的通信,均通过会话密钥进行加密后进行传输,从而保障了传输过程中的数据安全。

-----------平台数据隐私保护处理-----------

华为物联网平台依据如下图的个人数据处理基本原则进行用户数据、设备数据的采集、存储、处理和销毁,满足 GDPR(General Data Protection Regulation)法规对个人数据处理的要求。


1573526307593324.png


(1)数据主体的“知情权”


通过华为云隐私政策提供隐私声明,包括详细的个人数据清单、系统收集用的所有个人数据,手机的目的和缺省存留期,帮助数据控制者了解平台个人数据的使用情况。


(2)数据主体的“更正权”


用户可以通过管理控制台或者 API 接口更新设备信息,例如更新设备的厂商信息、厂商名称等,以及新增、更新设备的产品模型信息。


(3)数据主体的“可删除、被遗忘权”


华为物联网平台提供个人数据的删除机制:


  • 对于设备静态数据,如设备注册信息,控制台和 API 接口均提供删除设备的接口。

  • 对于设备动态数据,如设备上报的数据,会根据用户设置的存留期进行处理,超过存留期则永久性删除。


(4)提供适当的安全保护措施


  • 个人数据的访问控制机制,租户之间相互隔离,只有授权的帐号才能访问个人、设备的数据,文件的管理权限采用最小权限原则设置。

  • 敏感数据的加密存储,对于个人、设备的敏感数据,如密钥、GPS 位置信息等敏感数据进行加密存储。

  • 个人数据匿名化处理,物联网平台支持用户导出个人数据,在导出数据时,对于个人敏感数据,如帐号、IMEI、GPS 位置信息等数据进行匿名化处理。

  • 提供 Web 安全防护机制,如防 XSS 攻击,防 SQL 注入攻击,防 CSRF 攻击等,防止通过上述攻击引起的数据泄露或篡改。

  • 提供基本的组网隔离措施,关键的数据库部署在独立的虚拟机,不同子网之间通过访问控制策略限制,从组网上提升整个系统安全性。


后记


物联网平台的安全能力构筑是一个端到端的系统工程,华为正在围绕端、管、云和应用,不断构筑和提升端到端的安全架构和能力,如 DICE 安全设备接入、HIDS 主机安全、异常设备检测/隔离等安全能力。后续也会逐步上线相关的物联网安全服务,敬请关注华为云物联网平台官网首页或华为 IoT 云服务微信公众号。


本文转载自华为云社区博客。


原文链接:https://bbs.huaweicloud.com/blogs/133781


2019-12-24 14:071010

评论

发布
暂无评论
发现更多内容

IoT 的概念、发展趋势与挑战

liuzhen007

11月日更

前端开发:数据处理方法分享(其一)

三掌柜

11月日更

IntelliJ IDEA 如何针对 Java 项目创建 H2 数据库连接

HoneyMoose

Junit 4 的 @Before 和 @BeforeClass 对比 Junit 5 @BeforeEach 和 @BeforeAll

HoneyMoose

云原生社区上线了

云原生

开源 云原生 技术社区 社区

dart系列之:在dart中使用数字和字符串

程序那些事

flutter dart 程序那些事 11月日更

关于HTTPS认证,这里解决你所有疑惑

华为云开发者联盟

https 证书 数据加密 认证 签发证书

美东某 IoT 公司技术流程第一轮沟通就挂了

HoneyMoose

填坑总结:python内存泄漏排查小技巧

华为云开发者联盟

Python 内存 内存泄漏 回收 全局变量

OpenHarmony驱动框架解读和开发实践|HDC2021 技术分论坛

HarmonyOS开发者

HarmonyOS

吐司盒子?芝士码?HarmonyOS创新音视频测试技术来啦|HDC2021技术分论坛

HarmonyOS开发者

HarmonyOS

又添权威认定,旺链科技通过可信区块链专项认证!

旺链科技

区块链 产业区块链 技术测评 数字化经济

有幸和美团大佬共同探讨单节点连接数超1.5W的问题

中间件兴趣圈

架构 微服务 11月日更

Hibernate H2 数据库连接配置 URL 解读

HoneyMoose

SAP Cloud for Customer Extensibility的设计与实现

汪子熙

SAP abap C4C 11月日更

奖金翻倍!Flink Forward Asia Hackathon 最新参赛指南请查收

Apache Flink

大数据 flink 编程 后端 hackathon

创建第一个微信小程序

坚果

微信小程序 11月日更

筹备两年,60万字诚意续作《腾讯游戏开发精粹Ⅱ》正式发布

博文视点Broadview

“愚公移山”的方法解atoi,自以为巧妙!

老表

Python LeetCode 11月日更 算法与数据结构

分析一个错误使用MemoryCache导致的BUG

喵叔

11月日更

Android C++系列:Linux进程(三)

轻口味

c++ android jni 11月日更

如何让 Sublime Text 编辑器支持新的 ABAP 关键字

汪子熙

SAP abap 11月日更 Sublime

在线数值列表求和工具

入门小站

工具

一次谈不上有点内卷的美东某金融公司面试

HoneyMoose

MySQL Workbench 使用教程 - 如何使用 Workbench 操作 MySQL / MariaDB 数据库中文指南

蒋川

MySQL MariaDB MySQL 数据库

Chrome 插件特性及实战场景案例分析

vivo互联网技术

大前端 插件设计 chrome扩展

数仓如何限制临时数据文件下盘量

华为云开发者联盟

sql 线程 GaussDB(DWS) 临时文件 落盘

🏆【Alibaba中间件技术系列】「RocketMQ技术专题」让我们一起探索一下DefaultMQPushConsumer的实现原理及源码分析

洛神灬殇

RocketMQ 11月日更 Apache RocketMQ DefaultMQPushConsumer

linux下prometheus+grafana安装

小鲍侃java

11月日更

「Oracle」Oracle 数据库安装

恒生LIGHT云社区

数据库 oracle

搞定大厂算法面试之leetcode精讲4.贪心

全栈潇晨

LeetCode 算法面试

【我的物联网成长记9】物联网平台安全如何破?_语言 & 开发_我是卤蛋_InfoQ精选文章