APP下载

基于区块链的多用户环境中公钥可搜索加密方案

2021-11-14郑东朱天泽郭瑞

通信学报 2021年10期
关键词:敌手公钥密文

郑东,朱天泽,郭瑞

(西安邮电大学网络空间安全学院,陕西 西安 710121)

1 引言

在云计算时代,人们可以借助云存储服务外包存储数据以降低本地信息管理开销。然而,云存储技术在为人们带来便利的数据服务的同时,也存在一定的安全隐患。云服务器中存储的数据包含大量的用户敏感信息,如私密电子邮件、个人健康记录以及财务信息等。这些敏感数据一经上传至云端,便完全脱离了用户的控制,其安全性受到了极大威胁。如何为用户敏感信息提供安全保护,已成为云计算亟须解决的关键问题之一。考虑到作为存储载体的半可信云服务器可以轻松绕过访问控制策略查看用户的数据,因此必须将数据加密后再存储到云服务器上才能真正实现安全存储。对于明文信息,可以使用传统的关键词搜索技术来找到所需的数据。然而,这种方式并不适用于对密态数据的检索。如何实现对密态数据的快速搜索便于用户对所需数据进行准确定位,是云存储技术中的研究热点。

可搜索加密技术可以通过使用特定的关键词来检索加密后的文件,实现密态数据的检索功能,为云平台中存储的敏感数据提供安全性保护。Song等[1]给出了第一个对称可搜索加密算法。Boneh 等[2]构造了第一个公钥可搜索加密(PEKS,public key encryption with keyword search)方案。如图1 所示,PEKS 包含以下3 个步骤:1) 数据拥有者利用自己的明文数据提取明文关键词集,使用数据接收者的公钥生成密文关键词集和密文数据,将密文关键词与密文数据建立索引后,连同密文数据外包存储在服务器上;2) 当数据接收者想对存储在云服务器上的数据进行搜索时,利用自己的私钥生成陷门信息,并将陷门信息发送给云服务器;3) 云服务器接收到陷门信息后进行相关搜索工作,在此过程中不进行数据解密。将搜索到的相关密文数据发送给数据接收者后,数据接收者利用自己的私钥对文档进行解密。然而,在传统公钥可搜索加密体系中服务器是半可信且好奇的。为了节约计算资源,即使服务器通过检测算法检索到了用户所需的文件,也可能会返回错误的或部分检索结果。

图1 公钥可搜索加密

目前,解决可搜索加密中第三方的半可信问题,多采用可搜索加密与区块链技术结合的方式。区块链本质上是一种去中心化、分布式存储的数据库,链上存储的数据公开透明,并依托密码技术确保存储在链上的数据不可篡改、可追溯。智能合约是一套以数字形式定义的承诺,合约参与方可以在上面执行所承诺的协议,并且,智能合约允许在没有第三方的情况下进行可信操作,执行的操作可追踪且不可逆转。结合区块链上数据的不可篡改性,利用智能合约将存储在链上的密文关键词与接收到的陷门信息进行匹配,可以保证文件检索结果的正确性且可以帮助用户验证服务器返回的文件是否被篡改。

1.1 相关工作

为了在云服务器上对密文数据进行检索,Song等[1]给出了第一个可搜索加密方案。该方案基于对称密码体制,将明文数据中每个单词进行加密后上传,用户想要搜索时,利用关键词生成密文发送给服务器,服务器通过扫描密文数据并与关键词密文进行对比来返回检索结果。然而,这种搜索方式需要遍历全部密文,计算代价大且效率较低。Boneh等[2]首次将公钥密码体制引入可搜索加密领域,构造了第一个PEKS。该方案使用索引的结构来访问隐私数据,服务器将数据接收者发送的陷门与密文关键词进行匹配,匹配成功后利用索引返回对应的密文。同时,密文关键词中包含数据接收者的公钥使整个检索过程中用户之间不需要交互,公钥可搜索加密的应用场景也因此更广阔。然而,该方案需在安全信道中进行陷门传递,限制了其应用范围。针对此问题,Baek 等[3]首次提出了可以在公开信道下传输数据的公钥可搜索加密方案(SCF-PEKS)。通过在密文关键词中加入指定服务器的公钥来确保可以在公开信道中传输数据。Fang 等[4]提出了在无随机谕言机模型下证明PEKS 和SCF-PEKS 的关键词安全性。此外,Fang 等[5]还设计了一种效率高于SCF-PEKS 的公钥可搜索加密方案。

