【IOT专栏】终端上链的数据,真的安全可信吗?


前言

在《只知道IOT你就out了,BOT了解一下》中,我们详细介绍了物联网区块链(BoT)在多方参与的物联网生态中所发挥的作用与价值,其不仅可以在上游厂商与下游企业间促进多方价值协作,让多个参与方间的合作变得公平和透明,同时还可以打通“数据第一公里”,从源头采集数据并将其上链,能够有效规避因人为介入而带来的不可信问题。

但是,从终端上链的数据真的是可信的吗?它是否还存在其他潜在的安全风险呢?这些风险又该如何化解呢?本文将带大家走进BoT的世界,详细剖析BoT的工作原理


“我是谁”——设备的身份


众所周知,区块链之所以具有可追溯和可确权的特性,是因为其每一笔交易均由对应的私钥进行签名,且其发送的区块链地址与私钥间具备一定的联系,当一笔交易被一个私钥所签名,此时即可认为该笔交易所发送的内容已经被该私钥的持有者所认可。因此,在BoT中,若需要保证物联网终端设备上报数据的安全可信,则需要保证一个设备对应一个区块链地址和密钥,且应当保证密钥的唯一性和安全性

然而,若将密钥直接固化在程序代码中,则容易被攻击者从flash中反汇编得到;若将密钥以密文的方式直接固化在外部flash中,虽然可以规避前一种情况的发生,但密钥烧录的过程却存在一定的安全风险,且不利于设备的流水线生产。因此,我们提供两种集成方式来改造物联网设备,使物联网设备具备区块链签名能力,对应的我们提供两种模式保障设备密钥分发过程的安全,使物联网设备在兼顾设备生产效率的同时,其唯一身份不可被盗用和篡改。


硬件集成:区块链安全芯片 + 激活密钥模式


区块链安全芯片是一款应用于BoT场景,可以为安防设备智慧表计数据采集装置等各种嵌入式终端提供区块链账户托管、消息签名、数据加解密、安全存储等基础服务的硬件芯片。其内嵌可信存储环境和可信执行环境,可保证存储密钥无法被窃取,签名过程无法被篡改,安全性较高。由于安全芯片的内置区块链私钥在本地生成,且BoT具有链级原生设备管理功能,因此,在设备初次使用时,需要进行设备激活,激活成功后,设备即可在其权限范围使用相关功能,具体激活流程如下。


  • 1)授权生产工厂在芯片出厂时,会导出由该授权工厂CA签发的公钥证书列表,该列表及对应的批次统一密钥由账户管理员在BoT链进行预登记。同时,区块链安全芯片将被发往设备厂商,安装至设备内;
  • 2)设备首次开机进行激活时,首先读取本机的硬件唯一号、批次号、公钥以及批次统一密钥,其次将公钥、硬件唯一号、批次号用批次统一密钥加密,再次将批次号、加密信息组成注册交易送入可信执行环境中进行签名;
  • 3)将带签名的注册交易发送至BoT链;
  • 4)BoT链首先根据批次号获得批次密钥,然后将加密信息进行解密,验证批次号是相同、同时用公钥对签名信息进行验签,若合法,则根据硬件唯一号生成区块链账户,对该账户开启生命周期管理,赋予该账户相关权限,激活成功。若不合法,则跳过上述步骤,激活失败。


软件集成:区块链SDK + 下发密钥模式

软件集成方式是一种通过在设备内集成与BoT兼容的区块链软件开发工具包(Software Development Kit, SDK),使设备具有与区块链交互能力的设备改造方式,该方式具有易于操作集成成本低开发速度快等特点。该方式与硬件集成方式相比,虽然安全性有所降低,但其配合BoT安全策略,可满足对安全等级要求不高的物联网设备和场景使用。由于不同设备需要具有不同的区块链密钥,考虑到设备生产、密钥安全等因素,设备密钥采用下发的方式进行,故设备在初次使用时,需要进行设备激活,获取设备密钥,激活成功后,设备即可在其权限范围使用相关功能,具体激活流程如下。


  • 1)授权设备厂商在生产设备时,会导出由该厂商签名的授权设备硬件唯一号列表,并在设备内内置批次统一密钥。该硬件唯一号列表及对应的批次统一密钥由账户管理员进行预登记;
  • 2)设备首次开机进行激活时,首先读取本机的硬件唯一号、批次号以及批次统一密钥,其次将硬件唯一号、批次号用批次统一密钥加密,再次将批次号、加密信息组成注册交易进行交易签名;
  • 3)将带签名的注册交易发送至BoT链;
  • 4)BoT链首先根据批次号获得批次密钥,然后将加密信息进行解密,验证批次号和硬件唯一号是否处于激活列表内,若验证通过,则生成公私钥对,并根据硬件唯一号生成区块链账户,对该账户开启生命周期管理,赋予该账户相关权限,同时将公私钥对通过加密信道返回至设备进行安全存储,激活成功。若验证失败,则跳过上述步骤,激活失败。


