轻量级认证账本设计
账本作为区块链中的核心功能,其结构设计不仅要满足特定需求,还要能够支持分布式数据存储。比特币的账本结构较以太坊和HyperLedger Fabric更为简略,比特币数据块(Block)结构包括 {magic_number,block_size,block_header,transaction_cnt,transaction},magic_number是区块之间的分隔符,其值为 0xD9B4BEF9;block_size是区块大小;block_header是区块头,其中包含版本号、上一区块的哈希值、Merkle根节点哈希值、时间戳、难度值、随机数;transaction_cnt是交易数量;transaction是交易详情。以太坊账本结构中除了交易树外,还引入了状态树和收据树。Fabric 的结构与以太坊类似,但为了提升查找效率,在数据库设计上进行了改进。本文方案应用于移动自组网,节点资源受限,因此账本需要轻量化。构建和保存认证节点的区块链结构被称为认证信息链,结构如图2所示。参考比特币账本结构,轻量化设计体现在以下3方面。2) 由于不采用工作量证明(PoW,proof of work)共识算法,相应的字段予以删除。3) 分隔符采用重复概率低的编码方案,可用1个字节表示,提升识别速度,减少存储开销。具体来说,认证信息链由首尾相连的区块构成,以第N块区块为例,完整的区块包括区块头和区块体,区块头保存区块的元数据{前一区块hash,认证信息MPT Root hash,时间戳},相应的字节长度分别是32 B、32 B和4 B,总计68 B。区块体内容包括{分隔符,区块大小,认证详情},长度分别是1 B、4 B和可变长度。其中,认证详情中存储{索引index,共识结果Proof},共识结果中保存参与共识的节点回复消息,用于后续追踪恶意节点。
共识算法
共识是指通过消息传递使系统中所有节点均以相同顺序执行一个命令序列,即保证全网各节点数据记录一致性。在实际环境中,节点可能出错产生异常行为,或者消息无法被正确传递,也可能存在恶意节点使系统无法达成一致。由此产生的容错问题分为两类:宕机容错(CFT,crash fault tolerant),是指无恶意节点情况下的容错;拜占庭容错(BFT,Byzantine fault tolerant),即有恶意节点情况下的容错。移动自组网中虽然因无线信道和网络拓扑动态变化会引起 CFT 类问题,但本文方案主要解决安全类问题,希望通过区块链技术能够追踪恶意节点,因此共识算法采用改进的实用拜占庭容错 PBFT 算法,称之为MANETBFT。PBFT 通过准备和确认两大阶段的消息同步,在节点数量较小情况下,可以实现高交易量(TPS, transaction per second)且分叉概率很低。将PBFT应用于移动自组网认证,需要解决以下问题。1) 请求认证的节点只能利用公共信道与相邻的P2P网络节点通信。针对问题1),MANETBFT在P2P节点中增加了认证代理身份,设发起认证请求的普通节点集,vi先将REQUEST消息发送至相邻节点之一的P2P节点auk,该auk则成为代理,在代理和其他剩余P2P共识节点中执行PBFT流程,如果auk收到的Reply消息确认了申请节点的认证请求,则更新账本,并将Reply和最新的账本返回给vi,节点身份变更为Vau元素。针对问题2),依据PT表计算,即t时刻的P2P节点总数,也就是此时刻参与MANETBFT共识的全部节点数。通过引入变量,在每一轮共识过程中,PBFT 算法中代表节点数量的参数,以适应本场景需求。问题3)多节点同时请求认证,分两种情况:一是多个普通节点在同一时刻分别发起各自的代理进行共识,这种情况 PBFT 采用<客户端 ID,时间戳,序列号>信息进行区分;二是多个普通节点申请的代理节点相同,本文以异步方式进行共识处理,并结合全网账本信息同步过程实现数据的一致性。图3中以1个普通节点和4个P2P网络节点为例,说明MANETBFT的消息类型和处理流程。具体的消息类型如下。<REQUEST,o,t,c>其中,o是申请认证,t是发起请求的时间戳,c是客户端标识。<REQUESTPROXY,o,t,p>其中,o是申请认证,t是发起请求的时间戳,p是代理客户端标识。<< PRE-PREPARE,v,n,d>,m>其中,v是视图编号,n是对REQUEST分配的序列号,d是客户端消息摘要,m是客户端的请求内容。<PREPARE,v,n,d,i>其中,v,n,d同上,i是共识节点编号。<COMMIT,v,n,d,i>参数意义同PREPARE。<REPLYPROXY,v,t,p,i,r>其中,r是操作结果。<REPLY,v,t,c,i,r>其中,r是操作结果。1) 待认证的普通节点vi在自己的邻居节点表中选择一个P2P节点作为其代理节点auk。2) au k收到来自vi发出的 REQUEST 消息后,建立与之对应的带有自己代理客户端标识 p的消息映射对,并向共识节点中的主节点发送REQUESTPROXY消息。3) 主节点和对等节点A、对等节点B、代理节点auk 间按照 PBFT 的消息处理流程,从PRE-PREPARE 消息发送、接收、处理,到PREPARE消息;再经过交换COMMIT消息,最终每个 P2P 节点会把自己对本次请求的结果写入REPLYPROXY消息,返回给auk这个代理客户端。4) auk检查收到的 REPLY,如果有 f+1 个具有不同签名且t和r都相同的回复时,证明客户端的请求已达到全网共识。其中,f是恶意节点数量。5) au k通过映射的 REPLY 消息向 vi回复共识结果。
认证流程及性能分析
图4 是待认证普通节点 vi的认证过程状态机,图5是P2P网络节点相应的状态机。通过对两类节点状态机的分析,完整展示本文方案。对于待认证的普通节点vi,处理流程包括{准备,等待,确认}3类状态。准备状态中节点发出REQUEST 消息;设置等待状态,除了考虑异常情况外,还出于流程和程序扩展的考量;确认状态中输入是节点接收到的REPLY消息,根据消息中携带的认证通过或认证失败确认本次认证结果并结束认证流程。vi的认证需要在P2P节点共识基础上完成,因此认证流程还包括如图5 所示的运行于各个P2P 节点的状态机。作为自组网成员节点,图3中涉及的代理节点、主节点、对等节点的功能是每个P2P网络节点都要具备的,结合共识消息, P2P节点状态包括{代理请求,主节点,对等节点,共识,回复,代理确认},状态的输入不限于来自本节点上一状态的输出,如“共识”状态的输入消息“PREPARE”,既可以是来自本节点的“对等节点状态输出”,也可以是其他P2P节点的“对等节点状态输出”。每个状态都设置了定时退回到上一状态的机制,以避免因MANET拓扑变化或恶意认证导致的消息长时间等待。在2.3节中提到MANETPBFT通过引入Ntall解决因新加入的P2P节点而产生的参与共识节点总数变化的问题。在图5中“代理确认”状态中的统计操作涉及该变量,代理根据收到的 f +1个具有不同签名且 t 和 r 都相同的回复REPLYPROXY 产生对认证请求的应答,这里 f是恶意节点数量。认证结果以及相应的共识节点回复作为上链数据由代理节点写入区块链。如果vi通过认证,其节点属性将变更为auk,它将从代理节点处获取完整的区块链,并更新值。P2P 节点间的账本数据一致性操作可采用周期性广播方式进行。本文基于该认证方案,分析 MANET 规模与认证时间δ间的关系。设<vi,代理节点>间 REQUEST 消息传输时延为τ1,<代理节点,主节点 > 间REQUESTPROXY消息传输时延为τ2,<主节点对等节点>间PRE-PREPARE消息传输时延为τ3<对等节点,主节点或对等节点>间PREPARE消息传输时延为τ4,<对等节点,主节点或对等节点>间 COMMIT 消息传输时延为τ5,<主节点或对等节点,代理节点>间REPLYPROXY消息传输时延为τ6,<代理节点,vi>间REPLY消息传输时延为τ7,其中,每一类消息在两个相邻P2P节点间传输一次所需时延分别用τrequest、τrequestproxy、τpre-prepare、τprepare、τcommit、τreplyproxy和τreply表示,根据认证流程可得
不失一般性,设该MANET网络中构成的P2P节点对之间最大传输时延为τmax,可推出
由于式(2)中认证时间δ的上下边界只是对MANET 节点数量进行范围估计,所以此处没有进行严格的分析推导。如果考虑无线信道、链路层协议、路由协议、节点运动模型等因素,可以建模和分析出更为精准的端到端时延条件下, 与δ间的关系。通过该结论,可以估计MANET 规模或者评估认证时间范围,有助于网络设计或认证方案选择。根据式(2),当对节点认证时间δ有指标要求,在已知τmax时,可以估计出 MANET 节点数量的范围。例如,假设已知τmax=100 ms,δ≤1 s时, ,即假设P2P节点对间的最大传输时延是100 ms,如果对节点的认证时间要求在1 s以内,则采用本文认证方案的MANET节点数量应控制在 3~9 个内。也可以在已知τmax和节点数量的情况下,对δ进行估计,如τmax仍然假设为100 ms,取6,则此时节点认证时间δ的范围是[0.9 s,2.1 s]。本文算法的性能分析如表1所示,待认证普通节点向其代理节点发送单播消息REQUEST,并等待接收REPLY消息。假设此时网络中有α个待认证节点,则此阶段通信开销为O(α);P2P 节点通过5种消息完成请求、共识和应答,其中,共识过程采用广播方式,在α个待认证节点情况下,其消息复杂度达到了。认证时间复杂度由通信所需时间和节点共识计算时间决定。设每次广播需要的时间为O( )τ,通信时间复杂度为。节点计算时间开销集中在区块查询和插入,采用MerkleTree的时间复杂度为O(logN),N为字符串长度。综上,认证时间复杂度的主要影响因素还是通信时间,故上界为。
系统安全模型与安全性分析
MANET 应用以军事、应急通信等需要高可信环境的场景为主。本文方案以节点硬件信息和口令作为注册身份信息,MANET 成员已预存组网的全部节点身份信息。注册节点通过加密算法(如SM2)产生私钥dA和公钥PA,dA加密存储于本地。通过哈希算法(如SHA-256或SM3)对身份信息进行哈希运算得到身份哈希值 HID。采用签名算法对HID和注册时间戳TReg进行签名,得到注册身份签名值 SIGReg。将消息封装在REQUEST消息中发送至代理P2P 节点。代理 P2P 节点计算用户的 HID,通过PA计算验证SIGReg。若验证通过,则用哈希算法(如SHA-256或SM3)对PA进行计算,生成区块地址,作为该节点的身份认证区块标识,在该区块体中记录用户的HID,TReg,SIGReg。通过共识机制确认后,代理节点将该区块加入区块链中,并给待认证节点回复REPLY。移动自组网节点的注册过程包含首次认证,如需再次登录认证,执行过程是节点使用 dA对HID与时间戳TA进行实时签名,产生动态身份签名值SIGDyn。节点将消息封装在REQUEST中发送给P2P代理节点。P2P节点通过 TA判断消息时效性,使用 PA计算验证动态身份签名值SIG Dyn,签名验证通过后,通过PA计算区块地址,访问身份认证区块,对比消息中包含的HID和区块中的HID,计算验证SIGDyn,从而确定认证节点身份是否合法。本文认证方案中的安全模型将传统集中式认证服务器或者CA三方认证模式,通过区块链技术转变为分布式、无中心的多方参与模型,并与MANET 组网过程结合,为有预先组织设置、高可信要求的应用场景提供了安全的认证方案。常见的攻击方法包括网络侦听、重放攻击、口令猜测、跟踪地址攻击等,传统认证方式还面临单点失效和多CA信任难的问题。本文方案采用区块链技术,从而具有了以下几方面安全性。1) 无中心化:通过MANET节点共同参与认证,并将密态账本信息在各节点中同步,可有效实现认证功能从集中式转变为分布式;待认证节点可以从相邻的P2P节点直接发起认证请求,在避免单点失效、多CA信任难问题的同时,能够实现快速认证接入。2) 防篡改:经过共识后的认证信息记录在区块链中,具有严格顺序关系的链式结构以及父/子哈希值变动关联的特性,保证了链上数据的不可篡改性。3) 恶意节点追踪:每个参与共识过程的P2P节点将回复信息返回给主节点后,根据方案设计,结果值会记录在区块体中,如果网络中存在恶意节点,根据区块链的不可篡改性,其操作和时间戳信息都可通过链中信息进行溯源,从而实现恶意节点追踪功能。4) 防欺骗伪造:采用改进的PBFT,MANET内部最大节点欺骗个数是总节点数的;对于外部攻击,假设攻击者掌握用户的身份哈希值,但因其不具备用户私钥,无法对消息进行签名,因此无法伪造用户的动态身份签名值。在上述两种状态下,认证过程具有一定的防欺骗和伪造攻击能力。5) 抗重放攻击:在认证过程中,每次传送的消息都包含了时间戳信息。由于每个区块头中包含时间戳和随机数,如果攻击者将消息重放,收方可通过时间戳判断该消息为重放消息,拒绝其认证请求。由此可以有效防止创建区块过程中的重放攻击。6) 可靠性:分布式账本是一种分布式数据库,即使网络中某个节点损坏,也不影响全网账本的高可用性,且同时满足账本失效转移同步和备份恢复等安全要求。
智能合约讨论
智能合约是一种在满足特定条件时,自动执行的计算机程序。它是代码和数据的集合,可以部署在区块链网络上运行。其可事先制订规则,让网络中节点按照规则完成预先设计好的合约功能。节点或者用户的认证过程通常同时包含授权功能,触发/执行条件不同、权限等级不同、这些需求都可以在智能合约中设计和实现。另外,通过智能合约,还可以考虑对权限定义中的一部分操作(如对不同等级命令的执行)实现自动执行关联,以减少人为控制带来的风险。本文方案侧重区块链技术在MANET节点认证中的应用,从轻量化角度出发,认证流程中不引入智能合约技术。对授权的设计是下一步工作。
结束语
本文通过国内外文献首先分析了区块链技术与移动自组网结合的现状。MANET的自组织特性具有和区块链基础结构对等网络天然融合的优势,但自组网的动态性、资源受限又对冗余度高的区块链技术方案设计提出了挑战。针对可信环境要求高的 MANET 场景,本文提出了一种基于区块链的轻量化节点认证方案,详细说明了跨层对等网络 P2P 生成算法、认证账本设计、基于 PBFT 的适应性改进共识算法,并给出了状态机描述的节点认证流程。通过消息分发流程的分析,估算了当给定对等节点之间最大传输时延τmax时,节点认证时间δ和网络规模间的关系是。作为区块链核心技术之一的智能合约技术,本文规划了其应用于授权权限管理的方向,并将作为下一阶段的工作重点继续推进区块链技术在 MANET网络中的应用。