然而,上述PEKS 和SCF-PEKS 都存在关键词隐私性不足的问题,无法抵抗关键词猜测攻击[6-8]。为了应对此种攻击,Tang 等[9]设计了可以抵抗离线关键词猜测攻击的方案。Rhee 等[10]首次提出了“陷门不可区分性”的概念,并指出公钥可搜索加密满足陷门不可区分性是对抗离线关键词猜测攻击的充分条件。Qin 等[11]将Boneh 等提出的密文不可区分性扩展成为了多密文不可区分性。在实际应用中,一份文件通常不仅仅包含一个关键词,而且同一个关键词也可能出现多次。给定一组关键词加密,数据拥有者不希望其他人知道2 个文件是否包含相同的关键词,或者同一个文件包含多少个相同的关键词。因此,公钥可搜索加密方案需要考虑多密文不可区分性。

将基于身份的加密(IBE,identity-based encryption)算法与可搜索加密算法相结合,可以大大降低PEKS 方案中的证书管理开销。Abdalla 等[12]完善了PEKS 的定义,给出了其与基于身份的匿名加密方案之间的转化关系,并提出了一种新的基于临时关键词搜索的公钥可搜索加密方案。Rhee 等[13]构造了指定测试者的基于身份的公钥可搜索加密(dIBEKS,IBEKS with designated tester)的2 种通用结构。Emura 等[14]给出了自适应安全的公开信道下公钥可搜索加密的通用构造方法,并构造了基于标签和一次性签名的IBEKS 通用结构[15]。王少辉等[16]首次提出了基于身份密码系统下的指定测试者可搜索加密方案的定义和安全需求,特别证明了dIBEKS 密文不可区分性是抵御离线关键词猜测攻击的充分条件并设计了一个高效的dIBEKS 新方案可以有效抵御离线关键词猜测攻击。Ma 等[17]在物联网(IoT,Internet of things)环境中设计了一种新的基于身份的无证书可搜索加密方案,用于IoT 数据在云存储服务器中安全外包存储与共享。方案证明了可以针对选择一个公钥替换用户公钥和可以被给予系统主密钥这两类敌手做到抵抗选择关键词攻击。牛淑芬等[18]将PEKS 与IBE 相结合,在有效解决了邮件通信系统中对加密邮件检索问题的同时,也降低了公钥可搜索加密方案中复杂的密钥管理开销。此外,通过邮件发送方和接收方之间的相互认证并指定服务器执行检测算法以抵御离线关键词猜测攻击。为了优化传统公钥可搜索加密方案中大量运用双线性映射导致的低效率问题,杨宁滨等[19]构建了无双线性映射运算的公钥认证可搜索加密方案来提升运算的效率。

一对一模式的可搜索加密无法满足同时向多位用户进行密文数据安全共享的需求。为了解决此类问题,Curtmola 等[20]结合广播加密技术首次提出了一对多模式的公钥可搜索加密方案但其密钥撤销代价较大。杜瑞忠等[21]提出了一种基于区块链的公钥可搜索加密方案实现了一对多模式的数据共享,结合智能合约来解决传统方案中服务器不完全可信的问题,而且因为陷门信息无需上传至服务器也防止了半可信的服务器进行内部关键词猜测攻击。然而,其陷门信息在公开信道下传输时无法抵御离线关键词猜测攻击;此外,方案中智能合约在完成检索后将加密数据文件的对称密钥直接发送给用户也存在安全隐患。张玉磊等[22]利用代理重加密构造了一对多模式的PEKS 方案以适应多用户环境下的需求,其方案中需要数据拥有者持续在线以处理来自数据接收者发起的请求,在实际应用中存在较大限制。