“如何连”——端链的交互


连,指的是终端设备与区块链的交互。由于区块链节点部署在公网或内网环境中,终端设备必须通过发送网络请求,才能实现将本地数据上报至区块链侧。此外,由于在物联网场景中,需要做到对终端设备可管可配可控,因此,在不引入第三方管理平台的前提下,从区块链侧下发命令至设备,实现对设备的管理也是基本需求

而正是这一来一回的通信过程,却危机四伏。目前,针对网络通信过程的攻击方式有多种,例如,通过会话劫持手段,可以拦截终端设备与区块链节点间正常的网络通信数据,篡改设备上报数据信息以及下行控制命令,并可通过使用其他有权限的私钥进行签名绕过签名验证这一步骤,而这一过程,通信的双方却毫不知情;通过流量监听手段,可以非法嗅探网络流量报文,绕过联盟链的网络准入机制,实时获得真实的数据信息,具有较大的安全隐患。因此,针对通信过程中的安全隐患,同时结合物联网设备流量有限、需要具有上下行通信信道等特点,我们提供了多种安全通信协议,保障通信链路的安全与可信



https协议

https协议是http协议的安全版,它在http协议基础上实施TLS/SSL加密通道规范,一方面可以实现对数据进行加密,并建立一个信息安全通道,来保证传输过程中的数据安全;同时另一方面也可实现对网站服务器进行身份认证。https协议适合应用于设备向区块链单向上传数据的场景,端侧与链侧的具体交互流程如下。



  • 1)设备向区块链节点发起https请求,其中包括支持的SSL版本、加密组件等信息;
  • 2)区块链节点收到请求后,将用来进行非对称加密密钥对的公钥证书、连接参数等信息发送给设备;
  • 3)设备收到证书之后,会对合法性进行检查,若验证通过,则在本地生成一个随机值,该随机值作为客户端密钥,用于进行对称加密。否则,则终止此次https传输;
  • 4)设备使用区块链节点的公钥对客户端密钥进行加密,并发送至区块链节点,由于该客户端密钥在传输的过程中是加密的,因此具备安全性;
  • 5)区块链节点接收后,使用私钥进行解密,获得客户端密钥。至此,设备和区块链节点间都持有了一个仅有双方可见的对称密钥,在未来传输的过程中,将使用该对称密钥对传输数据进行加密,保证传输的安全。


mqtt协议

mqtt协议(消息队列遥测传输协议)是一款为了满足低电量消耗和低网络带宽需求而设计网络协议,其基于TCP协议进行设计,采用C/S架构,支持订阅和发布两种模式,支持异步收发消息和三种QoS,可以为大量的低功率、工作网络环境不可靠的物联网设备提供双向通信保障。BoT采用插件组件的形式,通过mqtt协议将消息的发送方和接收方解耦,支持物联网设备进行数据上报和指令下发,适合应用于设备与区块链双向交互的场景。同时,通过启用mqtt协议的多重安全设计特性,保障数据和网络的安全。

  • 1)支持TLS加密。设备、区块链节点与mqtt broker建立连接时,可在握手阶段创建安全连接,此时,订阅和发布的消息均为密文,保证数据无法被窃听和篡改;
  • 2)支持身份认证。mqtt协议可在传输层使用TLS对设备进行认证,即启用该功能时,在建立TLS连接阶段,broker额外需要对设备持有的证书进行验证,仅当双向认证通过后,才可建立连接。此外,在应用层可使用客户标识、用户名密码进行身份认证,以此保证设备的真实性;
  • 3)支持权限控制。mqtt协议支持通过访问控制列表(Access Control List, ACL)设置主题的订阅和发布权限。通过ACL功能,可以对各设备允许读写的主题进行授权,将各设备的通信信道进行逻辑隔离,保护数据隐私和系统安全。



