一种基于区块链的物联网标识管理方案
2022-05-09严国秀沈苏彬
严国秀,沈苏彬
(1.南京邮电大学 计算机学院,江苏 南京 210046;2.南京邮电大学 通信与网络技术国家工程研究中心,江苏 南京 210046)
0 引 言
物联网应用的迅猛发展,预示了物联网装置正在急剧增加。在华为的预测中,到2025年物联网装置将超过1 000亿台[1]。标识管理[2]作为物联网实体间访问的必要条件是物联网应用的基础设施。国际电信联盟(ITU)在《关于全球互通的标识管理架构》的报告中指出几乎所有的网络活动都需要将标识信息从一方传递给另一方。因此,物联网需要一个足够强大和灵活的标识管理服务平台。目前的物联网标识管理主要是依赖于中心机构,由机构对标识进行分配、存储、管理[3]。该模式具有一定的安全隐患,如美国某自动售卖机服务器被攻击,导致数十万用户信用卡账户以及生物特征识别数据等个人信息被窃取。在这种形势下,中心化的标识管理模式引起了人们对用户隐私以及安全问题的担忧[4]。
区块链作为源于比特币[5]的技术,是一种去中心化的信任管理机制。在区块链中每一个参与方都是平等的,拥有对交易的记录权利,且都共同维护同一份账本。该账本是不可以被篡改的,且是可追溯的。随着国内外专业人员对区块链研究的深入,区块链的应用研究也从数字货币领域转移到了非数字货币领域[6],其中比较热门的有基于区块链的溯源应用的研究[7]、基于区块链的物联网应用的研究[8]等。
目前的物联网标识管理由于采用中心化的管理方式带来了很多隐私安全问题。为了解决这个问题,该文提出了一种基于区块链的物联网标识可信管理方案。为了解决去中心化模式下,其他物联网装置如何验证自主生成的数字标识的问题,设计了标识的生成规则。为了解决去中心化模式下,如何保证物联网发布的标识是真实的问题,提出了面向区块链的标识管理的块结构和链结构。为了解决去中心化模式下,物联网标识的真实性验证问题,提出将物理标识和数字标识的映射关系作为信任凭证存入到区块链中的解决思路。
1 相关工作
国际电信联盟(ITU)指出标识是在特定领域内可以唯一标识某个实体的元数据。标识管理指在计算机网络中将实体表示和识别为数字身份的过程[9]。在互联网中身份管理模型[10]有独立的身份管理模型、联盟的身份管理模型、中心化的身份管理模型。因为物联网具有可扩展性、移动性、互操作等特征,所以这些管理模型不能直接应用到物联网中。Thuan D V等人[11]提出了一种适合物联网特性的且以用户为中心的标识管理方案。Chen J等人[10]针对物联网的标识管理给出了详细的方案,包括标准的标识信息模型、以用户为中心的管理架构以及多层验证的机制。虽然上述工作都针对物联网的特性提出了相应的标识管理方案,但是却缺少对标识管理安全的考虑。Zhu等人[12]为了解决目前物联网标识管理中存在的单点故障问题,提出了基于区块链的标识管理架构。该架构中利用硬件设施对物联网装置的物理特性的读取并将其作为证书存储在区块链中。Omar A S等人[13]为了解决物联网管理中的标识授权的问题,提出了一种基于区块链的半去中心化的标识管理架构。在标识的授权过程中采用认证机构提供的数字证书为物联网装置证明身份。
上述对物联网标识管理的研究主要是解决两个问题。首先,针对互联网中的标识管理无法直接应用到物联网中的问题,提出了满足物联网特性的标识管理模型。其次,针对集中式的物联网标识管理方案存在的安全隐私问题,基于区块链技术提出了去中心化的物联网标识管理模型。其中,为了证明物联网装置的身份,基于区块链的物联网标识管理方案给出了两种解决思路。第一种为采用硬件设施读取装置的物理特性来证明装置身份。第二种为引入认证机构为物联网装置证明身份。该文从去中心化模式下,物联网标识管理的流程角度考虑,对区块链技术的自身特性展开研究,提出了一种基于区块链的物联网标识管理方案。
2 问题分析
根据物联网标识管理的应用需求,确定了文中需要研究的技术问题为去中心化模式下,物联网装置自主生成数字标识的方法、发布数字标识的方法。
针对第一个问题,去中心化模式下,如何保证物联网装置自主生成的标识是真实的。在传统的物联网标识管理模式下,标识的真实性验证交由中心服务器来完成。例如,公钥基础设施PKI技术负责为每一个物联网装置分发公钥,并提供相应的数字证书证明数字标识的真实性。在这种模式下,标识的真实性验证完全取决于公钥基础设施的可靠性。去除中心服务器,数字标识的真实性表示便成为文中的首要研究点。数字标识的真实性表示包含了数字标识可以唯一的代表物联网装置和易于验证两个要求。从这两点出发,首先考虑的是寻找一种可以唯一代表物联网装置的信息,文献[12-13]分别提出将物联网装置的物理特性和数字证书作为证明身份。这两种方法虽然都具有可行性,但是前一个方法实施过于繁琐,后一个方法并不是一个完全去中心化方案。通过查阅文献发现,采用固件[14-15]的方式作为解决方案,即将根据物联网装置的物理标识得到数字标识。一方面,固化在装置中的物理标识具有全球唯一性,另一方面相对于读取物理特征等方法,物理标识更简便。为了便于数字标识供其他装置进行验证,需要统一规范标识的表现形式。散列技术通常被用于生成不可逆、具有固定长度的数字摘要,并且结合数字签名技术被数据完整性验证方案中。因为散列技术和数字签名技术的技术特性恰好满足文中对数字标识的设计需求,所以主要利用散列技术和数字签名技术对物理标识进行处理形成唯一的数字标识。
针对第二个技术问题,去中心化模式下,如何保证物联网装置发布的标识是可信的。在上一个问题的研究基础上,保证发布过程中标识未被假冒,则需要保证标识发布的管理过程是可信的。在比特币中记录在账本上的每一笔转账交易都是可信的,这是由于比特币区块链中对转账交易进行了信任管理[6]。转账交易的信任管理指的是交易被记录到公共账本前会对交易进行验证,包括交易发起者身份的验证和交易数据的完整性验证。此外,为了使得全网的节点对该交易的达成一致认同的状态,还需要采用工作量证明机制解决分布式共识问题。区块链中块结构和链结构的设计正是为了解决上述的两类验证问题而存在。因此,为了保证标识发布的过程是可信的,将标识发布定义为需要信任管理的操作,进一步对块结构中的数据结构进行了重新设计,并结合标识管理的应用特点选择合适的共识机制来达成分布式共识。
3 基于区块链的物联网标识的可信管理方法
根据第2节的分析,首先,定义了标识管理的数据结构,用于保证标识生成和发布过程中标识的真实性。其次,给出了标识管理方案的流程设计,从区块链的构建角度出发,保证物联网标识管理是在去中心化下实现的。
(1)方案的设计思路。
标识的真实性表示和可信发布实际上就是物理标识与数字标识形成对应关系上链的过程。为了防止在去中心化模式下有恶意装置假冒标识上链的情况,必须对每一次的标识发布交易进行真实性验证。比特币中,通过设计块和链结构的方式完成了交易的真实性验证。参考比特币中块结构的设计,将区块链中的交易重新定义为标识的发布。重新定义的块结构包括区块头和区块体两部分。区块头中包含了父区块哈希值、时间戳、Merkle树根。父区块的哈希值用于与前一个区块链接、时间戳用于记录本次区块挂载在区块链上的时间、Merkle树根用于保证交易的完整性。区块体中则是保存着已经通过验证的标识发布交易,并以Merkle树的形态存在。为了将标识发布作为交易以智能合约的形式映射到区块链中,还设计了标识的结构体。在标识发布交易通过区块链中节点的验证后,就会被添加到区块中,并等待着被挂载到区块链的尾部。一旦交易被添加到尾部,则表明该标识生效。为了使节点对区块产生认可,所以结合该文的应用特点,选择合适的共识机制就会变得十分重要。比特币中采用工作量证明(proof of work,PoW)共识机制使每一个区块链节点都可以成为淘金者。PoW共识机制虽然保证了每一个节点都拥有相等的记账权利,但却以高昂的计算力为代价。为了提高区块的产生效率,以太坊中对PoW共识机制进行了优化。在以太坊中,每一个区块的生成时间只需要耗时14 s。PoW共识机制需要淘金节点具备强的计算力,这对于很多资源受限的物联网装置来说是不可能实现的。除了工作量证明共识机制外,不少研究学者还提出了别的共识算法。如权益证明(proof of stake,PoS)机制、实用拜占庭容错机制(practical byzantine fault tolerance,PBFT)、股份授权证明机制(delegated proof of stake,DPoS)等。权益证明机制[16]是通过对每个节点持有代币的数量和拥有的时间按着算法等比例地降低节点的挖矿难度,其在本质上仍然是依赖于代币。股份授权证明机制[17]是权益证明的一种优化,缩小了参与记账权节点和验证节点的数量来加快共识速度。实用拜占庭容错机制[18]是目前不依赖于代币的一种共识机制,并广泛应用于许可链中。通过上述分析,该文采用实用拜占庭容错机制作为区块链中的分布式共识算法。
为了在去中心化模式下保证物数字标识可以识别到该物联网装置,根据第2节中的分析,设计了详细的标识管理流程。在流程设计中,表明用散列技术与数字签名技术生成数字标识来表示物联网装置、标识发布交易过程中包含的验证流程、将物理标识和数字标识的关联关系作为信任凭据存储到区块链中,用于后续的真实性验证。
(2)标识管理的数据结构设计。
基于上述分析,首先设计了物联网装置的标识信息对应到智能合约中的Identity结构体。该结构体包含了物联网装置的公钥(address pk)、物联网装置的数字标识(bytes DID)、物联网装置的物理地址(bytes mac)、物联网装置的序列号(bytes sn)、数字标识发布的时间戳(uint256 timestamp)、数字签名(bytes sign)。具体定义如下(使用solidity语言):
Struct Identity {
address pk;
bytes DID;
bytes mac;
bytes sn;
uint256 timestamp;
bytes sign;
}
其次,重新定义了区块链中的信任管理操作为标识发布,详细的块结构设计见图1。区块结构图中包含了区块头和区块体,区块头中包含了父哈希值、时间戳、Merkle树根。区块体中则是由标识发布交易组成的Merkle树体。
最后,为了使得物联网装置生成的数字标识生效,类比比特币中的链结构进行设计,如图1所示,并结合本方案的场景重新设计了链的形成机制。给每一个节点进行编号,通过模运算的方式得到一个主节点作为本次的记账节点,如公式(1)所示。剩余的节点则作为共识过程的从节点。
图1 面向区块链的标识管理的块结构
P=Vmod|R|
(1)
其中,V表示视图编号,|R|表示区块链节点的数量,P表示选中主节点的编号。
具体的共识过程:首先,标识的可信发布交易被验证通过后,将会被区块链网络中的记账节点交易打包到区块中。当达到一定数量后形成一个区块,记账节点对该区块交易进行数字签名并将区块交易的哈希值和数字签名一同打包发给各从节点。其次,从节点在收到记账节点的消息后,对数字签名和区块交易进行验证,验证通过后则会附上自己的数字签名并将收到的消息和自己的数字签名进行广播。再次,其他节点会把从记账节点收到的消息和从别的从节点收到的消息进行本地验证对比,然后,将结果返回给记账节点。最后,记账节点将对从节点收到的反馈结果进行审计。如果当前物联网网关节点对该区块交易表示认可,记账节点则会将该区块加入到区块链的尾部,并广播至全网。若存在部分物联网网关节点不认可区块交易,记账节点则会要求这些从节点再次进行验证,并将审计结果返回。只有至少三分之二的可信节点认可当前区块交易,该区块才会被加入到区块链尾部。
(3)标识管理的流程设计。
本方案中根据物联网标识管理的需求,设计了标识管理流程,如图2所示。包含数字标识的生成、标识的发布、验证。
图2 标识管理的流程
具体的步骤如下所述:
步骤1:初始化阶段,由物联网应用管理方设置至少三个可信的区块链初始节点构成标识管理域,这三个可信区块链节点可以是物联网网关,负责交易的真实性验证以及共识过程。并且设定每一个加入到标识管理域中的物联网装置都需要进行身份真实性验证。只有身份通过后的物联网装置才可以加入这个标识管理域,进行标识的自主发布和管理。
步骤2:物联网装置Device(以下简称D)在加入到标识管理域中后会本地生成密钥对(Dpk,Dsk),并在此基础上生成数字标识DIDi,如公式(2)所示:
DIDi=hash(DMAC,DSN)
(2)
其中,DMAC表示物联网装置的物理地址,DSN表示物联网装置的产品序列号。通过对这两个固件的物理标识进行哈希处理得到全局唯一的数字标识,DIDi为扁平式的,人类不可读的标识编码。相对于层次性结构、人类可读的编码,这种编码方式的优势在于不易于被假冒。
步骤3:物联网装置D在生成数字标识后,将数字标识以及相关信息发送到区块链网络中,记为标识的发布交易Disi,如公式(3)所示:
Disi=Sigsk(hash(pki,DIDi,DMAC,DSN,t))
(3)
其中,pki表示物联网装置D的公钥,DIDi、DMAC、DSN、t分别对应物联网装置的数字标识、物理地址、产品序列号、标识发布的时间戳。首先装置D对上述这些信息进行哈希处理,得到哈希摘要。然后用自己的公钥对哈希摘要进行数字签名得到可信发布交易的标识。最后将该交易标识发布到区块链网络中。
步骤4:区块链中的全节点在收到标识发布交易后,对交易进行验证。主要包括交易发起者的身份的验证、交易数据的真实性的验证。具体的验证过程,如公式(4)~公式(8)所示。
h1=Decpk(Disi)
(4)
h2=hash(pki,DIDi,DMAC,DSN,t)
(5)
κ1=equ(DIDi,hash(DMAC,DSN))
(6)
κ2=contains(DIDi,pki)
(7)
{true,false}=ver(κ1,κ2)
(8)
其中,公式(4)中的Decpk()表示用装置的公钥进行解密,具体的是用交易发起者的公钥对收到的标识发布交易的标识进行解密得到h1。公式(5)中则是对物联网装置的公钥、数字标识、物理地址、产品序列号以及发布时间戳进行哈希处理,得到数字摘要h2。通过对比h1和h2的值是否相等来验证交易发起者的身份。公式(6)~公式(8)则是对交易数据的真实性进行验证。公式(6)中的equ()函数是用来判断物联网装置提供的数字标识和装置固件物理标识计算得到的哈希值是否一致。若一致,则返回true。否则,返回false。公式(7)中的contains()函数用来判断区块链中是否已经存在该数字标识以及该数字标识是否和其他装置的公钥存在对应关系,若是,则返回false,否则返回true。公式(8)中的ver()函数则用来判断κ1和κ2是否同时为真。若同时为真,则表明交易数据是真实的。
步骤5:在标识发布交易通过验证后,则会由模运算得到的拥有记账权的节点将交易打包到区块中。在交易达到一定数量后,记账权节点会根据Merkle树的原理计算出所有交易构成的Merkle树根值,放入区块头中来保证交易的不可篡改性。在记账权节点构建好完整的区块结构后,则会用私钥对区块交易进行数字签名。将该区块交易和数字签名发送给其他物联网网关节点验证,最终审计验证结果。在有三分之二的节点验证通过的情况下,记账权节点会将该区块链接在区块链的尾部。一旦标识发布交易被挂在尾部后,则数字标识生效。
4 实验与结果分析
(1)实验环境的选择与搭建。
目前比较流行的区块链应用开发平台有以太坊平台、Hyperledger Fabric平台。智能合约作为以太坊平台的一大亮点,给以太坊平台增加了图灵完备的特性。此外,以太坊平台还配备了成熟的框架体系,如Truffle框架,减少了开发者不必要的繁琐操作。Hyperledger Fabric平台作为联盟链的代表在2016年被提出后备受争议,虽然提高了比特币系统的出块速度,但是该平台的安全性仍有待考证,不利于开发者的交流。基于上述的考虑,选择了以太坊平台进行仿真实验。实验环境是基于Ubuntu16.0.4系统,并且使用Truffle开发框架进行了智能合约的编译、部署、测试。使用React框架实现了应用前端,让用户可以通过使用应用前端与智能合约进行交互完成标识管理的功能。
(2)实验过程与结果分析。
实验中选择使用Solidity语言编写Identity Manage.sol合约,并将其置于truffle框架下的React模块中去实现相应的标识管理功能和可视化的前台界面。
首先,将IdentityManage.sol合约部署在ganache-cli客户端上,在对合约的部署前还需要编译获得对应的二进制接口ABI和字节码bytecode。通过在虚拟机上调用字节码bytecode,部署过程会消耗一定的燃料值。如图3所示,合约部署成功后会返回成功的消息并消耗燃料值。
图3 智能合约部署
其次,对于标识的发布只需要在前端界面输入MAC地址和产品序列号,然后根据3节的发布流程提交后,智能合约就会被触发执行交易。一旦交易被验证通过后,如图4所示。在交易被记录到区块链后会返回交易执行成功的状态值并返回数字标识9b22396f39d6587fa176b3528a6b0d2de337b35ff541ab53 d385cc987cee8d1b,表明本次标识的可信发布过程完成。一旦该标识发布交易被验证失败后,如图5所示。
图4 标识的成功发布
图5 标识的失败发布
标识可信发布具体的实现代码如图6所示。上述仿真实验表明,提出的基于区块链的物联网标识管理方案可以在去中心化的环境下实现并可以顺利完成标识的可信发布并保证数字标识可以在网络中唯一地代表物联网装置,这样可以有效防止物联网装置被假冒。
图6 标识的可信发布的实现
5 结束语
针对目前物联网标识管理采用中心化的管理模型带来的安全隐私问题,提出了基于区块链的物联网标识管理方案。该方案实现了物联网标识的可信管理并指出物联网装置的数字标识和物理标识的关联信息可以用作身份的证明。具体是设计了面向区块链的可信管理的块结构、区块链结构以及基于区块链的物联网标识管理流程。此外,通过在以太坊平台上进行仿真且仿真结果表明所提出的基于区块链的物联网标识管理方法是可行的、正确的。接下来准备对该方案中的共识过程进行优化,以提高标识管理的效率。