在云计算环境下,为了节省计算资源,服务器可能会返回错误的检索结果或部分检索结果,严重影响用户的使用。智能合约与区块链技术的快速发展可以为用户提供可信云服务[23-24],在公钥可搜索加密中能够帮助用户验证云服务器提供的密态数据检索结果是否准确。Zhang 等[25]提出了一种基于区块链的个人健康数据安全共享方案,为了保证数据安全性和可用性,对加密后的个人体征数据使用公钥可搜索加密技术实现检索。高梦婕等[26]提出了一种基于区块链的可搜索医疗数据共享方案,方案使用对称可搜索加密并结合区块链与秘密共享技术,在确保参与者能安全获取共享密钥的同时也保证了共享数据的一致性。Li 等[27]提出了一种基于区块链的可搜索加密方案,方案使用对称加密算法实现对密文的检索。在该方案中,Li 等不仅给出了基于区块链的对称可搜索加密方案模型,还提出了2 种不同方案以处理不同规模的数据。之后,Li 等[28]还对文献[25]所提方案进行了改进以提高其可靠性。Chen 等[29]也使用对称可搜索加密并结合区块链技术提出了一种电子医疗记录共享方案,其使用智能合约作为可信第三方用以确保云平台提供的服务可信。牛淑芬等[30]基于联盟链提出了一种可搜索电子病历共享方案。该方案将代理重加密的思想引入可搜索加密中,并与区块链技术相结合,通过使用服务器存储电子病历密文、私有链存储密文哈希值、联盟链存储关键词索引的方式,实现了电子病历的安全存储与共享。

1.2 本文贡献

为了实现在半可信云存储环境下的多用户密文数据安全共享,本文提出了一种基于区块链的公钥可搜索加密方案,主要贡献如下。

1) 将PEKS 与IBE 相结合,实现了一对多模式的公钥可搜索加密方案,并设计了文件加密密钥的传递算法,保证用户在检索到密文后能够正确解密并获取明文。在该模型中,数据共享者只需一次加密上传就可以向多位指定的用户共享数据,能够灵活运用于实际场景中。利用IBE 的优势也降低了证书管理开销。此外,引入区块链与智能合约,将索引存储在区块链上并利用智能合约进行检索操作,在保证返回正确文件检索结果的同时帮助用户进行数据验证,解决了传统第三方存储中存在的半可信问题,保障了数据的可靠性。

2) 在随机谕言机模型下,基于判定性双线性Diffie-Hellman 假设(DBDH,decisional bilinear Diffie-Hellman )和修改的判定性双线性Diffie-Hellman 假设(MBDH,modified bilinear Diffie-Hellman),证明了本文方案的密文关键词和陷门信息满足选择关键词攻击下的不可区分性,并可以抵抗内部关键词猜测攻击。同时,分析了区块链对保护数据完整性的作用。

3) 利用jPBC 密码库,对本文方案和其他相关方案进行模拟实验。其仿真结果表明,本文方案具有较高的运行效率和较强的实用价值。

2 基础知识

2.1 双线性映射

设G1、G2均是阶数为素数p的群,其中G1是加法群,G2是乘法群,P为群G1的生成元。满足如下 3 个性质的映射称为一个双线性映射:G1×G1→G2。

1) 双线性:对于∀P,Q∈G1,∀a,b∈

2) 非退化性:∃P,Q∈G1,使

3) 可计算性:对所有的P,Q∈G1,存在有效的算法。

2.2 判定性双线性Diffie-Hellman 问题

设G1、G2均是阶数为素数p的群,其中G1是加法群,G2是乘法群,P为群G1的生成元,双线性映射:G1×G1→G2。DBDH 问题可表述为给定(P,aP,bP,cP)∈G1,E∈G2,判断E=还是,其中a,b,c,z←。

2.3 修改的判定性双线性Diffie-Hellman 问题

设G1、G2均是阶数为素数p的群,其中G1是加法群,G2是乘法群,P为群G1的生成元,双线性映射:G1×G1→G2。MBDH 问题可表述为给定(P,aP,bP,cP)∈G1,E∈G2,判断还是E=,其中。

3 方案模型

