郑智健,郑 清,杰林钒
(莆田市气象局,福建 莆田 351100)
随着大数据和云计算技术的流行,气象信息化的发展也在不断加速,气象事业的发展得到进一步提升。其中,气象部门与各行业之间的数据共享,使得气象数据的应用早已融入到日常生活。可以说气象数据是气象部门的立业之基,也是国家安全重要元素,其安全与稳定关乎经济社会的正常运行[1]。然而,中心式存储极易导致数据被泄露或被篡改,且因具备融合的特性,在数据共享的过程中一旦出现问题,整个气象业务体系必然遭受影响,进而影响气象服务保障水平。
区块链技术本质上是一种去中心化的分布式数据库,具有可溯源、数据防篡改、唯一性等独特优势,能够实现不可信节点之间的数据传递,预示其在数据共享和数据安全领域具有广泛的应用前景[2]。Sim等人[3]设计并实现了一种基于区块链的物联网大数据完整性验证系统,通过对来自物联网设备的数据和签名密钥进行多个区块链分组,最大限度地减少数据丢失。Kaaniche等人[4]提出基于区块链的数据使用审计机制,依赖部署在区块链基础设施中的可审计合同,确保数据共享的可用性。上述研究虽然在一定程度上缓解了数据存储的不足,但却没有考虑到数据隐私性和加密性问题。同时,有实验研究表明,区块链的匿名性是一种假名性[5],不足以完整地保护用户数据信息。此外,区块链上的数据无法进行修改与删除,当有恶意的攻击者将非法信息写入链上,极易构成巨大危险,使区块链的数据安全受到挑战。
为此,研究者对区块链中的数据加密保护能力进行深入探索。可搜索加密[6]是区块链隐私保护技术之一,将其与区块链技术结合在一起,解决了第三方可信问题,促进了数据之间协作共享。鉴于此,本文提出了一种基于可搜索加密的区块链气象数据保护方案,引入智能合约[7]作为可信方,既保证了方案的可信度,又提高了可搜索加密的可实现性。
可搜索加密是一种为了解决云存储环境下加密数据检索困难问题,实现用户基于密文关键词安全搜索的技术。传统的明文搜索易被获取到数据信息,而可搜索加密技术可以通过密钥对加密数据的关键词进行搜索,使得用户无法通过关键词获取到明文数据。可搜索加密按照加、解密密钥的不同,可以分成两类:对称可搜索加密和非对称可搜索加密。对称可搜索加密使用相同的私钥密钥进行加密和关键词搜索,具有算法相对简单、运算速度快的优势。非对称可搜索加密则是使用公钥和私钥两种不同密钥,通常公钥的拥有者会对明文数据进行加密,私钥的拥有者执行搜索算法进行关键词检索。虽然过程较为复杂,但是公钥和私钥相互分离的特点,对于实现区块链数据共享具有较高的实用性。因此,本文采用非对称可搜索加密技术。
1995年,学者尼克首次提出智能合约的概念,其认为智能合约的本质是一种能够自动执行协议的计算机代码。智能合约因具有图灵完备的特性,加之缺乏可信执行环境,未曾受到研究学者的关注。直到新兴区块链平台的出现,才将智能合约由概念逐步转化为实际应用。由于区块链自身具有可溯源、数据防篡改、唯一性等独特优势,避免了智能合约受到伪造和篡改,确保了整个过程的透明、高效、不受干预。同时,智能合约作为区块链中的核心要素,当满足一定的预定规则时,区块链会自动触发预设协议完成操作。此外,智能合约通过加密算法可以设置两方或多方之间访问权限的协议。虽然目前智能合约仍处在发展的初级阶段,但是基于智能合约的应用提高了信息传输效率,降低了管理维护的成本,使得区块链技术具有广泛的应用前景。
可搜索加密的区块链气象数据保护方法是利用可搜索加密技术对气象数据进行加密保护,并使用区块链存储加密后的数据,防止气象数据泄露。因此,本文采取层次化结构设计了区块链中的气象数据保护模型。如图1所示,该模型的基本框架划分为3层:区块链层、数据层和用户层。
图1 方案模型
2.1.1 区块链层
区块链层主要用于区块链上气象数据的写入和读取,以及气象数据的共享交换。链上的智能合约在接收到用户请求参数后,执行其业务逻辑,将气象数据信息存入区块链,并将需要记录数据信息的哈希值存放在对应结构里,保证了不论发生任何变化,气象数据都能被区块链记录保存。同时,引入可搜索加密对关键词进行搜索,可以有效地提高用户搜索速度,提升检索效率。
2.1.2 数据层
数据层主要对气象数据进行处理。首先利用可搜索加密算法对气象数据进行加密,并构建安全索引,然后通过区块链上的节点执行共识算法,最终形成块数据上传至数据库存储。
2.1.3 用户层
用户层主要进行气象数据的查找与质控。当用户查找气象数据时,先通过可搜索加密算法生成密钥,再发送给链上的共识节点提出查找请求,链上节点收到请求后执行密文数据查找,并返回解密后的明文数据。与此同时,用户还可以进行哈希运算,查验气象数据是否被篡改。
2.2.1 步骤1:密钥生成
系统初始化,设定一个安全参数为λ,生成公开参数p,其中包括2个n阶G1和G2双线性群。双线性映射为G1×G1→G2,g是G1的生成元。选择一个哈希函数:H:{0,1}*→G1。通过执行生成算法KeyGen,输出公钥pk和私钥sk,分别用于气象数据的加密和生成索引。
2.2.2 步骤2:密文加密
首先提取气象数据中的关键词W进行哈希运算,同时使用密钥对明文文件加密,得到加密后的密文:Cw=Encrypt(pk,W),最后将密文上传到区块链数据库进行存储。
2.2.3 步骤3:陷门生成
用户根据密钥和需要检索的关键词W,使用私钥计算生成特定关键词陷门:Tw=Trapdoor(sk,W),上传陷门到智能合约,并将信息打包传送至区块链里。
2.2.4 步骤4:检索查找阶段
用户以陷门作为输入提交查找请求,由区块链链上的节点执行可搜索加密算法进行陷门匹配,若匹配成功则使用密钥进行解密,获取明文文件。
2.3.1 安全性
本文方案中,陷门和索引两者都是随机加密的。在没有密钥的情况下,用户无法推测出关键词的相关信息,可以有效地防止数据隐私泄露。此外,经过解密计算获得的哈希值是不可逆和抗碰撞性的,通过密钥将其与服务器中存储的哈希值互相验证,若数值一致,则表明数据未发生篡改,进一步保证了方案的安全性。
2.3.2 正确性
用户与区块链进行数据交互的时候,链上的智能合约状态和内容是公开透明的,结合节点上的共识机制能够保证检索数据内容的可靠性和真实性。在执行方案时,智能合约按照事先预设的条件进行密钥恢复以及搜索凭证的生成,确保了用户检索得到结果的正确性。
2.4.1 数据加密时间
关键词个数与数据加密时间的关系如图2所示。数据加密的时间开销取决于索引的关键词个数,数据加密时间随着关键词个数的增加呈线性增长。总体上该部分的时间开销较小,这是因为每个索引的生成时间成本是固定的,并且只需要进行一次指数运算,节省了时间开销。
图2 数据加密时间
2.4.2 关键词检索时间
关键词个数与检索时间的关系如图3所示。本文实验先对数据库中的关键词进行查找检索。可以看出当文档个数是500的时候,用户检索关键词的时间为4.66 s;当文档个数是600的时候,检索所需的时间为4.87 s;由图可以更直观地看出,检索生成时间并不会随着关键词个数的大幅增加而剧烈变化。这是由于数据集中的文档个数决定了查询所需时间,而且查询中的关键词个数对查询时间的影响很小。
图3 关键词检索时间
2.4.3 陷门生成时间
关键词个数与陷门生成时间的关系如图4所示。在陷门的生成阶段,随着关键词个数的逐渐增加,陷门生成的时间也随之增加,二者呈现出线性增长的关系。当关键词的个数增加到一定程度的时候,陷门生成所需时间仅略微增加,表明方案具有较高的生成效率。
图4 陷门生成时间
本文结合区块链技术和可搜索加密技术,提出并设计了基于可搜索加密的区块链气象数据保护方案。结果表明:利用智能合约作为可信方,有效地解决单一授权导致的第三方可信问题,保证了方案的可信度,又提高了可搜索加密的可实现性。同时,对关键词搜索能够在较短的时间内实现对加密数据结果查找,充分发挥出两者相结合的优势,保护了气象数据的安全,为气象决策和防灾减灾提供精准的气象数据。此外,对安全性和性能的分析验证了该方案具有较高的效率。