电力物联网设备持续高效批量可信认证
2022-03-04赵保华王志皓陈连栋任春卉余发江
赵保华,王志皓,陈连栋,任春卉,余发江,徐 庆
1.全球能源互联网研究院有限公司,北京 102209;
2.电力系统人工智能(联研院)国家电网公司联合实验室,北京 102209;
3.北京工业大学 计算机学院,北京100124;
4.国网河北省电力有限公司信息通信分公司,河北石家庄050021;
5.武汉大学 国家网络安全学院,湖北 武汉430072
0 引言
随着电力物联网的蓬勃发展,设备运行的环境越来越复杂,物联网终端设备越来越多,而终端设备通常是资源受限的嵌入式设备,安全投资不足,在充满不确定性的物联网环境中很容易遭受攻击[1,2]。2014年,西班牙三大主要供电服务商超过30%的智能电表被检测发现存在严重的安全漏洞,攻击者可以利用该漏洞进行电费欺诈,甚至直接关闭电路系统[3]。2016年,乌克兰电力公司因恶意软件入侵造成了长达数小时的大规模停电,受灾人口达到140万,造成这一事件的原因是恶意软件利用了保护继电器固件程序中的一个已知漏洞,禁用了这些设备的自动防护功能[4]。由此可见,物联网设备受到攻击时,其可信状态发生了改变。为了实现对设备状态的持续监视,保障物联网设备的安全性,需要采取措施持续性地对各物联网设备可信状态进行认证,以在设备不可信时及时发现并采取措施,减少损失。
针对以上问题,学者们提出采用远程验证(remote attestation,RA)[5.6]机制确保终端设备的可信性。目前远程验证根据设备能力和设备安全保障方面的不同要求,可以分为基于软件的验证和基于可信根的验证。基于软件的远程验证[7~9]通常对攻击者行为进行强假设以提供设备安全保证,并且对设备几乎没有硬件要求。这种验证仅适用于缺乏硬件安全功能的传统设备,以及证明者在物理上靠近验证者的情况。基于可信根的远程验证[10~12]依赖于可信平台模块(trusted platform module,TPM)[13],在设备启动过程中,度量自身的完整性并被记录到TPM的平台配置寄存器(PCR)中,发送到远程验证方进行验证。
鉴于物联网系统的规模和复杂性,传统的远程验证方案只能单独对各设备进行验证,扩展性较差,所以学者们提出了集体远程证明(collective re⁃mote attestation,CRA)[14,15]协议,允许验证 者 从整个设备网络中获得网络的整体状态和设备的个体状态,以提高远程验证的可扩展性。SEDA[16]是一种用于集体证明的可扩展协议,它允许验证者在设备集群生成树上有效地执行认证;SANA[17]解决了SEDA的一些局限性,它依赖于乐观聚合签名(OAS)的加密方法,允许没有安全硬件的设备聚合网络认证报告。DARPA[18]要求每个设备通过记录心跳信息来定期监视其他设备,以发现攻击者对设备的物理攻击,从而减少设备网络中的物理攻击。现有集体远程证明协议方案没有针对电力物联网设备和架构特点进行适配,而且在实际情况中,设备启动后可能会进行固件版本的更新,有可能会遭受攻击,这时设备的可信状态发生变化,需要提供对设备的持续多次度量,以确认设备的当前可信状态。
为了适用于电力物联网云边端协同的架构[19,20]和支持持续性的批量认证,本文提出了一种适用于电力物联网设备的持续高效批量可信认证机制,所做的贡献如下:
1)使用一棵非平衡哈希树存储设备度量信息,相较于传统默克尔哈希树,减少了树构建和节点加入的时间和空间消耗,同时减少了节点验证时传输验证所需信息量,提高了验证效率。当树达到存储上限时,采用最近最少使用的方法对树中已有节点进行替换,借助一个哈希表和具有多个支链的双向链表快速找到待替换的树节点。
2)提出了一种基于多版本的设备持续度量认证机制,将设备各个历史版本的度量信息同时保存在非平衡哈希树中,使得设备在进行版本更新后,验证方仍能正确对其可信状态进行验证,同时树中存储的设备多版本度量信息便于对同一设备的历史可信状态变化进行评估。
3)采用一种高效的稀疏哈希树多值认证[21,22]方法实现设备的批量认证。当待验证设备有多个时,相较于单值验证,提高了验证所需信息生成效率,减少了传输验证所需信息量,同时提高了设备验证效率。
1 系统模型和安全威胁
1.1 系统模型
本文提出的电力物联网设备持续高效批量可信认证机制的系统模型涉及终端设备E、边缘代理A和云端平台P三类实体。三类实体的证书cdk由证书权威机构进行颁发。终端设备与边缘代理均采用一种轻量的可信度量架构[23,24]进行自身可信度量并向边缘代理和云端平台报告度量状态,边缘代理使用一棵非平衡哈希树DAT、一条多链L和一个哈希表HT存储终端设备的度量状态信息,云端平台对边缘代理进行身份和可信状态认证,对终端设备的可信状态进行验证。实体间的交互过程可以分为两部分:持续性认证和批量认证。该机制系统模型如图1所示。
图1 系统模型Fig.1 System model
1)持续性认证过程。①终端设备可信度量。终端设备由设备标识di和不可更改的可信根代码tr生成复合设备标识cdiE,然后根据cdiE生成设备密钥dkE,用作与边缘代理通信时的签名密钥,再根据应用固件的实际度量值和cdiE生成认证密钥akE,用于描述设备当前的可信状态。②终端设备度量值报告。边缘代理向终端设备发送一个随机数r1作为挑战信息,终端设备对认证密钥的公钥pakE和r1签名,将证书cdkE、公钥pakE和签名报告给边缘代理。③边缘代理度量值存储。边缘代理对签名进行验证以确认设备身份,验证通过则将pakE的哈希值存储在非平衡哈希树中。实际情况中,一个边缘代理会管理多个终端设备的度量信息,上述过程会进行多次,以存储记录设备的多个版本度量信息,实现对设备持续性的认证。
2)批量认证过程。①边缘代理可信度量。云端平台作为验证者向边缘代理发起认证请求,发送待验证的设备集合S和一个随机数r2作为挑战信息,边缘代理首先由轻量级可信度量架构进行自身可信度量,生成akA,过程与终端设备可信度量类似。②边缘代理证明信息报告。边缘代理根据待验证集合S,从非平衡哈希树中生成其对应的验证所需证明信息w(w是验证路径上所需树节点的哈希值集合),对r2、w、pakA和待验证设备的版本信息签名并报告给云端平台。③云端平台批量认证。云端平台先对签名进行验证,验证通过后对边缘代理的可信状态进行验证,然后根据w和设备基准度量值sv对所有终端设备的可信状态进行批量认证。
1.2 安全威胁
根据攻击者具有的能力和攻击策略,可以将攻击者的行为分为两种类型[25,26]。
1)对终端设备与边缘代理、边缘代理与云端平台间的通信过程进行攻击。攻击者具有对通信信道的完全控制权,可以对实体间通信信息进行窃听、修改和重放等操作;
2)攻击物联网设备。攻击者可以利用漏洞入侵物联网设备,读取其未受保护的内存区域,操控软件状态,但无法伪造边缘代理和终端设备的设备证书cdk。对物联网设备的攻击可以分为对终端设备和边缘代理的攻击。攻击者入侵终端设备,可能修改固件层的代码;攻击者入侵边缘代理,可能修改其非平衡哈希树、多链和哈希表结构,
安全假设:假设1,非平衡哈希树采用的哈希函数是抗碰撞的;假设2,云端平台作为验证方是安全的;假设3,终端设备和边缘代理具有的设备标识di和可信根代码tr不会被攻击者篡改。
2 结构与操作
本文将边缘代理用于设备度量信息存储的结构中,非平衡哈希树用于存储设备的认证密钥信息,多链结构用于树达到存储上限时寻找待替换节点,哈希表用于根据设备id检索其对应的多链节点。
2.1 设备认证密钥非平衡哈希树
传统默克尔哈希树是一棵满二叉树,在树的构建和节点添加过程中,当处理的当前层节点数目为奇数时,通常会将该层节点中的其中一个复制一份凑成偶数,这样会导致树中存在大量重复的中间节点,在树的构建和节点加入时会有额外的时间和空间消耗。同时在生成多值路径的过程中,由于添加的额外节点增大了默克尔哈希树右侧叶子节点到根节点的路径长度,使得这部分叶子节点的认证路径较长,生成的多值路径空间较大,影响云端平台的认证效率。所以本文采用了非平衡哈希树,弥补默克尔哈希树的不足。
非平衡哈希树是一棵二叉树,其节点表示为Ni,j,i为节点所在层号,j为节点在该层的序号,层号从叶子节点层到根从0开始编号,每层的节点从左到右从0开始编号。树中叶子节点N0,j(j=0,1,…,n)存储一个设备的度量认证密钥pakE的哈希值及设备id和 固 件 版 本 号ver,即N0,j= id,ver,val,其 中val=Hash(pakid,ver)。而中间节点Ni,j(i>0)的val值是其左右子节点哈希值链接后的哈希变换,即val=Hash(Nleft||Nright)。
非平衡哈希树每次添加设备度量信息时,会增加一个叶子节点和一个中间节点。由此种方式构建的树,除叶子节点外的任意节点的左子树都是一棵满二叉树,而右子树也是一棵非平衡哈希树。
节点添加过程append操作和树的变化如图2所示,图中实线圆圈节点为树节点,虚线方框内是叶子节点存储的对应认证密钥信息。
图2 非平衡树节点添加示意图Fig.2 The diagram of adding unbalanced tree nodes
2.1.1 树未达到存储上限时加入
Append(算法1)完成非平衡树未达存储上限时认证密钥加入到非平衡树的操作,过程如下:首先生成两个节点,分别是中间节点Nmid以及叶子节点Nleaf。根据待加入的设备度量值信息pakE,计算出相应叶子节点Nleaf的值val(=Hash(pakE))。然后从根节点开始,判断以每层最右边节点为根节点的树是否为满树,找到第一个为满树的节点Nfull,将节点Nmid作为该节点和节点Nleaf的父节点,更新节点Nleaf到非平衡树根节点路径上各节点的哈希值。Append具体过程如算法1。
?
2.1.2 树达到存储上限时加入
边缘代理的存储能力通常有限,需要给该树结构定义一个存储阈值cap,以表示该非平衡树可以存储的最大认证密钥数目,并用n记录当前树中已存储的度量值数目。当n=cap时,树已达到存储上限,需要通过策略寻找并更新树中已有的某个叶子节点,本文采用的策略将在2.2节中介绍。
假设已通过2.2节策略找到了树中待替换的节点对应的多链节点lnode。然后执行update(算法2)完成树已满时认证密钥加入到非平衡树的操作。
?
首先由节点lnode得到树中待替换的节点Nleaf,将id和ver更新到该节点,然后更新Nleaf到根节点路径上所有节点值。
2.1.3 多路径生成
非平衡哈希树与默克尔哈希树一样可以提供多值路径mp以证明树中特定节点存在于节点集合中,本节先以一个例子说明mp的生成过程,然后将过程归纳为算法3。以云端平台验证设备S={E1,1,E2,1,E3,1,E3,2}为例,假设此时非平衡哈希树如图3所示(图中阴影是待验证的设备对应树中结点)。
图3 非平衡哈希树Fig.3 Unbalanced Hash tree
mp的生成过程从树的叶子节点层一直迭代到根节点,具体步骤如下。
1)0层
设 备E1,1,E2,1,E3,1,E3,2对 应 的 第0层 的 节 点 编号分别为0、1、2、6,分别为这些编号添加一个相邻编号生成编号对,且编号对第一个元素为偶数,第二个元素为奇数,得到的编号对为[0,1]、[0,1]、[2,3]、[6,7],将这些编号对去重得到[0,1]、[2,3]、[6,7],该编号对中除去0、1、2、6编号后剩余的节点编号为3、7,由于第0层中没有7号节点,所以将去除无效节点7后的编号对应的节点添加到mp中,此时mp={N0,3},将各编号对的左端点除以2得到第1层对应的节点编号0、1、3。
2)1层
第1层对应的节点编号为0、1、3。为这些节点生成编号对并去重得到[0,1]、[2,3],将该编号对中除去0、1、3编号后的剩余节点编号2对应的节点添加到mp中,此时mp={N0,3,N1,2},将各编号对的左端点除以2得到第2层对应的节点编号0、1。
3)2层
第2层对应的节点编号为0、1。为这些节点生成编号对并去重得到[0,1],此时该编号对中除去0和1后已无节点,迭代结束。最终生成的mp={N0,3,N1,2}。
上述过程可用算法3描述。
2.2 历史版本设备多链与哈希表
当树达到存储上限时,为了快速找出树中待替换的节点,本文采用了一种最近最少使用的方法,即最不经常更新版本度量信息的设备就是最不活跃的,被认为是较为稳定的,替换时就替换该设备对应的最旧版本度量信息,同时需要注意,应该为每个id的设备至少保留一个最新版本的度量值,以支持对该设备的验证。要实现该方案,本文采用了一个多链和一个哈希表。多链和哈希表结构如图4所示。
图4 多链和哈希表Fig.4 Multichain and Hash table
多链由一条主链和主链上节点延伸的支链组成,主链是一条双向链表,主链节点m_ln=id,tree_node,num ,其中,id为设备id,tree_node为设备在非平衡树中最旧版本的节点信息,num为以该节点为头节点的支链长度。支链b_ln=id,tree_node ,其中存储的是与主链节点同属一个设备id的后续度量值在非平衡树中的节点信息。为了便于根据设备id检索多链节点,本文为主链节点建立了一个哈希表,哈希表中节点键为设备id,值为该设备id在多链结构中对应的主链节点信息。
在进行设备度量信息加入非平衡哈希树操作时,多链和哈希表执行算法4将添加的叶子节点信息同步更新到多链和哈希表结构,当树达到存储上限后,多链和哈希表执行算法5找到并删除树中待替换的节点对应的多链节点。
?
2.2.1 加入和更新
Apd Mov(算法4)完成非平衡哈希树增加节点时多链和哈希表的更新操作。首先根据设备id查找哈希表中是否有该id设备的节点,分为两种情况操作:
①未找到。生成多链节点ln,将其插入到多链的首部,num字段置为1,更新哈希表HT[id]=ln;
②找到。根据查到的结果找到其所在多链中的节点,生成一个代表En,m的多链节点ln并链在该节点下支链的尾部,再将支链头节点num字段加1,并将整条支链移动到多链首部。
?
假设当前哈希表和多链结构如图5(a)所示,当有新度量值E4,1加入时,首先查询哈希表,由于哈希表中没有设备id为4的设备的度量值版本,所以生成一个多链节点E4,1,将其添加到多链首部,同时生成一个哈希表节点,其键为4,值为对应的多链节点E4,1信息,如图5(b)所示。
2.2.2 查找并删除
当非平衡哈希树中的叶子节点达到阈值时,执行FindDel(算法5)找到树中待替换的节点。
由于树已满,需要找到树中待换出的节点。首先从多链主链的链尾向链首进行遍历,找到第一个子链数目大于2的节点head_lni,该节点即为需替换的节点,将其从链表中移除,其子链取代它的位置。若子链数目均不大于2,则查找子链节点数为2的节点作替换,若所有子链中节点数目均为1,则该边缘代理负荷较重,相应待添加的设备应转移到另外的负荷较小的边缘代理管理。
?
以度量值E4,2加入时为例,假定树的存储能力为8,此时树已满。首先执行算法4,根据设备id查找哈希表中id为4的设备,找到其所在多链中的节点,将该节点的num字段加1,生成一个代表E4,2的多链节点并链在该节点支链的尾部,将该支链移动到多链首部。然后执行算法5从链尾向链首进行遍历,找到第一个子链数目大于2的节点E1,1,该节点即为需替换的节点,将其从链表中移除,其支链中下一个节点E1,2取代它的位置,更新后的结构如图5(c)所示。
图5 哈希表和多链变化Fig.5 The change of Hash table and multichain
3 设备持续批量认证机制
借助第2节的非平衡哈希树、多链和哈希表结构可实现终端设备的持续性和批量认证。本节对设备的持续性和批量认证机制分别进行说明。
3.1 基于多版本的设备持续性认证
终端设备启动时进行自身可信度量,根据自身底层标识和核心层代码度量值计算得到复合设备标识符,然后生成用于与边缘代理之间通信的设备密钥dkE,再根据应用固件的度量值和复合设备标识符生成认证密钥akE并报告给边缘代理。边缘代理向终端设备发送随机数r1,设备用dkE私钥对挑战消息r1和akE公钥进行签名得到σE并发送回边缘代理。边缘代理对签名进行验证,验证通过则执行算法6,将akE公钥以哈希值形式保存在非平衡哈希树中。
?
边缘代理的存储资源是有限度的,通常一个边缘代理只负责管理适量的终端设备,但是要对这些设备进行持续性度量,设备固件更新时,其度量值认证密钥也会更新,这将导致非平衡树中的节点数目不断增多,当树中已有度量值数目n 各个边缘代理管理的终端设备众多,单独认证各设备效率低下,所以本文采取稀疏哈希树多值认证的方法对终端设备进行批量认证,减少了传输多路径信息的数据量。 批量认证的过程在1.1节进行了简要描述,其关键过程可以分为两个部分:①边缘代理证明信息w生成;②云端认证平台认证。当云端认证平台需要 对 设 备S={E1,1,E1,2,…,E1,j,…,E2,1,E2,2,…,Ei,j}进行认证时,先将随机数r2和需认证设备集合S发送给边缘代理,边缘代理执行算法7生成待认证设备认证所需的证明信息w,用其私钥sdkA对w和待验证设备版本信息签名后发送给云端认证平台,云端平台先对签名进行验证,然后执行算法8对设备度量值进行验证,得到验证结果。 ? 3.2.1 边缘代理证明信息w的生成 边缘代理执行witGen生成待验证设备的证明信息w。w包含一个位图bm和一个哈希表map,bm是待验证设备所有版本对应的非平衡哈希树中叶子节点序号,哈希表是由算法3生成的多值路径信息,哈希表的键是一个二元组,包含节点在非平衡哈希树中的层号和在该层的序号,值是该节点对应的哈希值。witGen根据待验证设备对应的非平衡树中节点编号,将bm的相应位置为1,然后根据mp Gen(算法3)填充map。 3.2.2 云端认证平台批量认证 假设云端认证平台已从边缘代理获取到认证设 备S={E1,1,E1,2,…,E1,j,…,E2,1,E2,2,…,Ei,j}所需的证明信息w,然后根据边缘代理发送过来的待验证设备版本获取相应设备标准度量值sv和复合设备标识符cdiE,重构出设备的ak密钥akE=KeyGen(cdiE,Hash(sv))。对设备对应的叶子节点,由重构的ak公钥重构叶子节点的值Nleaf=Hash(pakE)。从第0层开始向高层迭代,通过已计算出的叶子节点值与w中的节点信息,不断计算出下一层节点值,运算过程一直持续到计算出根节点,通过比较得到的根节点值和边缘代理传过来的w中根节点是否一致,判断认证路径上的节点是否是可信、未被篡改的。认证过程如算法8所示。 ? 4.1.1 防止攻击者对传输消息的窃听、修改和重放 实体间的通信主要发生在终端设备与边缘代理间、边缘代理与云端平台间。当攻击者对实体间传输的消息进行窃听后,由于传输的消息是设备的认证公钥pakE、pakA,证明信息w和签名信息σ是无需保密的内容,所以不会造成影响。当攻击者进一步对窃听到的消息进行修改后,由于消息用发送方的私钥进行了签名,接收方会首先用发送方的公钥对签名进行验证,而发送方的公钥证书是安全的,所以攻击者的修改行为总是会被发现。当攻击者进行重放攻击时,由于每次通信都采用了一个随机数,该随机数也一同被签名,有效防止了攻击者的重放攻击。 4.1.2 防止攻击者对终端设备和边缘代理的攻击 攻击者攻击终端设备并修改其固件层代码时,由于终端设备采用了一种轻量的可信度量架构进行自身可信度量,修改其固件层代码C1会导致度量时 生 成 的ak′E=KeyGen(cdiE,Hash(C′1)),其 公 钥部分pak′E会存储在边缘代理的非平衡哈希树中。当云端平台进行认证时,根据设备固件层代码的基准 值 重 构 出akE=KeyGen(cdiE,Hash(C1)),显 然akE≠ak′E,认证失败,云端平台可以就此发现设备可信状态的变化并采取防护措施。 攻击者攻击边缘代理并修改其非平衡哈希树、多链和哈希表结构。当云端平台发起认证请求后,边缘代理会为其伪造的树节点val′=Hash(pak′E)生成一个证明信息w′并传回,然而云端平台会用设备的基准度量值重构pakE,并计算叶子节点值val=Hash(pakE)。攻击者有两种情况可达成攻击目的,①使val′=val,此 时 有Hash(pak′E)=Hash(pakE),而pak′E≠pakE,所以需要找到哈希函数的碰撞;②val′≠val,此时需要伪造w′使验证时计算出的根节点值保持不变。由于非平衡哈希树中间节点是其左右子节点值链接后的哈希变换,此种情况也必须找到哈希函数的碰撞。 综上所述,在1.2节的安全假设前提下,该电力物联网设备的持续高效批量可信认证机制是安全的。 本节对多值认证的性能进行分析。假设非平衡哈希树中叶子节点数目为n,待验证设备数目为i。对于单值认证而言,每个设备版本都需要单独进行一次证明信息w生成,每次生成的时间复杂度与非平衡哈希树的高度有关,为O(logn),总生成时间复杂度为O(ilogn)。每个w的大小相等,它包含节点哈希值数目与待验证设备数目,和非平衡哈希树的高度有关。假设单个节点哈希值大小为b,则w占用存储空间大小为iblogn。验证时,对每个设备版本都要单独进行验证,每次单独验证时间复杂度为O(logn),单值验证总验证时间复杂度为O(ilogn)。 对于多值认证而言,所有待验证设备只需生成一个w,其生成和验证过程只需进行一次,时间复杂度和w占用空间大小均与待验证设备的数目及其在非平衡哈希树中的分布有关。①当i=1时,生成和验证时间复杂度为O(logn),与待验证设备数为1的单值认证相同,w占用存储空间大小为blogn。②当i=n/2时,生成和验证时间复杂度和w占用存储空间大小与待验证节点在树中的分布有关,当所有的待验证叶节点都集中在非平衡哈希树根节点的左子树时,消耗的时间和空间最少,生成和验证时间复杂度为O(n),占用空间为2b;当所有的待验证叶子节点在叶子节点层的节点序号都为偶数时,消耗的时间和空间最多,生成和验证时间复杂度为O(3n/2),占用空间为bn/2。③当i=n时,生成和验证时间复杂度为O(2n),此时需要的w只包含根节点的哈希值,占用空间大小为b。多值认证和单值认证的性能比较如表1所示。 表1 多值认证和单值认证性能比较Table 1 Performance comparison between multi value authentication and single value authentication 对于w生成和验证的时间复杂度,情况①时,多值认证与单值认证相同。情况②时,取时间复杂度最高的情况,多值认证为O(3n/2),而此时单值认证为O(n/2logn),当n>8时,多值认证就优于单值认证,而实际使用中,n会远大于8。情况③时,当n>4时,多值认证会优于单值认证,实际使用中,n会远大于4。 对于w占用空间大小,情况①时,多值认证和单值认证w占用空间相同;情况②时,取多值认证w空间复杂度最高的情况,为bn/2,此时单值认证w空间大小为bn/2logn,当非平衡哈希树叶子节点数大于2时,多值认证更优;情况③时,单值认证的w占用空间大小为nblogn,显然多值认证更优。 综上所述,多值认证相较于单值认证而言,充分利用了各待验证设备的度量信息,极大限度地减少了所需的中间节点哈希值数目和w生成及验证时间。下面以一个例子说明,当树中有设备S={E1,1,E2,1,…,E3,2}时,要 认 证 设 备 版 本E3,1,w应 该含有的 节点经 哈希变 换后为[N0,3,N1,0,N2,1,N3,0];要认证设备版本E2,2,w应该含有的节点经哈希变换后为[N0,2,N1,0,N2,1,N3,0],单值认证两个设备时,w共需要存储8个节点的哈希值,而当批量认证两个设备时,w为[N1,0,N2,1,N3,0],只需存储3个值即可,如图6所示(叶子节点的阴影是上文例子中要验证的设备对应树中的节点,中间节点的阴影是验证叶子节点所需要的中间节点)。 图6 w需包含的节点Fig.6 Nodes to be included in w 为了方便说明,我们将系统涉及的三类实体终端设备E、边缘代理A和云端认证平台P抽象为三个服务器,使用C++语言实现了各实体间的交互。 实验系统使用openssl生成CA的证书,然后用CA分别为三个实体生成自己的证书,这些证书保存在本地。三个实体间通过TCP建立连接并传输信息,通过SSL协议相互验证各自的证书以确定通信对方的身份,随后实体间交互的信息均在该信道内传输。 实验使用C++代码模拟了终端设备E和边缘代理A的轻量级可信认证的过程,使用随机数分别模拟设备的度量值和设备标识cdiE,当A请求获取度量值时,E生成多个不同的设备度量信息pakE,签名并发送给A。当P请求批量认证时,A生成w与自身的pakA,签名并发送给P。考虑到云端平台与边缘代理网络环境的复杂性,信息传输时间差异较大,为了简便,实验中的批量认证效率仅考虑边缘代理w生成过程和云端平台w验证过程,忽略w在网络中传输所耗时间。 实验在边缘代理定义了非平衡哈希树及其节点的结构,该非平衡哈希树被用来存储设备的度量信息pakE,同时该树会以xml的格式持久化存储到边缘代理的磁盘中。该非平衡哈希树实现了第2节中介绍的几种功能。 本节通过实验比较了电力物联网持续批量认证机制在使用多值认证和单值认证时的效率。实验运行的物理机为Windows10专业版64位操作系统,处理器为Intel(R)Core(TM)i5-7200U CPU@2.50 GHz,系统内存8 GB,虚拟机为VMware Workstation 15 Pro下的Ubuntu18.04,系统内存2 GB。考虑到边缘代理的资源限制,实验将单个边缘代理管理的终端设备数目设置为212个,将非平衡树中叶子节点数目n固定为214个,分别选取待验证节点集合S数目为{1,2,4,8,16,32,48,64,80,96,112,128}。本文分别比较了多值认证和单值认证在进行w生成和验证时消耗的时间,以及w的大小,w大小用其包含的节点哈希数目来表示。实验对每组待验证集合测试了100次取平均值,得出的数据如图7所示。从图7中可以看出,多值认证在w生成和验证时明显优于单值认证,且随着待验证节点数目的增加,多值认证的优势越来越明显,符合第4.2节中的分析。同时w包含的验证所需节点哈希数目也明显优于单值认证。 图7 单值认证和多值认证效率分析Fig.7 Efficiency analysis of single value authentication and multivalue authentication 综上所述,采用多值认证性能获得很大的提升。另外,我们也注意到,当待验证节点数目不断增大时,多值认证尽管优于单值认证,但其所耗时间的增长幅度也较大。所以实际应用中,应当控制非平衡哈希树中的叶子节点数目,不让一个边缘代理负载过多终端设备,以保证云端平台在可接受的验证时间内进行批量认证。 本文针对电力物联网设备特点,提出了一种设备持续高效批量可信认证机制。该机制使用一棵非平衡哈希树存储设备各个历史度量信息,当树达到存储上限时,借助一个特殊的多链和哈希表快速找到待替换的树节点。度量信息认证时,采用一种更高效的稀疏哈希树多值认证的方法实现,提高了多路径信息的生成效率。本文模拟了该机制并进行了实验比较分析,实验表明,本方案采用的稀疏哈希树多值认证方法可以使性能得到很大的提升。3.2 批量认证
4 安全性分析与性能分析
4.1 安全性分析
4.2 性能分析
5 实验分析
5.1 实验系统
5.2 认证效率分析
6 结语