3.1 系统模型

如图2 所示,本文方案主要包括密钥生成中心(PKG,private key generator)、用户(user)、联盟链与智能合约、云服务器(CS,cloud sever)4 个实体。

图2 基于区块链的多用户环境中公钥可搜索加密方案系统框架

1) 密钥生成中心。PKG 为每个用户和管理联盟链的权威中心(以下简称权威中心)生成私钥并公布系统公共参数。

2) 用户。根据系统内用户的不同行为,每个用户既可以是数据拥有者也可以是数据接收者。

①数据拥有者是系统中向其他用户进行数据共享的用户。数据拥有者将要分享的数据密文编号并建立索引,然后将密文数据与索引一起上传至CS。同时,生成密文关键词存储在联盟链上供智能合约执行检测算法时调用,密文关键词中包含文件编号与文件哈希值。

② 数据接收者是有检索需求的用户。数据接收者利用自己私钥和想要搜索的关键词生成陷门信息发送给智能合约,利用返回值进行文件正确性与完整性验证并解密密文数据。

3) 联盟链与智能合约。本文方案采用区块链应用模式中的联盟链进行构造。联盟链在保有区块链基本特性的基础上增加了认证机制,只有经过授权的用户才能参与其中,符合基于身份的加密系统。系统内权威中心对联盟链进行管理并部署智能合约。联盟链存储数据拥有者上传的密文关键词,智能合约收到陷门信息时调用数据拥有者存储在联盟链上的密文关键词并执行检测算法,将数据接收者的身份和检索到的文件编号发送给CS 并为用户返回哈希值,用来进行文件正确性与完整性验证。

4) 云服务器。外包存储数据拥有者上传的数据密文与索引。

3.2 形式化定义

本文方案主要包括以下步骤。

步骤1系统初始化算法SetUp(λ)。该算法以安全参数λ为输入。PKG 生成公开参数params,保留系统私钥msk。权威中心将智能合约部署在联盟链上。

步骤2密钥生成算法 KeyGen (params,IDU,IDA,msk)。该算法以系统公共参数params、用户身份IDU、权威中心标识IDA、系统私钥msk 为输入。PKG 为用户计算生成skU,用户自己计算生成DU,将skU、DU作为自己的私钥;PKG 为权威中心生成skA,权威中心将skA作为私钥。PKG 计算生成用户身份公钥TIDU。

步骤3密文关键词生成算法KeywordGen(params,w,M)。该算法以系统公共参数params、一个明文关键词w、明文数据M为输入。用户生成一个密文关键词Ckw、一个索引I和一个数据密文Cm。

步骤4陷门信息生成算法 TrapdoorGen(params,w′,Ti,DU,IDA)。该算法以系统公共参数params、用户想要搜索的关键词w′、Ti、用户私钥DU以及权威中心身份标识IDA为输入,用户生成陷门信息Tw。

步骤5检测算法Test(params,Ckw,Tw,skA)。该算法以系统公共参数params、密文关键词Ckw、陷门信息Tw和权威中心私钥skA为输入,返回检索结果。

步骤6数据密文解密算法Dec(N,n′,)。该算法以密文关键词Ckw中的N以及服务器返回的密文关键词n′和数据密文为输入,用户验证数据完整性。若验证通过则解密,此时Cm=。

3.3 安全模型

定义1如果对任何多项式时间敌手A,存在一个可忽略的函数ℰ(K),K为安全参数,使≤ℰ(K),那么就称这个加密算法Π 是语义安全的,或称为在选择关键词攻击下具有不可区分性,简称为IND-CKA(indistinguishabilitychosen keyword attack)安全。

定义2如果对任何多项式时间敌手A,存在一个可忽略的函数ℰ(K),使≤ℰ(K),那么就称这个加密算法Π 是语义安全的,或称为在选择明文攻击下具有不可区分性,简称为IND-CPA(indistinguishability-chosen plaintext attack)安全。

定义3设G1、G2是阶为大素数p的群,g为G1的生成元,映射:G1×G1→G2,a,b,c,z←,则随机五元组与DBDH五元组D=(g,g a,g b,g c,eˆ (g,g)abc)是计算上不可区分的,称为DBDH 假设。

