基于联盟链的指挥信息系统数据保护研究
2021-10-28陈传坤谷立祥颜廷贵
陈传坤,谷立祥,颜廷贵
(1.北京宇航系统工程研究所,北京 100076; 2.中国运载火箭技术研究院,北京 100076)
0 引 言
在信息化时代背景下,指挥信息系统正向网络中心化方向快速发展,作为指控指令、情报、作战平台状态等军事信息获取、传递、处理、分析的统一平台,指挥信息系统连接地理上分布的作战单元,将作战信息集中于网络,能够保障各作战单元间有效的数据交互与共享。但随着信息化程度的提高,其应用服务、数据、终端不断增加,面对当前日益复杂的网络攻击,指挥信息系统的数据安全问题日渐严峻。目前,指挥信息系统主要依靠中心化架构实现,一旦中心化服务器被攻击,系统将面临数据篡改和泄漏的风险,同时,中心化架构难以有效满足分布式、网络化作战的需求[1]。以防火墙、访问控制为代表的传统安全手段可控性较差,安全管理效率较低,难以有效保障系统的数据安全[2]。
作为近期引起广泛关注的新兴技术,区块链技术具有去中心化、去信任化、集体维护、数据不可篡改和可追溯等优势[3],契合指挥信息系统对数据保护提出的数据可信、可审计追踪、分布式存储与验证等要求。然而,在区块链系统中,各参与方以对等节点的形式参与区块链维护,且都拥有全局账本,这使得数据保护无法利用传统的中心化方式解决,因此,如何将区块链的原生优势与数据保护进行有效结合是当前指挥信息系统面临的一大难题[4]。文中对当前基于区块链的数据保护方案进行了研究,分析了适用于指挥信息系统的区块链方案,设计并实现了基于混合加密的数据保护智能合约,搭建了基于联盟链的指挥信息系统进行方案验证,结果证明该方案能够实现细粒度的数据保护,并可以高效地进行机密数据的授权共享。
1 相关工作
数据保护的核心在于对数据进行完整性和机密性保护,得益于区块链在数据安全可信方面的原生优势,相关技术现已被广泛应用于多种数据保护场景中。目前,基于区块链的数据保护方案可分为以下四类。
(1)明文上链:交易数据明文记录在区块链上,利用区块只增不减、历史区块不可篡改的特性实现数据的完整性保护,该方案主要应用在以比特币(Bitcoin)[5]、以太坊(Ethereum)[6]为代表的区块链平台上。赵赫等人将该方案应用于采样机器人系统,保证数据记录的真实性、完整性[7];Enis等人提出了基于区块链的空域指挥控制系统,以保障情报数据真实可信[8]。这种方案的缺点是链上明文数据对其他节点可见,无法对数据共享进行有效控制,进而无法保证数据的机密性,存在极大的数据泄露风险[9]。
(2)对称加密上链:数据在链下经对称加密后上传至区块链存储,加密密钥由节点自身或密钥管理中心存储。文献[10-12]中的区块链系统均采用本方案对隐私数据进行有效保护。该方案中,由于区块链仅存储密文,数据的完整性和机密性都能够得到有效保障,但数据共享需要在链下进行密钥传输,共享过程不透明,无法对该过程进行有效追溯和审计,因此,该方案依然存在数据泄露的风险。
(3)非对称加密上链:数据上传节点利用接收节点公钥对数据进行非对称加密后上传至区块链存储,文献[13-14]应用该方案对医疗数据进行隐私保护,以避免患者隐私被非法利用。该方案能够有效实现数据的完整性、机密性保护,数据共享结果可追溯,但其缺点是非对称加密算法加密效率低,与多个节点共享数据时需进行多次加密计算,系统性能难以保证。
(4)数据哈希上链:仅将数据哈希值存储在区块链上,原始数据以哈希值为索引加密存储在链下数据库中。目前,大多数针对文档的数据保护系统[15-16]采用此方案。该方案的优点是数据存储与管理分离,系统性能通常较高,但由于区块链不存储原始数据,无法充分发挥区块链的去中心化优势,一旦链下数据发生丢失或篡改,原始数据无法恢复。
2 系统设计
2.1 区块链选型
区块链技术是一种将数据以区块形式存储并链式连接的分布式数据库技术,以P2P(peer-to-peer)网络作为底层通信载体,利用密码学保障数据隐私,并依靠分布式共识机制保障数据一致性[17]。目前,按照节点记账权的归属,区块链的应用模式可分为公有链、私有链和联盟链:
(1)公有链:完全去中心化,任何节点都拥有记账权,并能够自由进出区块链网络,利用PoW(proof of work)等共识机制维护区块链的数据一致性,交易吞吐率最低(比特币约为7 TPS)且交易确认时间长[18];
(2)私有链:仅运行于组织机构内部,新区块由特定节点生成,数据读写权限仅向内部节点开放,利用中心化程度较高的共识机制大幅缩短交易确认时间,提升交易吞吐率;
(3)联盟链:作为公有链和私有链的中间态,联盟链运行于多个组织之上,节点进入网络前需经过认证许可,通常采用拜占庭容错的共识机制,由多个成员共同参与共识过程,交易吞吐率可达2 000 TPS且交易确认时间可控制在毫秒级[19]。
作为军事作战的核心要素,指挥信息系统应保证系统内部存储和传输的数据安全可信,具体地,有以下的数据保护需求:(1)数据不可被恶意篡改;(2)数据来源可追溯;(3)支持数据的授权共享,对非授权节点隔离;(4)数据完整性可验证;(5)数据分布式存储;(6)数据处理效率高。综上,联盟链呈现出多中心化的特征,能够较好地平衡区块链的安全性和系统性能。而Hyperledger Fabric[20]作为当前应用最为广泛的企业级联盟链,具有节点授权准入、实名身份认证、高性能共识机制等特点,结合可编程的数据保护智能合约,Fabric能够有效满足指挥信息系统对数据安全保护的需求,因此,文中选择采用联盟链Hyperledger Fabric作为系统的区块链实现平台。
2.2 系统架构
基于联盟链的指挥信息系统整体架构如图1所示,由用户层、智能合约层、区块链层协同实现:用户层的各个组织节点参与联盟链的管理,调用智能合约接口与对应的合约交互;智能合约层利用其可编程特性,对数据及其访问控制实施灵活的配置和管理;区块链层利用历史区块的不可篡改性,为加密数据的存储与共享提供支撑。
图1 基于联盟链的指挥信息系统整体架构
为了便于分析,文中抽象出系统用户层模型。如图2所示,用户层由一个指挥控制中心、两个预警探测节点、两个次级指控中心和附属于次级指控中心的四个作战平台节点构成。其中,预警探测节点主要由预警雷达、预警机和侦查卫星构成,负责为指挥控制中心生成情报信息;指挥控制中心一般为固定指挥所,负责战场信息的接收、处理和指挥决策下达;次级指控中心通常由移动指挥车组成,主要任务是根据指挥控制中心下达的任务要求求解火控数据;作战平台节点由火力单元构成,负责依据火控数据实施具体的作战任务。两类指控中心和预警探测节点通常具有较强的计算、存储性能以及较高的带宽,能够作为联盟链的Peer(对等)节点,存储全部区块链数据并响应客户端请求,其他节点仅作为客户端节点向Peer节点发送请求。
图2 系统用户层模型
由于指挥信息系统的数据机密性较高,针对不同类型节点应提供不同的数据访问策略,文中建立了记录不同类型数据的三条独立通道:(1)情报通道,维护情报类数据,数据仅在指挥控制中心和预警探测节点内部共享;(2)指控通道,维护指控指令类、作战平台状态类数据,仅对指挥控制中心与次级指挥控制中心可见;(3)共享数据通道,记录所有节点共享的全局数据。每条通道维护一条独立的区块链,从而保证数据对通道内节点共享、对外隔离。
2.3 合约设计
作为数据保护方案的核心,可编程智能合约利用混合加密的方式支持数据的高效加密与授权共享,从而在通道相互独立的基础上,以单条数据的粒度保障机密性。文中的智能合约由加密密钥控制合约、数据共享与保护合约两部分构成。
2.3.1 加密密钥控制合约
加密密钥控制合约主要负责用户非对称加密密钥的注册与控制,包括密钥申请模块、密钥更改模块和密钥撤回模块,该合约仅由指挥控制中心节点审核执行,以保证指挥控制中心作为最高权限机构的权威性。非对称加密采用NTRU算法[21],相较于传统的ECC和RSA算法,NTRU算法具有计算量小、硬件资源要求低、安全强度高的特点,加解密速度可达ECC和RSA算法的20倍以上[22]。
密钥申请模块为用户生成全局唯一的身份标识以及对应的NTRU密钥对
2.3.2 数据共享与保护合约
数据共享与保护合约包括数据共享存储模块和数据获取模块。其中,数据共享存储模块流程如算法1所示,用户将原始数据data和接收节点列表List
算法1:dataUpload(data,List
1: ownId=getCreator()
2:hash=sha256(data)
3:dataId=getDataId()
4:key=AES.generateKey()
5:for recId:List
6:pubKey=getState(composUser(recId))
7:if pubKey==nil
8:return userNotExistError()
9:end if
10:encryptKey=NTRUencrypt(key,pubKey)
11:putState(composKey(dataId,recId),encryptKey)
12:end for
13:cipher=AESencrypt(data,key)
14:dataJson=jsonify(ownId,cipher,hash,List
15:putState(composData(dataId),dataJSON)
16:return dataId
数据获取流程如算法2所示,客户端节点将包含目标数据标识的请求签名后发送至智能合约处理,在验证节点证书通过后,该模块获取节点标识targetId,并在区块链中查询得到数据标识dataId对应的数据对象dataJSON,验证请求节点标识是否在数据对象的接收节点列表中,若为否,则返回拒绝访问错误。最后,根据dataId和targetId获取加密后的对称密钥,并将密文cipher、被公钥加密的密钥encryKey以及原始数据哈希hash返回请求节点。
算法2:dataAccess(dataId)
1: targetId=getCreator()
2:dataJSON=getState(composData(dataId))
3:if dataJSON==nil
4:return dataNotFoundError()
5:end if
6: parse(dataJSON,ownId,cipher,hash,List
7:if validateAuthority(List
8:return PermissionDeniedError()
9:end if
10:encryKey=getState(composKey(dataId, targetId))
11:return cipher,encryKey,hash
客户端节点收到数据获取模块返回的数据后,执行算法3对数据解密并进行完整性验证,客户端节点利用本地存储的私钥priKey对encryKey解密后得到对称密钥key,利用对称解密算法解密cipher得到plainText并计算其哈希值dataHash,若与区块链中记录的哈希值hash不一致,则说明数据曾被篡改过,报告哈希验证错误,否则,返回正常的解密数据。
算法3::decryptAndVerify(cipher,encryKey,hash)
1: priKey=NTRU.getPrivateKey()
2:key=NTRUdeceypt(encryKey,priKey)
3:plainText=AESdecrypt(cipher,key)
4:dataHash=sha256(plainText)
5:if dataHash!=hash
6: return hashVerificationError()
7:end if
8:return plainText
与现有的数据保护方案相比,文中基于混合加密的数据保护方案有以下优势:(1)全部数据加密上链,充分发挥区块链分布式、不可篡改的优势;(2)充分利用对称加密速度快与非对称加密算法安全强度大的特点,满足指挥信息系统在数据处理速度方面的需求;(3)每条数据对应一个对称密钥,可有效防止数据大规模泄露;(4)数据共享信息存储于区块链上,从而保证信息透明、可审计追溯;(5)指挥控制中心负责管理所有节点的加密密钥,从而保证其作为指挥控制中枢的权威。
3 系统实现
系统方案实现由三部分构成:Fabric网络环境搭建、多通道配置和智能合约实现。下面将介绍各部分的具体实现。
3.1 网络环境搭建
Fabric网络提供了联盟区块链系统的核心服务:(1)区块链服务,维护各通道对应的区块链,并根据区块链的历史交易数据更新最新数据状态;(2)智能合约服务,为智能合约运行提供安全、隔离且轻量化的Docker运行环境;(3)成员管理服务,利用公钥基础设施实现节点的身份证书创建、管理以及交易的签名验证;(4)共识服务,接收并验证各通道的交易请求,并将其打包为区块返回至各个通道。在以上基础服务之上,文中根据图2用户层模型搭建Fabric网络环境,编写YAML配置文件定义各个组织的属性,具体属性如表1所示。
表1 指挥信息系统组织信息
各组织生成一个Peer节点参与区块链管理并存储全部区块数据,同时,每个组织包含一个代表自身的客户端节点用于调用智能合约,作战平台节点受限于硬件资源,仅作为次级指控中心的客户端节点参与到网络中。最后,利用Fabric编译工具cryptogen和configtxgen生成各组织节点的证书文件、系统的创世区块以及通道配置区块等信息。
3.2 多通道配置
为了对机密数据实行访问控制,利用配置文件将系统组织划分为三个相互独立的通道,各通道配置如表2所示。其中,情报通道包含指挥控制中心和两个预警探测节点,情报数据仅在这三个组织内流通,次级指挥控制中心没有权限也无需存储情报通道数据,从而降低存储和带宽的需求;同理,指控通道包含指挥控制中心和两个次级指挥控制中心;共享数据通道包含所有组织以实现全局通用数据的共享。每个通道内均有多个组织对数据进行分布式存储,从而保障系统有较强的抗毁伤能力,有效避免单点失效问题。
表2 通道配置信息
3.3 智能合约开发
文中使用Go语言实现上述智能合约,在完成通道配置后,任一客户端节点可调用智能合约的instantiate方法在所属通道内对合约进行实例化,并调用Init方法初始化合约。在完成上述过程后,区块链网络搭建完成,客户端节点可调用Invoke方法执行对应的智能合约。
4 结果与分析
本系统的环境搭建工作在VMware虚拟机内完成,虚拟机的配置如下:操作系统为Ubuntu16.04,处理器数量为1,内存为2 GB,硬盘容量为20 GB。
4.1 系统交互
下面以情报通道为例,对智能合约的主要功能进行测试。预警探测节点OrgInfo1调用密钥申请模块注册加密密钥,结果如图3所示。
图3 密钥申请模块调用结果
预警探测节点OrgInfo1发现敌方目标后,将目标类型、坐标、速度等信息封装为合约参数,调用数据共享存储模块,并将数据设置为与OrgCC共享,调用结果如图4所示。通道内的OrgCC节点调用数据获取模块并对结果进行解密,可获取相关情报数据,最终调用结果如图5所示。
图4 数据共享存储模块调用结果
图5 数据获取存储模块调用成功
通道内的OrgInfo2节点不在该数据的共享节点列表中,因此,没有该数据的访问权限,调用数据获取模块会导致失败,其结果如图6所示。
图6 数据获取存储模块调用失败
4.2 性能分析
由于加密密钥控制合约调用次数较少,因此,以下性能分析主要集中于数据共享与保护合约上。图7展示了系统执行多次数据共享存储和数据获取请求的响应延迟。整体上,共享存储请求的响应延迟高于数据获取请求的延迟,这主要是因为执行共享存储请求时会生成用于存储数据的新区块,区块的生成以及在各节点间的同步需消耗一定的时间,而数据获取请求仅需在Peer节点中执行查询操作,不存在生成新区块的时间开销,响应更快。对于共享存储请求,系统的响应延迟稳定在0.15 s至0.25 s,平均响应时间为0.198 s;数据获取请求的响应延迟在0.1 s至0.15 s间波动,平均响应延迟为0.126 s,数据写入和读取请求都能够得到较快的系统响应。因此,系统中各节点能够快速地将战场信息上传至区块链,通道内的其他节点可以及时跟踪所需信息,保障战场环境下的数据安全可信。
图7 区块链请求响应延迟
指挥信息系统的部分节点硬件资源性能受限,因此,文中测试了各节点以及链码的Docker容器内存开销,在各通道执行1 000次数据存储合约调用后,具体的内存占用情况如表3所示。其中,所有Peer节点容器所占用的内存均小于50 MB,客户端容器、链码容器的内存占用分别小于2 MB和8 MB,因此,本系统可运行在无人机等小型便携计算设备上,从而进一步拓展信息广度和维度,保障战场的多域信息协同。
表3 节点容器内存占用情况
续表3
5 结束语
针对目前指挥信息系统存在的数据安全难以有效保障的问题,提出了基于联盟链的指挥信息系统数据保护方案。方案在Fabric的基础上,搭建了小型指挥信息系统网络,依靠Fabric节点授权准入、通道相互隔离等特性,极大地避免了非授权节点的入侵。同时,为了对数据安全进行细粒度控制,开发了基于混合加密的数据保护智能合约,数据与加密密钥一一对应,防止数据大规模泄漏,且数据授权共享结果可追溯审计,有效地提高了数据的安全性。测试结果显示,系统对请求的响应延迟在0.25 s内;客户端节点和Peer节点所占用内存空间分别小于2 MB和50 MB,说明本系统可运行在性能受限的小型计算设备上,有利于信息的多域协同。综上,区块链技术与指挥信息系统的结合,能够保障数据的机密性、完整性,满足指挥信息系统数据安全保护的需求。文中是区块链应用于指挥信息系统上的初步探索,下一步将继续完善区块链在该领域的工程应用,提升系统的扩展性,为指挥信息系统提供更高效、安全的数据保护平台。