“怎么管”——设备的管理


在BoT场景中,设备因受到制造成本、研发水平等因素的限制,不同设备的安全防护等级各不相同,安全防护等级越低,密钥泄露的可能性越大。而随着设备因损坏、被盗等原因无法继续使用时,在众多设备中出现个别密钥泄露的概率也显著增高。此时,若没有及时对该设备密钥进行权限控制和注销,则存在该设备密钥因被非法使用而造成损失的风险。此外,对于部分满足高安全标准的具备高安全等级的设备而言,对密钥进行定期更新保证设备安全是必要的需求。因此,设备密钥管理权限管理是保障系统安全、保证数据可信必不可少的一环。

针对上述安全风险和需求,我们提供两种链级原生管理技术实现对设备的权限和账户管理,一方面可以实现对不同安全等级、不同业务需求的设备赋予不同的链上访问权限,另一方面可以对设备账户密钥进行注册、更新、注销,保证账户安全与可靠。


链级角色管理

链级角色管理指的是对设备账户赋予相应的角色,不同角色具有不同的接口权限,通过对角色的限制,可以对设备从接口层面进行管理,将其允许功能限制到最小,防止设备因密钥被非法窃取而获得区块链全量功能权限的情况发生,提高数据安全性和系统可靠性。角色管理具备创建角色、删除角色、授予角色、回收角色等基础功能,其提案由账户管理员发起,其他账户管理员进行投票,当提案投票通过后即可生效。


账户生命周期管理

账户生命周期管理指的是对设备账户进行从注册起到注销止的全过程管理,支持进行设备账户注册、设备账户注销、设备账户密钥更新等基础操作,可有效的对链上账户进行细粒度分配和管理,降低因过期密钥泄露、非法账户攻击等不安全因素发生的可能性,同时可服务于密钥定期更新等高安全等级需求。以软件集成模式下设备账户请求密钥更新为例,其具体流程如下。


  • 1)设备首先读取本机硬件唯一号和原公钥,将其组成一笔账户更新请求交易,并使用原私钥进行交易签名;
  • 2)将带签名的交易发送至BoT链;
  • 3)BoT链首先对交易真实性和合法性进行验证,若验证通过,则生成新的公私钥对,并通过账户生命周期管理流程根据硬件唯一号更新区块链账户,同时将新的公私钥对通过加密信道返回至设备进行安全存储,更新成功。若验证失败,则跳过上述步骤,更新失败。

综上,密钥分发流程和设备管理流程使设备密钥成为可信链路的可信根,从端侧保证了密钥的安全可信;安全通信协议使通信链路无法被篡改和侦听,从链路侧保证了通信过程的安全可信;区块链使数据不可被篡改,从云侧提供了数据存储和处理的安全可信。至此,从端到云的可信数据链路就此搭建完成,从源头保障设备上报数据的安全可信。

目前,BoT已经全面适配上述密钥分发和设备管理流程,支持上述通信协议,开发者仅需依据流程和协议进行接入,即可打通数据上链“第一公里”,实现信息从终端采集、数据从源头上链。此外,为了降低开发者的开发难度,我们联合通信模组硬件厂商,推出以下几款适配不同网络环境的区块链专用通信模组,这些模组将上述流程适配至通信模组内部,对于开发者而言,只需要适配模组电气接口,并依据规定的协议调用相关指令使用模组,即可实现数据上链。

  • 区块链专用WIFI模组。该模组利用无线局域网络,帮助低功耗设备、移动消费电子设备、可穿戴设备等打通物联网设备与区块链间的“第一公里”。
  • 区块链专用NBIoT模组。该模组利用窄带物联网技术,使低功耗广覆盖物联网设备可以便捷的接入区块链,实现数据可信上链。
  • 区块链专用4G模组。该模组通过4G CAT1/CAT4网络,使物联网设备具备连接区块链的工作能力,适用于智能表计、智能手表、智能门锁、DTU等终端产品。
  • 区块链专用5G模组。该模组通过5G网络,使物联网设备具备连接区块链的工作能力,适用于安防摄像头、高清会议终端等多行业整机产品。



[1] https://en.wikipedia.org/wiki/HTTPS.

[2]  https://en.wikipedia.org/wiki/MQTT.

[3] 《区块链技术指南》