具体地,对任一敌手B,B 区分R和D的优势=|Pr[B(R)=1]-Pr[B(D)=1]|是可忽略的,即≤ℰ(K)。

定义4设G1、G2是阶为大素数p的群,g为G1的生成元,映射:G1×G1→G2,a,b,c,z←则随机五元组R=与MBDH五元组M=是计算上不可区分的,称为MBDH 假设。

具体地,对任一敌手B,B 区分R和M的优势=|Pr[B(R)=1]-Pr[B(M)=1]|是可忽略的,即≤ℰ(K)。

3.3.1密文关键词的不可区分性

下面,通过敌手A 与挑战者之间的安全游戏来定义本文方案的密文关键词不可区分性。密文关键词Ckw的IND-CKA 游戏定义如下。

初始化挑战者输入安全参数K,产生公开的系统参数params 和保密的主密钥。

阶段1(训练)敌手A 发出对ID 的密钥产生询问并声明意欲挑战的身份ID*,否则记为IDU。挑战者运行密钥生成算法,根据是否为要挑战的ID返回不同的身份公钥T与私钥给敌手A,这一过程可重复多项式有界次。

挑战敌手A 输出2 个长度相等的关键词w0、w1和一个意欲挑战的公开钥ID*。唯一的限制是ID*在阶段1 中的任何密钥询问中出现时挑战者报错并退出。挑战者随机选择一个比特值β←R{0,1},用ID*加密wβ得到,并将发送给敌手A。

阶段2(训练)敌手A 发出对另外ID 的密钥产生询问,唯一的限制是ID ≠ID*,挑战者以阶段1 中的方式进行回应,这一过程可重复多项式有界次。

猜测敌手A 输出猜测β′∈{0,1},如果β′=β,则敌手A 攻击成功。

敌手A 的优势定义为安全参数K的函数

3.3.2陷门信息的不可区分性

下面,通过敌手A 与挑战者之间的安全游戏来定义本文方案的陷门信息不可区分性。陷门信息Tw的IND-CKA 游戏定义如下。

初始化挑战者输入安全参数K,产生公开的系统参数params 和保密的主密钥。

阶段1(训练)敌手A 发出对ID 的密钥产生询问并声明意欲挑战的身份ID*,否则记为IDi。挑战者运行密钥生成算法,根据是否为要挑战的ID 用不同的方式返回H1(ID)与私钥给敌手A,这一过程可重复多项式有界次。

挑战敌手A 输出2 个长度相等的明文w0、w1和一个意欲挑战的公开钥ID*。唯一的限制是ID*在阶段1 中的任何密钥询问中出现时挑战者报错并退出。挑战者随机选择一个比特值β←R{0,1},用ID*加密wβ得到,并将发送给敌手A。

阶段2(训练)敌手A 发出对另外ID 的密钥产生询问,唯一的限制是ID ≠ID*,挑战者以阶段1 中的方式进行回应,这一过程可重复多项式有界次。

猜测敌手A 输出猜测β′∈{0,1},如果β′=β,则敌手A 攻击成功。

敌手A 的优势定义为安全参数K的函数

3.3.3密钥保护信息的不可区分性

下面,通过敌手A 与挑战者之间的安全游戏来定义本文方案的密钥保护信息不可区分性。密钥保护信息K的IND-CPA 游戏定义如下。

初始化挑战者输入安全参数K,产生公开的系统参数params 和保密的主密钥。

阶段1(训练)敌手A 发出对ID 的密钥产生询问并声明意欲挑战的身份ID*,否则记为IDi。挑战者运行密钥生成算法,根据是否为要挑战的ID 用不同的方式返回H1(ID)与私钥给敌手A,这一过程可重复多项式有界次。

挑战敌手A 输出两个长度相等的明文M0、M1和一个意欲挑战的公开钥ID*。唯一的限制是ID*在阶段1 中的任何密钥询问中出现时挑战者报错并退出。挑战者随机选择一个比特值β←R{0,1},用ID*加密Mβ得到K*,并将K*发送给敌手A。

阶段2(训练)敌手A 发出对另外ID 的密钥产生询问,唯一的限制是ID ≠ID*,挑战者以阶段1 中的方式进行回应,这一过程可重复多项式有界

猜测敌手A 输出猜测β′∈{0,1},如果β′=β,则敌手A 攻击成功。

敌手A 的优势定义为安全参数K的函数

4 具体方案

4.1 方案描述

基于区块链的多用户环境中公钥可搜索加密方案的运行过程如图3 所示,本文方案具体执行细节如下。

图3 基于区块链的多用户环境中公钥可搜索加密方案运行过程

1) 系统初始化算法SetUp(λ)。该算法以安全参数λ为输入。

①PKG 生成阶数为大素数p(p>2λ)的乘法群G1、G2,g为G1的生成元。生成一个双线性映射:G1×G1→G2。选择 5 个抗碰撞哈希函数H1:{0,1}*→G1、H2:G1→、H3:{0,1}*→G2、H4:G2→{0,1}k和H5:{0,1}*→{0,1}k。随机选取y←作为系统私钥,计算系统公钥为Y=和Y′=gy。

② PKG 公布系统公共参数params=(p,G1,G2,g,,H1,H2,H3,H4,H5,Y,Y′),权威中心将智能合约部署在联盟链上。

2) 密钥生成算法KeyGen (params,IDU,IDA,y)。该算法以系统公共参数params、用户身份IDU、权威中心标识IDA、系统私钥y为输入。设群组内共有m个用户(m可动态增加),则有1 ≤U≤m,m∈N+。

② 权威中心将自己的标识IDA发送给PKG,PKG 计算发送给权威中心,权威中心收到后将skA作为自己的私钥并保存。

3) 密文关键词生成算法 KeywordGen(params,w,M)。该算法以系统公共参数params、一个明文关键词w、明文数据M为输入。

①数据拥有者首先指定可以检索密文的i(i≤m,i∈N+)个用户的集合θ={1 ≤U≤i|IDU,然后随机选取r1←,并使用θ对应的i个用户的身份公钥计算集合T=。最i后,生成密文C=[C1,C2,C3]=

② 数据拥有者采用对称加密算法加密明文数据M。随机选择η←并计算对称加密密钥k=H4(η),将k作为对称加密密钥加密M得到M′。然后,共享者计算密钥保护信息K=并将K拼接在M′头部形成一个大文件作为数据密文Cm(Cm=K||M′),如图4 所示。

图4 数据密文 Cm 结构

③数据拥有者从正整数集上选择一个数n作为要上传的密文关键词的编号,使用编号n与密文Cm生成N=[N1,N2]=[n,H5(n||Cm)]。

④ 数据拥有者将密文关键词Ckw=[C,N]上传至联盟链,将n与数据密文Cm建立索引关系I={n,Cm}(能够通过n查询到Cm)后将I和Cm上传至CS。

4) 陷门信息生成算法TrapdoorGen (params,w′,Ti,DU,IDA)。该算法以系统公共参数params、用户想要搜索的关键词w′、Ti、用户私钥IDU以及权威中心身份标识IDA为输入。

数据接收者首先查看密文关键词Ckw中设置的集合θ中是否有自己的身份。若有,则使用想要搜索的关键词w'和Ti中对应的计算陷门信息

5) 检测算法Test(params,Ckw,Tw,skA)。该算法以系统公共参数params、密文关键词Ckw、陷门信息Tw和权威中心私钥skA为输入,返回检索结果0 或1。

①数据接收者有检索需求时,将生成的陷门信息Tw发送给智能合约。智能合约从Tw中解析出T1、T2,从Ckw中解析出C1,利用权威中心提供的私钥skA验证等式是否成立。若不成立输出0,若成立输出1。

② 当输出1 时,智能合约将Ckw中的N返回给数据接收者,同时将其身份T2=IDU与密文关键词编号N1=n发送给CS。

③CS 收到N1后,通过N1=n查询对应的Cm,随后将n′与返回给T2所示用户。其中,n′为CS 返回的密文关键词编号,为CS 返回的数据密文。

①用户收到N、n′ 、后,首先验证等式N1=n′是否成立,若成立表明CS 返回了用户所要搜索的文件。然后,验证等式是否成立,若成立表明密文数据没有被篡改。

图5 数据恢复过程

4.2 正确性验证

检测算法正确性

显然,当陷门Tw中包含的关键词w′与密文关键词Ckw中包含的关键词w相同时等式成立。

数据密文解密算法正确性

因此,用户可以计算出k正确解密密文数据。

5 安全性分析

5.1 密文关键词的不可区分性

定理1在随机谕言机模型下,若MBDH 假设成立,则本方案的密文关键词Ckw是IND-CKA 安全的,即满足选择关键词攻击下的不可区分性。

证明要证明Ckw的IND-CKA 安全性只需证明Ckw中的C满足IND-CKA 安全性即可。

挑战者先建立MBDH 问题,设B 是一个攻击MBDH问题的多项式时间敌手,A 是一个攻击C的多项式时间敌手,敌手B 以敌手A 为子程序,具体挑战过程如下。

阶段1在此阶段,敌手B 承担敌手A 的挑战者。敌手B 首先获得A 意欲挑战的身份ID*,否则记为IDU,然后敌手B 模拟一个随机谕言机对敌手A 发出的询问进行应答。

挑战敌手A 输出2 个长度相等的明文关键词w0、w1发送给敌手B。B 随机选择β←R{0,1},计算wβ的密文C*=[H3(wβ)E,T*,=gbr]返回给敌手A。

阶段2与阶段1 一样。

猜测敌手A 输出猜测β′∈{0,1}。若β′=β,B 输出μ′=0,表示实例T是MBDH 五元组M;如果β′≠β,B 输出μ′=1,表示实例T是随机五元组R。

当μ=1时,E=,有H3(wβ)E=。由于z是随机的,因此在A看来C*也是G2中随机的元素。因为C*是随机的,敌手A 没有获得有关β的任何信息,所以Pr[β′≠β|μ=1]=。而当β′≠β时,B 猜测μ′=1,所以Pr[μ′=μ|μ=1]=。

所以,有

等式左边与定义3 中敌手B 解决MBDH 问题的优势定义一致,等式右边为敌手A 区分C的优势。因此

证毕。

5.2 陷门信息的不可区分性

定理2在随机谕言机模型下,若DBDH 假设成立,则本文方案的陷门信息Tw是IND-CKA 安全的,即满足选择关键词攻击下的不可区分性。

证明挑战者先建立DBDH 问题,设B 是一个攻击DBDH 问题的多项式时间敌手,A 是一个攻击陷门信息Tw的多项式时间敌手,敌手B 以敌手A 为子程序,具体挑战过程如下。

初始化挑战者建立DBDH 问题,B 获得一个五元组实例T=(g,g a,g b,g c,E),其中E=或。B 以实例T中的ga作为系统公钥Y′,其余公共参数用与挑战者方案相同的方式产生,公开系统公共参数params=

阶段1 在此阶段,敌手B 承担敌手A 的挑战者。敌手B 模拟一个随机谕言机对敌手A 发出的询问进行应答。

阶段2与阶段1 一样。

猜测敌手A 输出猜测β′∈{0,1}。若β′=β,则A挑战成功并输出1(用Succ 表示该事件),否则输出0。同时,B 也把A的输出作为自己的输出。

所以,有

所以,有

等式左边与定义2中敌手B 解决DBDH问题的优势定义一致,等式右边为敌手A 区分Tw的优势。因此

此外,陷门信息中Tw中包含的对于权威中心来说也是不可区分的,这一点在5.1 节中已进行了详细的证明,因此陷门信息Tw可以抵御内部关键词猜测攻击。同时,由于陷门信息中包含了权威中心公钥H1(IDA),只有利用智能合约才可以执行检测算法,因此本文方案也满足指定可搜索性可以在公开信道下进行数据传输。

5.3 密钥保护信息的不可区分性

定理3在随机谕言机模型下,若MBDH 假设成立,则本文方案的密钥保护信息K是IND-CPA安全的,即满足选择明文攻击下的不可区分性。

证明K的IND-CPA 安全性证明与C的相同,具体证明过程省略。

证毕。

6 效率分析

实验设备的处理器使用 Intel(R) Core(TM)i5-10210U CPU@1.60 GHz 2.11 GHz,内存为16 GB。为了让效率分析的结果更加准确,在Windows10系统环境下使用IDEA 编程软件利用jPBC 密码库对参与比较的文献进行了仿真实现,其中采用了库中的Type A 类曲线构造对称质数阶双线性群,群的阶数为512 bit,域的阶数为160 bit。

本文方案主要与文献[16-18,21]方案进行对比。实验分别记录各方案生成100 次密文关键词、生成100次陷门信息与执行100次检测算法的累计耗时,然后计算其单次运行平均耗时使数据更加可靠,最后进行总结分析。

6.1 密文关键词生成算法的时间

各方案密文关键词生成时间如图6 所示,与文献[16-18]方案相比,本文方案在同样满足密文关键词不可区分性的情况下还可以适用于一对多通信模式的多用户环境中且生成密文关键词时的效率更高。随着分享用户数量的增加,本文方案的优势将会更加明显。与文献[21]方案相比,在二者都适用于多用户环境中的情况下,本文方案不仅在效率上具有一定优势且文件加密密钥的传输过程更加安全。图7 展示了各方案生成一个密文关键词的平均耗时。

图6 各方案密文关键词生成时间

图7 各方案密文关键词平均生成时间

6.2 陷门信息生成与执行检测算法的时间

记生成一次陷门信息与执行一次检测算法时间的总和为一次交互时间。各方案陷门生成与执行检测算法的时间如图8 所示。分析结果表明,与文献[16-18]方案的效率相比,本文方案具有较大优势,可以更快地为用户反馈检索结果,改善用户体验。在与文献[21]方案比较时,虽然运行效率相近,但文献[21]方案的陷门信息无法抵抗关键词猜测攻击,在安全性方面不及本文方案。图9 展示了各方案单次交互平均耗时即运行一次陷门信息生成算法与执行一次检测算法时间总和的平均值。

图8 各方案陷门生成与执行检测算法的时间

图9 各方案陷门生成与执行检测算法的平均时间

6.3 使用不同长度关键词生成密文与陷门的时间

使用不同字符长度的关键词运行本文方案的密文关键词生成算法(取i=3)与陷门信息生成算法100 次计算平均值如图10 所示。结果表明,本文方案在使用不同长度关键词时的运行效率相近,具有很高的灵活性。

图10 不同关键词长度下的运行效率

7 结束语

本文将PEKS 与IBE 相结合,在多用户环境中实现了一对多模式的公钥可搜索加密方案并设计了文件加密密钥的详细传递算法。数据共享者只需一次加密上传就可以向多位指定的用户进行数据共享,能够灵活运用于实际场景中。利用IBE 的优势也降低了证书管理开销。此外,引入区块链与智能合约,将索引存储在区块链上并利用智能合约进行检索操作,在保证返回正确检索结果的同时解决了传统第三方存储的半可信问题,保障了数据的可用性。在随机谕言机模型下,基于判定性双线性 Diffie-Hellman 假设和修改的判定性双线性Diffie-Hellman 假设证明了本文方案的密文关键词和陷门信息满足选择关键词攻击下的不可区分性且可以抵抗内部关键词猜测攻击。同时,分析了引入区块链对保证数据可用性的作用。利用jPBC 密码库对本文方案和参与效率分析的其他方案进行了仿真实现。结果表明,本文方案在具备安全性与实用性的基础上也具有较高的运行效率。

猜你喜欢

敌手公钥密文
一种支持动态更新的可排名密文搜索方案
与“敌”共舞
基于模糊数学的通信网络密文信息差错恢复
基于网络报文流量的协议密文分析方法
密钥共享下跨用户密文数据去重挖掘方法*
不带着怒气做任何事
神奇的公钥密码
国密SM2密码算法的C语言实现
基于身份的聚合签名体制研究
不带着怒气作战