CN111913981A - 在线离线的基于属性的布尔关键字可搜索加密方法及系统 - Google Patents

在线离线的基于属性的布尔关键字可搜索加密方法及系统 Download PDF

Info

Publication number
CN111913981A
CN111913981A CN202010515751.2A CN202010515751A CN111913981A CN 111913981 A CN111913981 A CN 111913981A CN 202010515751 A CN202010515751 A CN 202010515751A CN 111913981 A CN111913981 A CN 111913981A
Authority
CN
China
Prior art keywords
data
ciphertext
key
keyword
user
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202010515751.2A
Other languages
English (en)
Other versions
CN111913981B (zh
Inventor
徐玲玲
姚家慧
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
South China University of Technology SCUT
Original Assignee
South China University of Technology SCUT
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by South China University of Technology SCUT filed Critical South China University of Technology SCUT
Priority to CN202010515751.2A priority Critical patent/CN111913981B/zh
Publication of CN111913981A publication Critical patent/CN111913981A/zh
Application granted granted Critical
Publication of CN111913981B publication Critical patent/CN111913981B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/243Natural language query formulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Storage Device Security (AREA)

Abstract

本发明公开了一种在线离线的基于属性的布尔关键字可搜索加密方法及系统,方法先是可信权威机构生成系统公开密钥、主密钥、ElGamal私钥和用户私钥,并将系统公开密钥公开并云公布,将ElGamal私钥、用户私钥送给数据使用者;然后数据拥有者生成中间关键字密文、将数据文档加密成数据密文、生成关键字密文,再将关键字密文和数据密文并云上传;数据使用者生成中间检索令牌,再生成检索令牌并云上传;云服务器根据检索令牌来判定数据使用者的访问权限,匹配检索令牌和关键字密文,将对应的数据密文发送给数据使用者;数据使用者使用ElGamal私钥解密数据密文得到原数据文档。本发明可同时支持布尔关键字搜索和访问控制,降低用户在线的计算量,提高搜索效率。

Description

在线离线的基于属性的布尔关键字可搜索加密方法及系统
技术领域
本发明涉及数据关键字检索和密码学技术领域,特别涉及一种在线离线的基于属性的布尔关键字可搜索加密方法及系统。
背景技术
随着互联网的普及以及大数据、云计算等技术的发展,越来越多的企业和个人开始选择将他们的数据存储到云中。在享受维护数据的成本降低等福利的同时,用户依旧可以随时随地地在云中存储数据、检索数据,分享数据。不可避免地,大数据和云计算等技术在给我们提供便利的同时,也存在着严重的安全隐患。当数据以明文的形式外包给云服务器时,可能会不经意地泄露给云服务提供商或遭到黑客的非法访问。通常来说,我们自然会选择对数据进行加密处理后再将密文数据存储在云服务器上,但这也导致传统的明文检索技术在外包的密文上失效。
为了使得用户能在外包密文数据上进行有效且高效地检索,可搜索加密(Searchable Encryption,简称SE)技术作为一种解决方案被提出。顾名思义,可搜索加密技术即为一种支持在密文数据上进行检索操作的技术。大多数可搜索加密方案采用以云作为服务器来为单个或者多个客户存储密文数据的这种服务器/客户端(Client/Server,简称“C/S”)形式,并且,在这种思想的指导下形成了多数据拥有者/多数据使用者(M/M)这种可搜索加密体系。M/M体系中所能实现的数据共享具有很大的实际意义。近年来,学者们对该领域进行了大量的研究且提出了许多PEKS方案。但基本的PEKS方案不能有效地应用在一些实际的应用场景中。比如,在医疗保健系统中,患者可能希望自己的个人健康记录只能由一部分得到授权的医生查看。在这种情况下,为了能在加密的数据上同时实现关键字搜索和访问控制,有研究者提出了基于属性的可搜索加密技术方案(Attribute-based KeywordSearch,简称ABKS),每个数据都使用访问控制策略进行访问限制,当且仅当数据使用者的属性集合满足访问策略时,才能对该密文数据进行检索以及解密。
尽管现有的工作为基于属性的关键字搜索提供了解决方案,但面对基于属性的可搜索加密带来的计算成本,目前没有一个方案可以很好地提高效率和体验。现有的一些基于属性的可搜索加密仅支持单关键字的搜索,而支持多关键字搜索的基于属性的可搜索加密方案在一些计算过程上所需要的计算量又会随着属性集中属性的数目增加而成比例增加,庞大的计算量所带来的问题也使得ABKS方案较难应用于有功耗约束的移动设备中。
可见,如何在大数据和云存储背景下设计一个既能支持多关键字搜索,又能保证效率的基于属性的可搜索加密方法成为亟需解决的关键问题。
发明内容
本发明的第一目的在于克服现有技术的缺点与不足,提供一种在线离线的基于属性的布尔关键字可搜索加密方法,该方法可同时支持布尔关键字搜索和访问控制,降低用户在线的计算量,提高搜索效率。
本发明的第二目的在于提供一种在线离线的基于属性的布尔关键字可搜索加密系统。
本发明的第一目的通过下述技术方案实现:一种在线离线的基于属性的布尔关键字可搜索加密方法,步骤如下:
S1、可信权威机构TA先生成系统公开密钥PK、主密钥MK,以及用于解密数据的ElGamal私钥d,并将系统公开密钥PK公开发布于云服务器,将主密钥MK保存在可信权威机构TA,将ElGamal私钥d发送给每个数据使用者;
可信权威机构根据主密钥MK以及各个数据使用者的属性集S,生成各个数据使用者自己的用户私钥SK并发送给对应的数据使用者;
S2、离线加密:在数据使用者输入待加密的关键字集合W之前,数据拥有者先使用访问策略T生成中间关键字密文IC,并使用系统公开密钥PK将其数据文档加密成数据密文CD,然后将中间关键字密文IC和数据密文CD保留在数据拥有者端;
S3、在线加密:数据拥有者使用中间关键字密文IC以及关键字集合W生成关键字密文CT,并将关键字密文CT和数据密文CD上传至云服务器;
S4、生成离线检索令牌:在数据使用者输入布尔关键字值表达式BV进行检索前,数据使用者根据用户私钥SK在本地服务器先生成中间检索令牌IT,并将中间检索令牌IT保留在本地服务器;
S5、生成在线检索令牌:在数据使用者输入布尔关键字值表达式BV后,数据使用者在本地服务器上使用中间检索令牌IT与布尔关键字值表达式BV生成检索令牌TK,并将检索令牌TK发送到云服务器;
S6、云服务器根据检索令牌TK来对数据使用者对每一个数据文档的访问权限进行判定,并将检索令牌TK和权限内对应数据密文CD的关键字密文CT进行匹配,并将在其访问权限内并满足搜索条件的数据密文CD发送给数据使用者;
S7、数据使用者从云服务器收到数据密文CD后,使用从可信权威机构TA中获得的ElGamal私钥d解密数据密文,最终得到原数据文档D。
优选的,在步骤S1中,可信权威机构TA生成系统公开密钥PK、主密钥MK,以及ElGamal私钥d的过程如下:
S11、可信权威机构TA使用群生成器Γ执行Γ(1l),生成(p,G,GT,e),其中,l为输入群生成器的安全参数,p是一个素数,G和GT为p阶循环群,且e:G×G→GT,e为双线性映射关系,表示将群G中的两个元素映射到群GT中的一个元素;
S12、可信权威机构TA选择一个哈希函数H1:{0,1}*→G作为随机预言机,选择另一个哈希函数H2:{0,1}*→Zp作为单向哈希函数,Zp表示p阶加法循环群;
S13、可信权威机构TA随机选择元素g∈G,元素a,b,c∈Zp,元素
Figure BDA0002530027210000031
Figure BDA0002530027210000032
是p-1阶乘法循环群;
S14、可信权威机构TA根据以上变量生成系统公开密钥PK=(e,G,GT,p,H1,H2,g,ga,gb,gc,gd,g1/b)、主密钥MK=(a,b,c)以及ElGamal私钥d;ElGamal私钥d具体是通过加密信道发送给数据使用者;
可信权威机构TA生成用户私钥的过程如下:
可信权威机构TA获取到数据使用者的属性集S后,随机选择元素r∈Zp,并为每个属性j∈S随机选择对应的元素tj∈Zp,得到用户私钥:
Figure BDA0002530027210000033
生成的用户私钥SK具体是通过加密通道发送给数据使用者。
更进一步的,方法还包括数据使用者对新增数据使用者的授权操作,通过这种方式,密钥的分配便不需要所有都由可信权威机构TA来进行,过程如下:
当一个属性集为S的数据使用者需要对另一个属性集为
Figure BDA0002530027210000041
的数据使用者进行授权操作时,前者输入自己的用户私钥SK,随机选择
Figure BDA0002530027210000042
并对于每一个属性k∈S′,随机选择一个
Figure BDA0002530027210000043
从而得到分配给新增数据使用者的新的用户私钥:
Figure BDA0002530027210000044
更进一步的,在步骤S2中,中间关键字密文IC的离线加密过程如下:
S211、基于访问策略T具有访问树结构,表示的是能读取数据文档的数据使用者所必须满足的属性条件,这里用qx表示访问策略T的节点x所拥有的多项式,用Y表示访问策略T的叶子集合,用y表示叶子节点,y∈Y,用attr(y)表示叶子节点y的属性值;
数据拥有者随机选择元素r0∈Zp作为被访问策略T的所有叶子分享的秘密值,即qR(0)=r0
S212、在数据文档的关键字个数为正整数m的情况下,数据拥有者随机选择m个元素ri∈Zp,i为序号,i∈{1,2,3,...,m},计算
Figure BDA0002530027210000045
其中,br0表示b*r0,C′为一个与数据文档对应的加密值,用来参与搜索过程的最后一步的计算;
对于
Figure BDA0002530027210000046
其中,Cy代表叶子节点y通过访问树T分享到的秘密值的加密值,用于搜索过程中第一步的身份验证;C′y代表使用访问树T将叶子节点y对应的属性值加密后得到的加密值,也用于搜索过程中第一步的身份验证;
计算
Figure BDA0002530027210000047
其中,cri表示c*ri,C′i与Ci作为中间量,用于参与后续使用中间关键字密文IC装配得到关键字密文CT的计算;
S213、数据拥有者根据上述变量计算出关键字中间关键字密文IC:
IC=({r1,r2,...,rm},T,C′,{Cy,C′y}y∈Y,{Ci,C′i}i=1,2,...m)
数据密文CD的离线加密过程如下:
S221、数据拥有者随机生成多位的对称密钥ψ,使用AES算法对数据文档进行加密,从而得到密文CDa
S222、数据拥有者使用ElGamal算法,加密对称密钥ψ得到密文CDb
从群G中随机选择元素y,作为ElGamal算法的私钥,从系统公开密钥PK中获取g、gd,计算得到c1=gy,s=(gd)y,其中,g、gd作为公钥的一部分,是两个已经公开的量;c1为ElGamal算法的公钥;s为ElGamal算法需要共享的秘密值;
然后将对称密钥ψ映射为群G的一个元素ψ′上,并计算得到c2=ψ′·s,作为共享秘密值的加密值,最后生成密文CDb={c1,c2};
S223、最后基于CDa和CDb得到数据密文CD={CDa,CDb}。
更进一步的,在步骤S3中,关键字密文CT的在线加密过程如下:
S31、用WV=wv(1),wv(2),...,wv(m)表示关键字集合W=w1,w2,...,wm的属性值,用WN=wn(1),wn(2),...,wn(m)表示关键字集合W=w1,w2,...,wm的属性名;
S32、对于每一个关键字的属性值wv(i)∈WV,计算
Figure BDA0002530027210000051
其中,
Figure BDA0002530027210000052
作为一个加密值,用来参与搜索过程的第二步的计算;
Figure BDA0002530027210000053
代表使用中间关键字密文中的C′i与关键字值wv(i)的加密值结合后得到的最终加密产物,用于搜索过程的第二步的计算;
S33、数据拥有者根据上述变量和中间关键字密文IC生成关键字密文:
Figure BDA0002530027210000054
更进一步的,步骤S4生成离线检索令牌的过程如下:
S41、随机选择一个元素t∈Zp,计算
Figure BDA0002530027210000055
并对每一个属性j∈S,基于其随机选择对应的元素tj∈Zp,计算
Figure BDA0002530027210000056
其中,Dt代表对用户私钥中的D=g(ac-r)/b做一个幂运算,即Dt为D的t次方;Dt j代表对用户私钥中的
Figure BDA0002530027210000057
做一个幂运算,即Dt j为Dj的t次方;(D′j)t代表对用户私钥中的
Figure BDA0002530027210000058
做一个幂运算,即(D′j)t为D′j的t次方;
Figure BDA0002530027210000059
为一个与令牌对应的加密值,用来参与搜索过程的最后一步的计算;
Figure BDA00025300272100000510
代表将参数t与用户私钥中的参数Dj结合,用于搜索过程中第一步的身份验证;
Figure BDA00025300272100000511
代表将参数t与用户私钥中的参数D′j结合,也用于搜索过程中第一步的身份验证;
S42、数据使用者根据上述变量,生成中间检索令牌
Figure BDA00025300272100000512
更进一步的,步骤S5生成在线检索令牌的过程如下:
S51、基于布尔关键字值表达式BV和布尔关键字名表达式BN拥有相同的访问树结构,这里用
Figure BDA00025300272100000513
表示布尔关键字名表达式BN的节点
Figure BDA00025300272100000514
所拥有的多项式,用
Figure BDA00025300272100000515
表示布尔关键字名表达式BN的叶子集合,用attr(y)表示叶子节点y的属性值;
数据使用者将t作为被布尔关键字名表达式BN的所有叶子分享的秘密值,即
Figure BDA0002530027210000061
S52、对于每个
Figure BDA0002530027210000062
计算
Figure BDA0002530027210000063
其中,bn(i)为表示成访问树形式的布尔关键字名表达式的一个叶子节点;
Figure BDA0002530027210000064
为叶子节点bn(i)所对应的关键字值的加密值;
Figure BDA0002530027210000065
代表叶子节点bn(i)经过访问树分享得到的秘密值
Figure BDA0002530027210000066
与主密钥MK中的一个参数c结合后得到的加密值;
S53、数据使用者根据上述变量和中间检索令牌,生成检索令牌:
Figure BDA0002530027210000067
更进一步的,步骤S6过程如下:
S61、针对云服务器中的每个数据密文CD,云服务器从属性集S中选择满足访问策略T的最小属性集S′,从关键字名集合WN中选择满足布尔关键字名表达式BN的最小关键字名集合W′N
如果S′和W′N不存在,则说明访问权限不够或者找不到匹配内容,故退出对该文件的检索;如果S′和W′N存在,则进行步骤S62;
S62、如果节点y是访问策略T的一个叶子节点,令属性j=attr(y),对于每个j∈S′,云服务器计算:
Figure BDA0002530027210000068
其中,
Figure BDA0002530027210000069
对于每个
Figure BDA00025300272100000610
令Ey=⊥,其中,Ey代表对加密值Cy
Figure BDA00025300272100000611
C′y
Figure BDA00025300272100000612
经过双线性映射计算后得到的,叶子节点y由访问树T分享得到的秘密值的加密值;
S63、如果节点y是访问策略T的一个非叶子节点,若对节点y的所有子节点z,均有Ez=⊥,则Ey=⊥,其中,Ez代表节点z的加密值;
否则,云服务器通过多项式插值的方式计算出Ey
Figure BDA00025300272100000613
式中,
Figure BDA00025300272100000614
表示拉格朗日系数,用于拉格朗日插值法这种多项式插值法,其中,这里i表示子节点z在父节点y中的顺位,S′y表示节点y的所有在最小属性集合S′中的子节点组成的集合,在
Figure BDA0002530027210000071
中,i∈Zp
Figure BDA0002530027210000072
j∈Zp,最后得到
Figure BDA0002530027210000073
Figure BDA0002530027210000074
即为变量x取0时得到的式子;
最后,云服务器将计算出访问策略T的根节点的ER值,其中,ER代表本想要通过访问树T分享的秘密值r0的加密值:
Figure BDA0002530027210000075
S64、定义
Figure BDA0002530027210000076
为布尔关键字名表达式BN的叶节点,
Figure BDA0002530027210000077
为叶节点
Figure BDA0002530027210000078
代表的关键字名;
对于所有的bn∈W′N,云服务器计算
Figure BDA0002530027210000079
其中,
Figure BDA00025300272100000710
代表对加密值
Figure BDA00025300272100000711
Figure BDA00025300272100000712
经过双线性映射计算后得到的,叶子节点
Figure BDA00025300272100000713
由布尔关键字名表达式BN表示成的访问树分享得到的秘密值的加密值:
Figure BDA00025300272100000714
其中,
Figure BDA00025300272100000715
S65、如果节点
Figure BDA00025300272100000716
是布尔关键字名表达式BN的一个非叶子节点,若对节点
Figure BDA00025300272100000717
的所有子节点
Figure BDA00025300272100000718
均有
Figure BDA00025300272100000719
Figure BDA00025300272100000720
否则,则是用多项式插值法计算得到
Figure BDA00025300272100000721
Figure BDA00025300272100000722
最后,云服务器计算出布尔关键字名表达式BN的根节点的
Figure BDA00025300272100000723
值:
Figure BDA00025300272100000724
S66、云服务器根据以上变量,确认以下等式是否成立:
Figure BDA00025300272100000725
若成立,说明数据文档访问权限在数据使用者权限内且与搜索条件匹配,则云服务器将对应的数据密文CD返回给数据使用者;
若不成立,说明数据文档访问权限在数据用户权限内但与搜索条件不匹配,退出检索。
优选的,在步骤S7中,数据使用者使用ElGamal算法对数据密文CD解密的过程如下:
使用ElGamal私钥d计算得到s=c1 d,随后计算ψ′=c2·s-1,最后将ψ′映射回对称密钥ψ,其中,c1为ElGamal算法的公钥,c2为共享秘密值s的加密值;
基于对称密钥ψ,使用AES算法解密密文CDa,得到原数据文档内容。
本发明的第二目的通过下述技术方案实现:一种在线离线的基于属性的布尔关键字可搜索加密系统,包括:运行于可信权威机构TA的初始化子系统、运行于数据拥有者端的加密子系统、运行于云服务器上的云存储及检索子系统、运行于数据使用者端的令牌生成及解密系统,其中,
运行于可信权威机构TA的初始化子系统包括初始化模块、主密钥存储模块和私钥生成模块:
初始化模块用于生成系统公开密钥PK、主密钥MK,以及ElGamal私钥d,并将系统公开密钥PK公开发布于云服务器,将主密钥保存至主密钥存储模块,将ElGamal私钥d发送给每个数据使用者;
主密钥存储模块用于存储主密钥,只允许可信权威机构TA访问;
私钥生成模块根据主密钥和系统中各个数据使用者的属性集S,生成属于数据使用者自己的私钥,并将数据使用者的私钥发往令牌生成及解密系统的私钥存储模块进行存储;
运行于数据拥有者端的加密子系统包括离线关键字加密模块、数据加密模块和在线关键字加密模块:
离线关键字加密模块用于在数据使用者输入待加密的关键字集合W之前,先使用访问策略T生成中间关键字密文IC;
数据加密模块用于从云服务器中获取系统公开密钥PK,然后使用系统公开密钥PK将数据使用者的数据文档加密成数据密文CD,并上传至云服务器;
在线关键字加密模块用于使用中间关键字密文IC以及关键字集合W生成关键字密文CT,并将关键字密文CT上传至云服务器;
运行于云服务器上的云存储及检索子系统包括系统公开密钥公开模块、存储模块和检索模块:
系统公开密钥公开模块用于将系统公开密钥PK公开发布;
存储模块用于存储数据拥有者加密后的数据密文CD和关键字密文CT;
检索模块用于根据令牌生成及解密子系统的检索令牌TK来对数据使用者的数据文档访问权限进行判定,并将检索令牌和权限内对应数据密文CD的关键字密文CT进行匹配运算,从存储模块中获取在数据使用者的访问权限内并满足搜索条件的数据密文CD发送给数据使用者;
运行于数据使用者端的令牌生成及解密系统包括私钥存储模块、离线令牌生成模块、在线令牌生成模块以及数据解密模块:
私钥存储模块用于对数据使用者的私钥进行保存,只有数据使用者自己能访问自己的私钥;
离线令牌生成模块用于根据用户私钥SK生成中间检索令牌IT;
在线令牌生成模块用于使用中间检索令牌IT与布尔关键字值表达式BV生成检索令牌TK,并将检索令牌TK发送到云服务器;
数据解密模块用于在检索模块收到数据密文CD后,使用初始化模块获得的ElGamal私钥d解密数据密文,得到原数据文档D。
本发明相对于现有技术具有如下的优点及效果:
(1)本发明方法和系统在关键字检索上,可以支持AND、OR的布尔检索,通过使用访问树表示的布尔关键字搜索,在支持AND、OR等逻辑词嵌套的搜索策略的基础上,为数据用户在加密数据的搜索上带来了更大的灵活性。
(2)本发明在线离线的基于属性的布尔关键字可搜索加密方法具有灵活的访问策略,方法允许数据拥有者对其加密数据布置访问策略,其中访问策略的表示采用访问树的技术形式,支持AND、OR等逻辑词嵌套的布尔表达式,可帮助数据拥有者灵活地对数据进行控制和授权。
(3)本发明在线性访问树表示的访问策略中,通过键值对的表示形式,只有属性名的结构被包含在密文中,而属性值不会以明文形式被服务器感知,数据的隐蔽性和安全性更好。
(4)本发明划分了在线离线阶段(离线检索令牌生成阶段和在线检索令牌生成阶段),使得离线阶段用户事先完成不需要关键字参与的操作,然后在线阶段能够在关键字被输入后快速结合中间件以完成关键字加密以及令牌生成的操作,对比现有的能实现布尔访问控制和布尔关键词检索的属性基加密方案,本发明使得在线阶段的计算量得到减少,有利于减少延迟并提升系统工作效率,同时也有利于减少将基于属性的可搜索加密技术应用于移动设备的限制条件。
附图说明
图1是本发明在线离线的基于属性的布尔关键字可搜索加密方法的流程图。
图2是本发明在线离线的基于属性的布尔关键字可搜索加密系统的结构框图。
图3是本发明在线离线的基于属性的布尔关键字可搜索加密系统的应用环境示意图。
具体实施方式
下面结合实施例及附图对本发明作进一步详细的描述,但本发明的实施方式不限于此。
实施例1
本实施例公开了一种在线离线的基于属性的布尔关键字可搜索加密方法,在云存储的背景下,本实施例利用访问树以及布尔关键字搜索,能够有效定位到用户权限范围内其感兴趣的数据;同时,本实施例将对加密阶段和令牌生成阶段进行在线/离线分离,使得大部分的计算转移到离线阶段,从而减少在线阶段所需要的计算量,从而提升系统效率,给予用户更快的反馈和更好的体验。如图1所示,所述方法应用于包含可信权威机构、数据使用者端、数据拥有者端、云服务器的应用系统中,比如医疗保健系统、学校教务系统,方法步骤如下:
S1、可信权威机构TA先生成系统公开密钥PK、主密钥MK,以及用于解密数据的ElGamal私钥d,并将系统公开密钥PK公开发布于云服务器,系统的所有用户(数据使用者)均有访问系统公开密钥PK的权限。主密钥MK妥善保存于可信权威机构TA中,只有可信权威机构TA具有访问主密钥MK的权限。可信权威机构TA通过加密通道将ElGamal私钥d发送给每个数据使用者。
可信权威机构根据主密钥MK以及各个数据使用者的属性集S,生成各个数据使用者自己的用户私钥SK,并通过加密通道发送给对应的数据使用者。
其中,上述可信权威机构TA为一个完全可信的第三方安全机构,负责生成系统公开密钥PK、主密钥MK、用户私钥SK以及ElGamal私钥d。系统公开密钥PK、主密钥MK、用户私钥SK以及ElGamal私钥d均是一定长度的二进制码。
生成系统公开密钥PK、主密钥MK,以及ElGamal私钥d的过程如下:
S11、可信权威机构TA使用群生成器Γ执行Γ(1l),生成(p,G,GT,e),其中,l为输入群生成器的安全参数,p是一个素数,G和GT为p阶循环群,且e:G×G→GT,e为双线性映射关系,表示将群G中的两个元素映射到群GT中的一个元素;
S12、可信权威机构TA选择一个哈希函数H1:{0,1}*→G作为随机预言机,选择另一个哈希函数H2:{0,1}*→Zp作为单向哈希函数,Zp表示p阶加法循环群;
S13、可信权威机构TA随机选择元素g∈G,元素a,b,c∈Zp,元素
Figure BDA0002530027210000111
Figure BDA0002530027210000112
是p-1阶乘法循环群;
S14、可信权威机构TA根据以上变量生成系统公开密钥PK=(e,G,GT,p,H1,H2,g,ga,gb,gc,gd,g1/b)、主密钥MK=(a,b,c)以及ElGamal加密算法的私钥d,称作ElGamal私钥d。
生成用户私钥的过程如下:
可信权威机构TA获取到数据使用者的属性集S后,随机选择元素r∈Zp,并为每个属性j∈S随机选择对应的元素tj∈Zp,得到用户私钥:
Figure BDA0002530027210000113
另外,本实施例方法还包括数据使用者对新增数据使用者的授权操作,当系统新增数据使用者时,通过这种方式,用户私钥的分配便不需要所有都由可信权威机构TA来进行,过程如下:
当一个属性集为S的数据使用者需要对另一个属性集为
Figure BDA0002530027210000114
的数据使用者进行授权操作时,前者输入自己的用户私钥SK,随机选择
Figure BDA0002530027210000115
并对于每一个属性k∈S′,随机选择一个
Figure BDA0002530027210000116
从而得到分配给新增数据使用者的新的用户私钥:
Figure BDA0002530027210000117
由于授权的算法也重新随机化了用户私钥,所以这与直接在可信权威机构TA生成所达到的效果是一致的。
S2、离线加密:在数据使用者输入待加密的关键字集合W之前,数据拥有者先使用访问策略T生成中间关键字密文IC,并使用系统公开密钥PK将其数据文档加密成数据密文CD,然后将中间关键字密文IC和数据密文CD保留在数据拥有者端。
这里,关键字集合W中的元素表示为键值对的形式。关键字集合W中的所有元素的键组成关键字名集合WN,所有元素的值组成关键字值集合WV。比如,关键字集合W为【姓名:张三,性别:男】,则关键字名集合WN为【姓名,性别】,关键字值集合WV为【张三,男】。
访问策略T是一棵访问树,可看作是通过AND、OR等逻辑词连接而成的属性集,一颗访问树上的叶子与一个属性一一对应。访问策略用于表示能读取数据文档的数据使用者所必须满足的属性条件,比如,假定有一个文件的访问策略T为【9527OR(医院A AND骨科)】,则该访问策略T代表只有属性集中包含9527,或者同时包含医院A和骨科的数据使用者才能访问该文件。
中间关键字密文IC是在此阶段生成并用于后续在线加密阶段的一个中间量,其离线加密过程如下:
S211、用qx表示访问策略T的节点x所拥有的多项式,用Y表示访问策略T的叶子集合,用y表示叶子节点,y∈Y,用attr(y)表示叶子节点y的属性值;
数据拥有者随机选择元素r0∈Zp作为被访问策略T的所有叶子分享的秘密值,即qR(0)=r0
S212、在数据文档的关键字个数为正整数m的情况下,数据拥有者随机选择m个元素ri∈Zp,i∈{1,2,3,...,m},计算
Figure BDA0002530027210000121
其中,br0表示b*r0;C′作为一个与数据文档对应的加密值,将参数b和r0带入到搜索公式中,用于与通过使用其它途径恢复得到的私密参数进行对比,换言之,即C′是用来参与搜索过程的最后一步的计算。
对于
Figure BDA0002530027210000122
其中,Cy代表叶子节点y通过访问树T分享到的秘密值的加密值,用于搜索过程中第一步的身份验证;C′y代表使用访问树T将叶子节点y对应的属性值加密后得到的加密值,也用于搜索过程中第一步的身份验证。
计算
Figure BDA0002530027210000123
其中,cri表示c*ri;C′i与Ci作为中间量,参与后续使用中间关键字密文IC装配得到关键字密文CT的计算。
S213、数据拥有者根据上述变量计算出关键字中间关键字密文IC:
IC=({r1,r2,...,rm},T,C′,{Cy,C′y}y∈Y,{Ci,C′i}i=1,2,...m)
数据密文CD是指加密之后的文档,用户经过搜索得到满足匹配条件的密文以后,可以使用ElGamal私钥d对数据密文CD进行解密,以还原原文档。数据密文CD的离线加密过程如下:
S221、数据拥有者随机生成多位的对称密钥ψ,使用AES算法对数据文档进行加密,从而得到密文CDa;本实施例具体是生成256位的对称密钥ψ;
S222、数据拥有者使用ElGamal算法,加密对称密钥ψ得到密文CDb,ElGamal算法是一个基于Diffie-Hellman密钥交换的非对称加密算法,加密过程如下:
从群G中随机选择元素y,作为ElGamal算法的私钥,从系统公开密钥PK中获取g、gd,计算得到c1=gy,s=(gd)y,其中,g、gd作为公钥的一部分,是两个已经公开的量;c1为ElGamal算法的公钥;s为ElGamal算法需要共享的秘密值;
然后将对称密钥ψ映射为群G的一个元素ψ′上,并计算得到c2=ψ′·s,作为共享秘密值的加密值,最后生成密文CDb={c1,c2};
S223、最后基于CDa和CDb得到数据密文CD={CDa,CDb}。
S3、在线加密:数据拥有者使用中间关键字密文IC以及关键字集合W生成关键字密文CT,并将关键字密文CT和数据密文CD上传至云服务器,由云服务器对CD和CT进行妥善保管。
关键字密文CT用于后续的加密搜索,从而达到在云服务器无法理解搜索信息的前提下找到我们需要的文件的目的,其在线加密过程具体如下:
S31、用WV=wv(1),wv(2),...,wv(m)表示关键字集合W=w1,w2,...,wm的属性值集合,用WN=wn(1),wn(2),...,wn(m)表示关键字集合W=w1,w2,...,wm的属性名集合;
S32、对于每一个关键字的属性值wv(i)∈WV,计算
Figure BDA0002530027210000131
其中,
Figure BDA0002530027210000132
作为一个加密值,将参数c和ri带入到搜索公式中,用于与通过使用其它途径恢复得到的私密参数进行对比,换言之,
Figure BDA0002530027210000133
用来参与搜索过程的第二步的计算;
Figure BDA0002530027210000134
代表使用中间关键字密文中的C′i与关键字值wv(i)的加密值结合后得到的最终加密产物,用于搜索过程的第二步的计算;
S33、数据拥有者根据上述变量和中间关键字密文IC生成关键字密文:
Figure BDA0002530027210000135
S4、生成离线检索令牌:在数据使用者输入布尔关键字值表达式BV进行检索前,数据使用者根据用户私钥SK在本地服务器先生成中间检索令牌IT,并将中间检索令牌IT保留在本地服务器。
生成中间检索令牌的过程如下:
S41、随机选择一个元素t∈Zp,计算
Figure BDA0002530027210000136
并对每一个属性j∈S,基于其随机选择对应的元素tj∈Zp,计算
Figure BDA0002530027210000137
其中,Dt代表对用户私钥中的D=g(ac-r)/b做一个幂运算,即Dt为D的t次方。Dt j代表对用户私钥中的
Figure BDA0002530027210000141
做一个幂运算,即Dt j为Dj的t次方。(D′j)t代表对用户私钥中的
Figure BDA0002530027210000142
做一个幂运算,即(D′j)t为D′j的t次方。
Figure BDA0002530027210000143
作为一个与令牌对应的加密值,将参数a、b、c、t和r带入到搜索公式中,用于与通过使用其它途径恢复得到的私密参数进行对比,换言之,
Figure BDA0002530027210000144
用来参与搜索过程的最后一步的计算。
Figure BDA0002530027210000145
代表将参数t与用户私钥中的参数Dj结合,用于搜索过程中第一步的身份验证。
Figure BDA0002530027210000146
代表将参数t与用户私钥中的参数D′j结合,也用于搜索过程中第一步的身份验证。
S42、数据使用者根据上述变量,生成中间检索令牌
Figure BDA0002530027210000147
S5、生成在线检索令牌:在数据使用者输入布尔关键字值表达式BV后,数据使用者在本地服务器上使用中间检索令牌IT与布尔关键字值表达式BV生成检索令牌TK,并将检索令牌TK发送到云服务器。
生成检索令牌的过程如下:
S51、用
Figure BDA0002530027210000148
表示布尔关键字名表达式BN的节点
Figure BDA0002530027210000149
所拥有的多项式,用
Figure BDA00025300272100001410
表示布尔关键字名表达式BN的叶子集合,用attr(y)表示叶子节点y的属性值;
数据使用者将t作为被布尔关键字名表达式BN的所有叶子分享的秘密值,即
Figure BDA00025300272100001411
这里,布尔关键字值表达式BV和布尔关键字名表达式BN拥有相同的访问树结构,并且拥有类似键值对的一一对应形式。布尔关键字值表达式BV与布尔关键字名表达式BN一起组成布尔关键字表达式B。布尔关键字表达式B可看作是通过AND、OR等逻辑词连接而成的关键字集,用于表示数据用户想要查询何种数据,即搜索条件。比如,假定有一个布尔关键字表达式B为【(编号=“9527”AND疾病=“糖尿病”)OR姓名=“李华”】,则布尔关键字名表达式BN为【(编号AND疾病)OR姓名】,布尔关键字值表达式BV为【(9527AND糖尿病)OR李华】。该布尔关键字表达式B代表用户想搜索编号为9527且疾病为糖尿病,或姓名为李华的所有文档。在读取布尔关键字名表达式中“编号”对应的值时,返回的结果为布尔关键字值表达式中的“9527”。
S52、对于每个
Figure BDA00025300272100001412
计算
Figure BDA00025300272100001413
其中,bn(i)为表示成访问树形式的布尔关键字名表达式的一个叶子节点。
Figure BDA00025300272100001414
为叶子节点bn(i)所对应的关键字值的加密值,参与搜索过程的第二步,用于验证用户令牌与加密关键字密文是否匹配。
Figure BDA00025300272100001415
代表叶子节点bn(i)经过访问树分享得到的秘密值
Figure BDA00025300272100001416
与主密钥MK中的一个参数c结合后得到的加密值,同样参与搜索过程的第二步,用于验证用户令牌与加密关键字密文是否匹配;
S53、数据使用者根据上述变量和中间检索令牌,生成检索令牌:
Figure BDA0002530027210000151
S6、云服务器根据检索令牌TK来对数据使用者对每一个数据文档的访问权限进行判定,并将检索令牌TK和权限内对应数据密文CD的关键字密文CT进行匹配,并将在其访问权限内并满足搜索条件的数据密文CD发送给数据使用者,过程如下:
S61、针对云服务器中的每个数据密文CD,云服务器从属性集S中选择满足访问策略T的最小属性集S′,从关键字名集合WN中选择满足布尔关键字名表达式BN的最小关键字名集合W′N
如果S′和W′N不存在,则说明访问权限不够或者找不到匹配内容,故退出对该文件的检索;如果S′和W′N存在,则进行步骤S62。
S62、如果节点y是访问树T的一个叶子节点,令属性j=attr(y),对于每个j∈S′,云服务器计算:
Figure BDA0002530027210000152
对于每个
Figure BDA0002530027210000153
令Ey=⊥。其中Ey代表对加密值Cy
Figure BDA0002530027210000154
C′y
Figure BDA0002530027210000155
经过双线性映射计算后得到的,叶子节点y由访问树T分享得到的秘密值的加密值,它将用于在访问树中通过多项式插值的方式恢复秘密值,以得到原本想要通过访问树T分享的秘密值r0的加密值ER
S63、如果节点y是访问策略T的一个非叶子节点,若对节点y的所有子节点z,均有Ez=⊥,则Ey=⊥。其中,Ez与Ey一样,也是加密值,代表节点z的加密值;
否则,云服务器通过多项式插值的方式计算出Ey
Figure BDA0002530027210000156
式中,
Figure BDA0002530027210000157
表示拉格朗日系数,用于拉格朗日插值法这种多项式插值法,其中,这里i表示子节点z在父节点y中的顺位,S′y表示节点y的所有在最小属性集合S′中的子节点组成的集合。在
Figure BDA0002530027210000158
中,i∈Zp
Figure BDA0002530027210000159
j∈Zp,最后得到
Figure BDA00025300272100001510
Figure BDA00025300272100001511
即为变量x取0时得到的式子。例如,集合S′y中有三个元素{x0,x1,x2},当i=0,则
Figure BDA00025300272100001512
进一步,当x=0时,
Figure BDA0002530027210000161
最后,云服务器将计算出访问策略T的根节点的ER值,其中,ER代表本想要通过访问树T分享的秘密值r0的加密值:
Figure BDA0002530027210000162
S64、定义
Figure BDA0002530027210000163
为布尔关键字名表达式BN的叶节点,
Figure BDA0002530027210000164
为叶节点
Figure BDA0002530027210000165
代表的关键字名;
对于所有的bn∈W′N,云服务器计算
Figure BDA0002530027210000166
其中,
Figure BDA0002530027210000167
代表对加密值
Figure BDA0002530027210000168
Figure BDA0002530027210000169
经过双线性映射计算后得到的,叶子节点
Figure BDA00025300272100001610
由布尔关键字名表达式BN表示成的访问树分享得到的秘密值的加密值,它将用于在访问树中通过多项式插值的方式恢复秘密值,以得到原本想要通过访问树分享的秘密值t的加密值
Figure BDA00025300272100001611
Figure BDA00025300272100001612
S65、如果节点
Figure BDA00025300272100001613
是布尔关键字名表达式BN的一个非叶子节点,若对节点
Figure BDA00025300272100001614
的所有子节点
Figure BDA00025300272100001615
均有
Figure BDA00025300272100001616
Figure BDA00025300272100001617
否则,则是用多项式插值法计算得到
Figure BDA00025300272100001618
Figure BDA00025300272100001619
最后,云服务器计算出布尔关键字名表达式BN的根节点的
Figure BDA00025300272100001620
值:
Figure BDA00025300272100001621
S66、云服务器根据以上变量,确认以下等式是否成立:
Figure BDA00025300272100001622
若成立,说明数据文档访问权限在数据使用者权限内且与搜索条件匹配,则云服务器将对应的数据密文CD返回给数据使用者;
若不成立,说明数据文档访问权限在数据用户权限内但与搜索条件不匹配,退出检索。
S7、数据使用者从云服务器收到数据密文CD后,使用从可信权威机构TA中获得的ElGamal私钥d解密数据密文,最终得到原数据文档D。
解密的过程如下:
使用ElGamal私钥d计算得到s=c1 d,随后计算ψ′=c2·s-1,最后将ψ′映射回对称密钥ψ;
基于对称密钥ψ,使用AES算法解密密文CDa,得到原数据文档内容。
实施例2
本实施例公开了一种在线离线的基于属性的布尔关键字可搜索加密系统,如图2所示,包括:运行于可信权威机构TA的初始化子系统、运行于数据拥有者端的加密子系统、运行于云服务器上的云存储及检索子系统、运行于数据使用者端的令牌生成及解密系统。所述系统可执行实施例1中所述的在线离线的基于属性的布尔关键字可搜索加密方法,方法步骤S4和S5中的本地服务器即为数据使用者端,数据使用者可通过具有运算处理能力的终端设备,例如智能手机、平板、电脑等计算设备连接本地服务器。
其中,运行于可信权威机构TA的初始化子系统包括初始化模块、主密钥存储模块和私钥生成模块:
初始化模块用于生成系统公开密钥PK、主密钥MK,以及ElGamal私钥d,并将系统公开密钥PK公开发布于云服务器,将主密钥保存至主密钥存储模块,将ElGamal私钥d发送给每个数据使用者;
主密钥存储模块用于存储主密钥,只允许可信权威机构TA访问;
私钥生成模块根据主密钥和系统中各个数据使用者的属性集S,生成属于数据使用者自己的私钥,并将数据使用者的私钥发往令牌生成及解密系统的私钥存储模块进行存储;
运行于数据拥有者端的加密子系统包括离线关键字加密模块、数据加密模块和在线关键字加密模块:
离线关键字加密模块用于在数据使用者输入待加密的关键字集合W之前,先使用访问策略T生成中间关键字密文IC;
数据加密模块用于从云服务器中获取系统公开密钥PK,然后使用系统公开密钥PK将数据使用者的数据文档加密成数据密文CD,并上传至云服务器;
在线关键字加密模块用于使用中间关键字密文IC以及关键字集合W生成关键字密文CT,并将关键字密文CT上传至云服务器;
运行于云服务器上的云存储及检索子系统包括系统公开密钥公开模块、存储模块和检索模块:
系统公开密钥公开模块用于将系统公开密钥PK公开发布;
存储模块用于存储数据拥有者加密后的数据密文CD和关键字密文CT;
检索模块用于根据令牌生成及解密子系统的检索令牌TK来对数据使用者的数据文档访问权限进行判定,并将检索令牌和权限内对应数据密文CD的关键字密文CT进行匹配运算,从存储模块中获取在数据使用者的访问权限内并满足搜索条件的数据密文CD发送给数据使用者;
运行于数据使用者端的令牌生成及解密系统包括私钥存储模块、离线令牌生成模块、在线令牌生成模块以及数据解密模块:
私钥存储模块用于对数据使用者的私钥进行保存,只有数据使用者自己能访问自己的私钥;
离线令牌生成模块用于根据用户私钥SK生成中间检索令牌IT;
在线令牌生成模块用于使用中间检索令牌IT与布尔关键字值表达式BV生成检索令牌TK,并将检索令牌TK发送到云服务器;
数据解密模块用于在检索模块收到数据密文CD后,使用初始化模块获得的ElGamal私钥d解密数据密文,得到原数据文档D。
如图3所示,将本实施例系统应用于医疗场景中,系统具体可为医疗保健系统。该系统具有多位数据使用者(数据使用者1,数据使用者2,……,数据使用者n),可存储多位数据拥有者(数据拥有者1,数据拥有者2,……,数据拥有者n)的数据文档。这里设定数据文档的搜索关键字个数m=4,每个关键字的关键字名分别是姓名、年龄、性别、疾病。
系统的工作过程具体如下:
首先,可信权威机构TA运行初始化子系统:初始化和私钥生成模块生成系统公开密钥PK、主密钥MK、ElGamal私钥d,为各个数据使用者生成用户私钥SK,并将系统公开密钥PK公开发布于云服务器,将ElGamal私钥d和对应的用户私钥SK发送给数据使用者,将主密钥MK保存至主密钥存储模块。在用户私钥中,SK数据使用者的用户属性个数n=3,每个属性的属性名分别是姓名、编号、科室。
设定数据拥有者1拥有三个数据文档1、2、3。其中:
数据文档1各个关键字名对应的关键字值依次是:【姓名=“张三”、年龄=“53”、性别=“男”、疾病=“心脏病”】,实施的访问策略为T1:【9527OR心内科】;
数据文档2各个关键字名对应的关键字值依次是:【姓名=“李四”、年龄=“47”、性别=“男”、疾病=“气管炎”】,实施的访问策略为T2:【7348OR呼吸内科】;
数据文档3各个关键字名对应的关键字依次是:【姓名=“王五”、年龄=“20”、性别=“男”、疾病=“肩周炎”】,实施的访问策略为T3:【8370OR(李冬兰AND骨科)】。
为加密以上文档,数据拥有者1运行加密子系统,数据加密模块从云服务器取得系统公开密钥PK,然后使用系统公开密钥PK以及访问策略T,依次生成三个文档的中间关键字密文[IC1,IC2,IC3],并加密文档,得到文档密文[CD1,CD2,CD3]。之后,在线关键字加密模块根据三个文档的关键字集合[W1,W2,W3],一一将ICi与Wi,(i=1,2,3)结合,得到关键字密文[CT1,CT2,CT3],最后将关键字密文[CT1,CT2,CT3]与文档密文[CD1,CD2,CD3]一起上传至云服务器。
云服务器接收数据拥有者1的密文集后,将CTi与CDi一一绑定并存储在云存储子系统的存储模块中。为简化说明,这里假定当前存储模块只存储了数据拥有者1的上述三个关键字密文[CT1,CT2,CT3]和文档密文[CD1,CD2,CD3]。
假设数据使用者1的各个属性的属性值依次是:【“李冬兰”、“2543”、“骨科”】。若该数据使用者1想查询提供者姓名为王五且患有肩周炎的病人的有关文档,则运行令牌生成及解密系统的离线令牌生成模块,该模块在检索关键字向量【姓名=“王五”AND疾病=“肩周炎”】也就是布尔关键字表达式B输入前,根据用户私钥SK中包含的用户属性集S【“李冬兰”、“2543”、“骨科”】生成中间检索令牌IT。之后,在线令牌生成模块利用中间检索令牌IT与检索关键字向量【姓名=“王五”AND疾病=“肩周炎”】生成检索令牌TK,并发送至云服务器。
云服务器接收到数据使用者1的检索令牌后,运行检索模块,逐一用存储模块中的关键字密文[CT1,CT2,CT3]中的访问策略[T1,T2,T3]与检索令牌TK中的属性集S【“李冬兰”、“2543”、“骨科”】判断数据使用者1的权限,并判断每一个加密关键字CTi的关键字集合W是否能满足搜索关键字名BN【姓名AND疾病】,是则说明匹配得上,从而初步判断出云存储及检索子系统中是否有存在满足匹配条件的加密数据文档。
这里假定数据文档3满足匹配条件,运算完成后,云服务器将符合条件的数据密文CD3返回至数据使用者1。数据使用者1接收到返回的数据密文CD3后,运行令牌生成及解密系统的数据解密模块,即可将CD3恢复成数据文档3的明文内容。
在此需要说明的是,本实施例的系统仅以上述各功能模块的划分进行举例说明,在实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。

Claims (10)

1.一种在线离线的基于属性的布尔关键字可搜索加密方法,其特征在于,步骤如下:
S1、可信权威机构TA先生成系统公开密钥PK、主密钥MK,以及用于解密数据的ElGamal私钥d,并将系统公开密钥PK公开发布于云服务器,将主密钥MK保存在可信权威机构TA,将ElGamal私钥d发送给每个数据使用者;
可信权威机构根据主密钥MK以及各个数据使用者的属性集S,生成各个数据使用者自己的用户私钥SK并发送给对应的数据使用者;
S2、离线加密:在数据使用者输入待加密的关键字集合W之前,数据拥有者先使用访问策略T生成中间关键字密文IC,并使用系统公开密钥PK将其数据文档加密成数据密文CD,然后将中间关键字密文IC和数据密文CD保留在数据拥有者端;
S3、在线加密:数据拥有者使用中间关键字密文IC以及关键字集合W生成关键字密文CT,并将关键字密文CT和数据密文CD上传至云服务器;
S4、生成离线检索令牌:在数据使用者输入布尔关键字值表达式BV进行检索前,数据使用者根据用户私钥SK在本地服务器先生成中间检索令牌IT,并将中间检索令牌IT保留在本地服务器;
S5、生成在线检索令牌:在数据使用者输入布尔关键字值表达式BV后,数据使用者在本地服务器上使用中间检索令牌IT与布尔关键字值表达式BV生成检索令牌TK,并将检索令牌TK发送到云服务器;
S6、云服务器根据检索令牌TK来对数据使用者对每一个数据文档的访问权限进行判定,并将检索令牌TK和权限内对应数据密文CD的关键字密文CT进行匹配,并将在其访问权限内并满足搜索条件的数据密文CD发送给数据使用者;
S7、数据使用者从云服务器收到数据密文CD后,使用从可信权威机构TA中获得的ElGamal私钥d解密数据密文,最终得到原数据文档D。
2.根据权利要求1所述的在线离线的基于属性的布尔关键字可搜索加密方法,其特征在于,在步骤S1中,可信权威机构TA生成系统公开密钥PK、主密钥MK,以及ElGamal私钥d的过程如下:
S11、可信权威机构TA使用群生成器Γ执行Γ(1l),生成(p,G,GT,e),其中,l为输入群生成器的安全参数,p是一个素数,G和GT为p阶循环群,且e:G×G→GT,e为双线性映射关系,表示将群G中的两个元素映射到群GT中的一个元素;
S12、可信权威机构TA选择一个哈希函数H1:{0,1}*→G作为随机预言机,选择另一个哈希函数H2:{0,1}*→Zp作为单向哈希函数,Zp表示p阶加法循环群;
S13、可信权威机构TA随机选择元素g∈G,元素a,b,c∈Zp,元素
Figure FDA0002530027200000021
Figure FDA0002530027200000022
是p-1阶乘法循环群;
S14、可信权威机构TA根据以上变量生成系统公开密钥PK=(e,G,GT,p,H1,H2,g,ga,gb,gc,gd,g1/b)、主密钥MK=(a,b,c)以及ElGamal私钥d;ElGamal私钥d具体是通过加密信道发送给数据使用者;
可信权威机构TA生成用户私钥的过程如下:
可信权威机构TA获取到数据使用者的属性集S后,随机选择元素r∈Zp,并为每个属性j∈S随机选择对应的元素tj∈Zp,得到用户私钥:
Figure FDA0002530027200000023
生成的用户私钥SK具体是通过加密通道发送给数据使用者。
3.根据权利要求2所述的在线离线的基于属性的布尔关键字可搜索加密方法,其特征在于,方法还包括数据使用者对新增数据使用者的授权操作,通过这种方式,密钥的分配便不需要所有都由可信权威机构TA来进行,过程如下:
当一个属性集为S的数据使用者需要对另一个属性集为S′,
Figure FDA0002530027200000024
的数据使用者进行授权操作时,前者输入自己的用户私钥SK,随机选择
Figure FDA0002530027200000025
并对于每一个属性k∈S′,随机选择一个
Figure FDA0002530027200000026
从而得到分配给新增数据使用者的新的用户私钥:
Figure FDA0002530027200000027
4.根据权利要求2所述的在线离线的基于属性的布尔关键字可搜索加密方法,其特征在于,在步骤S2中,中间关键字密文IC的离线加密过程如下:
S211、基于访问策略T具有访问树结构,表示的是能读取数据文档的数据使用者所必须满足的属性条件,这里用qx表示访问策略T的节点x所拥有的多项式,用Y表示访问策略T的叶子集合,用y表示叶子节点,y∈Y,用attr(y)表示叶子节点y的属性值;
数据拥有者随机选择元素r0∈Zp作为被访问策略T的所有叶子分享的秘密值,即qR(0)=r0
S212、在数据文档的关键字个数为正整数m的情况下,数据拥有者随机选择m个元素ri∈Zp,i为序号,i∈{1,2,3,...,m},计算
Figure FDA0002530027200000031
其中,br0表示b*r0,C′为一个与数据文档对应的加密值,用来参与搜索过程的最后一步的计算;
对于
Figure FDA0002530027200000032
其中,Cy代表叶子节点y通过访问树T分享到的秘密值的加密值,用于搜索过程中第一步的身份验证;C′y代表使用访问树T将叶子节点y对应的属性值加密后得到的加密值,也用于搜索过程中第一步的身份验证;
计算
Figure FDA0002530027200000033
其中,cri表示c*ri,C′i与Ci作为中间量,用于参与后续使用中间关键字密文IC装配得到关键字密文CT的计算;
S213、数据拥有者根据上述变量计算出关键字中间关键字密文IC:
IC=({r1,r2,...,rm},T,C′,{Cy,C′y}y∈Y,{Ci,C′i}i=1,2,...m)
数据密文CD的离线加密过程如下:
S221、数据拥有者随机生成多位的对称密钥ψ,使用AES算法对数据文档进行加密,从而得到密文CDa
S222、数据拥有者使用ElGamal算法,加密对称密钥ψ得到密文CDb
从群G中随机选择元素y,作为ElGamal算法的私钥,从系统公开密钥PK中获取g、gd,计算得到c1=gy,s=(gd)y,其中,g、gd作为公钥的一部分,是两个已经公开的量;c1为ElGamal算法的公钥;s为ElGamal算法需要共享的秘密值;
然后将对称密钥ψ映射为群G的一个元素ψ′上,并计算得到c2=ψ′·s,作为共享秘密值的加密值,最后生成密文CDb={c1,c2};
S223、最后基于CDa和CDb得到数据密文CD={CDa,CDb}。
5.根据权利要求4所述的在线离线的基于属性的布尔关键字可搜索加密方法,其特征在于,在步骤S3中,关键字密文CT的在线加密过程如下:
S31、用WV=wv(1),wv(2),...,wv(m)表示关键字集合W=w1,w2,...,wm的属性值,用WN=wn(1),wn(2),...,wn(m)表示关键字集合W=w1,w2,...,wm的属性名;
S32、对于每一个关键字的属性值wv(i)∈WV,计算
Figure FDA0002530027200000041
其中,
Figure FDA0002530027200000042
作为一个加密值,用来参与搜索过程的第二步的计算;
Figure FDA0002530027200000043
代表使用中间关键字密文中的C′i与关键字值wv(i)的加密值结合后得到的最终加密产物,用于搜索过程的第二步的计算;
S33、数据拥有者根据上述变量和中间关键字密文IC生成关键字密文:
Figure FDA0002530027200000044
6.根据权利要求2所述的在线离线的基于属性的布尔关键字可搜索加密方法,其特征在于,步骤S4生成离线检索令牌的过程如下:
S41、随机选择一个元素t∈Zp,计算
Figure FDA0002530027200000045
并对每一个属性j∈S,基于其随机选择对应的元素tj∈Zp,计算
Figure FDA0002530027200000046
其中,Dt代表对用户私钥中的D=g(ac-r)/b做一个幂运算,即Dt为D的t次方;Dt j代表对用户私钥中的
Figure FDA0002530027200000047
做一个幂运算,即Dt j为Dj的t次方;(D′j)t代表对用户私钥中的
Figure FDA0002530027200000048
做一个幂运算,即(D′j)t为D′j的t次方;
Figure FDA0002530027200000049
为一个与令牌对应的加密值,用来参与搜索过程的最后一步的计算;
Figure FDA00025300272000000410
代表将参数t与用户私钥中的参数Dj结合,用于搜索过程中第一步的身份验证;
Figure FDA00025300272000000411
代表将参数t与用户私钥中的参数D′j结合,也用于搜索过程中第一步的身份验证;
S42、数据使用者根据上述变量,生成中间检索令牌
Figure FDA00025300272000000412
7.根据权利要求6所述的在线离线的基于属性的布尔关键字可搜索加密方法,其特征在于,步骤S5生成在线检索令牌的过程如下:
S51、基于布尔关键字值表达式BV和布尔关键字名表达式BN拥有相同的访问树结构,这里用
Figure FDA00025300272000000413
表示布尔关键字名表达式BN的节点
Figure FDA00025300272000000414
所拥有的多项式,用
Figure FDA00025300272000000415
表示布尔关键字名表达式BN的叶子集合,用attr(y)表示叶子节点y的属性值;
数据使用者将t作为被布尔关键字名表达式BN的所有叶子分享的秘密值,即
Figure FDA00025300272000000416
S52、对于每个
Figure FDA00025300272000000417
计算
Figure FDA00025300272000000418
其中,bn(i)为表示成访问树形式的布尔关键字名表达式的一个叶子节点;
Figure FDA00025300272000000419
为叶子节点bn(i)所对应的关键字值的加密值;
Figure FDA00025300272000000420
代表叶子节点bn(i)经过访问树分享得到的秘密值
Figure FDA00025300272000000421
与主密钥MK中的一个参数c结合后得到的加密值;
S53、数据使用者根据上述变量和中间检索令牌,生成检索令牌:
Figure FDA00025300272000000422
8.根据权利要求2所述的在线离线的基于属性的布尔关键字可搜索加密方法,其特征在于,步骤S6过程如下:
S61、针对云服务器中的每个数据密文CD,云服务器从属性集S中选择满足访问策略T的最小属性集S′,从关键字名集合WN中选择满足布尔关键字名表达式BN的最小关键字名集合W′N
如果S′和W′N不存在,则说明访问权限不够或者找不到匹配内容,故退出对该文件的检索;如果S′和W′N存在,则进行步骤S62;
S62、如果节点y是访问策略T的一个叶子节点,令属性j=attr(y),对于每个j∈S′,云服务器计算:
Figure FDA0002530027200000051
其中,
Figure FDA0002530027200000052
对于每个
Figure FDA0002530027200000053
令Ey=⊥,其中,Ey代表对加密值Cy
Figure FDA0002530027200000054
C′y
Figure FDA0002530027200000055
经过双线性映射计算后得到的,叶子节点y由访问树T分享得到的秘密值的加密值;
S63、如果节点y是访问策略T的一个非叶子节点,若对节点y的所有子节点z,均有Ez=⊥,则Ey=⊥,其中,Ez代表节点z的加密值;
否则,云服务器通过多项式插值的方式计算出Ey
Figure FDA0002530027200000056
式中,
Figure FDA0002530027200000057
表示拉格朗日系数,用于拉格朗日插值法这种多项式插值法,其中,这里i表示子节点z在父节点y中的顺位,S′y表示节点y的所有在最小属性集合S′中的子节点组成的集合,在
Figure FDA0002530027200000058
中,i∈Zp
Figure FDA0002530027200000059
j∈Zp,最后得到
Figure FDA00025300272000000510
Figure FDA00025300272000000511
即为变量x取0时得到的式子;
最后,云服务器将计算出访问策略T的根节点的ER值,其中,ER代表本想要通过访问树T分享的秘密值r0的加密值:
Figure FDA00025300272000000512
S64、定义
Figure FDA00025300272000000513
为布尔关键字名表达式BN的叶节点,
Figure FDA00025300272000000514
为叶节点
Figure FDA00025300272000000515
代表的关键字名;
对于所有的bn∈WN′,云服务器计算
Figure FDA00025300272000000617
其中,
Figure FDA00025300272000000616
代表对加密值
Figure FDA0002530027200000061
Figure FDA0002530027200000062
经过双线性映射计算后得到的,叶子节点
Figure FDA0002530027200000063
由布尔关键字名表达式BN表示成的访问树分享得到的秘密值的加密值:
Figure FDA0002530027200000064
其中,
Figure FDA0002530027200000065
S65、如果节点
Figure FDA0002530027200000066
是布尔关键字名表达式BN的一个非叶子节点,若对节点
Figure FDA0002530027200000067
的所有子节点
Figure FDA0002530027200000068
均有
Figure FDA0002530027200000069
Figure FDA00025300272000000610
否则,则是用多项式插值法计算得到
Figure FDA00025300272000000611
Figure FDA00025300272000000612
最后,云服务器计算出布尔关键字名表达式BN的根节点的
Figure FDA00025300272000000613
值:
Figure FDA00025300272000000614
S66、云服务器根据以上变量,确认以下等式是否成立:
Figure FDA00025300272000000615
若成立,说明数据文档访问权限在数据使用者权限内且与搜索条件匹配,则云服务器将对应的数据密文CD返回给数据使用者;
若不成立,说明数据文档访问权限在数据用户权限内但与搜索条件不匹配,退出检索。
9.根据权利要求1所述的在线离线的基于属性的布尔关键字可搜索加密方法,其特征在于,在步骤S7中,数据使用者使用ElGamal算法对数据密文CD解密的过程如下:
使用ElGamal私钥d计算得到s=c1 d,随后计算ψ′=c2·s-1,最后将ψ′映射回对称密钥ψ,其中,c1为ElGamal算法的公钥,c2为共享秘密值s的加密值;
基于对称密钥ψ,使用AES算法解密密文CDa,得到原数据文档内容。
10.一种在线离线的基于属性的布尔关键字可搜索加密系统,其特征在于,包括:运行于可信权威机构TA的初始化子系统、运行于数据拥有者端的加密子系统、运行于云服务器上的云存储及检索子系统、运行于数据使用者端的令牌生成及解密系统,其中,
运行于可信权威机构TA的初始化子系统包括初始化模块、主密钥存储模块和私钥生成模块:
初始化模块用于生成系统公开密钥PK、主密钥MK,以及ElGamal私钥d,并将系统公开密钥PK公开发布于云服务器,将主密钥保存至主密钥存储模块,将ElGamal私钥d发送给每个数据使用者;
主密钥存储模块用于存储主密钥,只允许可信权威机构TA访问;
私钥生成模块根据主密钥和系统中各个数据使用者的属性集S,生成属于数据使用者自己的私钥,并将数据使用者的私钥发往令牌生成及解密系统的私钥存储模块进行存储;
运行于数据拥有者端的加密子系统包括离线关键字加密模块、数据加密模块和在线关键字加密模块:
离线关键字加密模块用于在数据使用者输入待加密的关键字集合W之前,先使用访问策略T生成中间关键字密文IC;
数据加密模块用于从云服务器中获取系统公开密钥PK,然后使用系统公开密钥PK将数据使用者的数据文档加密成数据密文CD,并上传至云服务器;
在线关键字加密模块用于使用中间关键字密文IC以及关键字集合W生成关键字密文CT,并将关键字密文CT上传至云服务器;
运行于云服务器上的云存储及检索子系统包括系统公开密钥公开模块、存储模块和检索模块:
系统公开密钥公开模块用于将系统公开密钥PK公开发布;
存储模块用于存储数据拥有者加密后的数据密文CD和关键字密文CT;
检索模块用于根据令牌生成及解密子系统的检索令牌TK来对数据使用者的数据文档访问权限进行判定,并将检索令牌和权限内对应数据密文CD的关键字密文CT进行匹配运算,从存储模块中获取在数据使用者的访问权限内并满足搜索条件的数据密文CD发送给数据使用者;
运行于数据使用者端的令牌生成及解密系统包括私钥存储模块、离线令牌生成模块、在线令牌生成模块以及数据解密模块:
私钥存储模块用于对数据使用者的私钥进行保存,只有数据使用者自己能访问自己的私钥;
离线令牌生成模块用于根据用户私钥SK生成中间检索令牌IT;
在线令牌生成模块用于使用中间检索令牌IT与布尔关键字值表达式BV生成检索令牌TK,并将检索令牌TK发送到云服务器;
数据解密模块用于在检索模块收到数据密文CD后,使用初始化模块获得的ElGamal私钥d解密数据密文,得到原数据文档D。
CN202010515751.2A 2020-06-09 2020-06-09 在线离线的基于属性的布尔关键字可搜索加密方法及系统 Active CN111913981B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010515751.2A CN111913981B (zh) 2020-06-09 2020-06-09 在线离线的基于属性的布尔关键字可搜索加密方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010515751.2A CN111913981B (zh) 2020-06-09 2020-06-09 在线离线的基于属性的布尔关键字可搜索加密方法及系统

Publications (2)

Publication Number Publication Date
CN111913981A true CN111913981A (zh) 2020-11-10
CN111913981B CN111913981B (zh) 2022-04-22

Family

ID=73237448

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010515751.2A Active CN111913981B (zh) 2020-06-09 2020-06-09 在线离线的基于属性的布尔关键字可搜索加密方法及系统

Country Status (1)

Country Link
CN (1) CN111913981B (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112861153A (zh) * 2021-02-10 2021-05-28 华中科技大学 一种关键字可搜索延迟加密方法及系统
CN113282946A (zh) * 2021-07-20 2021-08-20 南湖实验室 基于高可信环境下数据访问过程的信息安全方法及系统
CN113300835A (zh) * 2021-04-22 2021-08-24 中国科学院信息工程研究所 一种加密方案接收者确定方法、主动秘密分享方法
WO2021208690A1 (zh) * 2020-11-11 2021-10-21 平安科技(深圳)有限公司 数据加解密方法、装置、设备及存储介质
CN113987558A (zh) * 2021-12-24 2022-01-28 杭州电子科技大学 离线/在线基于格的属性基加密方法
CN114003942A (zh) * 2021-12-30 2022-02-01 北京金睛云华科技有限公司 云环境中支持动态更新的加密布尔搜索方法及系统
CN114357477A (zh) * 2021-12-15 2022-04-15 华南理工大学 支持大规模用户群的布尔关键词可搜索加密方法
CN114666050A (zh) * 2022-03-30 2022-06-24 浙江科技学院 一种抵抗在线和离线关键字猜测攻击的数据传输方法
CN115412233A (zh) * 2022-08-18 2022-11-29 华南理工大学 区块链上基于属性的具有前向和后向隐私的可搜索加密方法及系统
CN117596085A (zh) * 2024-01-19 2024-02-23 华南理工大学 基于属性集的具有前后向隐私的可搜索加密方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107491497A (zh) * 2017-07-25 2017-12-19 福州大学 支持任意语言查询的多用户多关键词排序可搜索加密系统
CN107547530A (zh) * 2017-08-21 2018-01-05 安徽大学 移动云环境下基于属性的在线/离线关键字搜索方法及其云计算应用系统
US20190050398A1 (en) * 2016-04-18 2019-02-14 Shenzhen University File storage method, file search method and file storage system based on public-key encryption with keyword search
CN109872787A (zh) * 2019-02-02 2019-06-11 上海龙健信息技术科技有限公司 一种分布式数据发布与订阅方法
CN111159352A (zh) * 2019-12-31 2020-05-15 陕西师范大学 一种支持多关键词加权检索和结果排序且可验证的加解密方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190050398A1 (en) * 2016-04-18 2019-02-14 Shenzhen University File storage method, file search method and file storage system based on public-key encryption with keyword search
CN107491497A (zh) * 2017-07-25 2017-12-19 福州大学 支持任意语言查询的多用户多关键词排序可搜索加密系统
CN107547530A (zh) * 2017-08-21 2018-01-05 安徽大学 移动云环境下基于属性的在线/离线关键字搜索方法及其云计算应用系统
CN109872787A (zh) * 2019-02-02 2019-06-11 上海龙健信息技术科技有限公司 一种分布式数据发布与订阅方法
CN111159352A (zh) * 2019-12-31 2020-05-15 陕西师范大学 一种支持多关键词加权检索和结果排序且可验证的加解密方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
YU ZHANG ET AL.: "Searchable Public Key Encryption Supporting", 《IEICE TRANS. FUNDAMENTALS》 *
孟祥宇: "面向密文数据的多关键字布尔搜索认证方法", 《中国优秀博硕士学位论文全文数据库(硕士)》 *

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021208690A1 (zh) * 2020-11-11 2021-10-21 平安科技(深圳)有限公司 数据加解密方法、装置、设备及存储介质
CN112861153A (zh) * 2021-02-10 2021-05-28 华中科技大学 一种关键字可搜索延迟加密方法及系统
CN113300835B (zh) * 2021-04-22 2022-05-17 中国科学院信息工程研究所 一种加密方案接收者确定方法、主动秘密分享方法
CN113300835A (zh) * 2021-04-22 2021-08-24 中国科学院信息工程研究所 一种加密方案接收者确定方法、主动秘密分享方法
CN113282946A (zh) * 2021-07-20 2021-08-20 南湖实验室 基于高可信环境下数据访问过程的信息安全方法及系统
CN113282946B (zh) * 2021-07-20 2021-11-16 南湖实验室 基于高可信环境下数据访问过程的信息安全方法及系统
CN114357477A (zh) * 2021-12-15 2022-04-15 华南理工大学 支持大规模用户群的布尔关键词可搜索加密方法
CN113987558A (zh) * 2021-12-24 2022-01-28 杭州电子科技大学 离线/在线基于格的属性基加密方法
CN114003942A (zh) * 2021-12-30 2022-02-01 北京金睛云华科技有限公司 云环境中支持动态更新的加密布尔搜索方法及系统
CN114666050A (zh) * 2022-03-30 2022-06-24 浙江科技学院 一种抵抗在线和离线关键字猜测攻击的数据传输方法
CN114666050B (zh) * 2022-03-30 2024-03-12 浙江科技学院 一种抵抗在线和离线关键字猜测攻击的数据传输方法
CN115412233A (zh) * 2022-08-18 2022-11-29 华南理工大学 区块链上基于属性的具有前向和后向隐私的可搜索加密方法及系统
CN117596085A (zh) * 2024-01-19 2024-02-23 华南理工大学 基于属性集的具有前后向隐私的可搜索加密方法

Also Published As

Publication number Publication date
CN111913981B (zh) 2022-04-22

Similar Documents

Publication Publication Date Title
CN111913981B (zh) 在线离线的基于属性的布尔关键字可搜索加密方法及系统
CN109768987B (zh) 一种基于区块链的数据文件安全隐私存储和分享方法
CN110474893B (zh) 一种异构跨信任域密态数据安全分享方法及系统
Wang et al. Ciphertext-policy attribute-based encryption with delegated equality test in cloud computing
Liang et al. Searchable attribute-based mechanism with efficient data sharing for secure cloud storage
CN108989026B (zh) 一种发布/订阅环境下用户属性可撤销的方法
CN112365945B (zh) 基于区块链的电子病历细粒度访问控制和密文可搜索方法
CN111431898B (zh) 用于云协助物联网的带搜索的多属性机构属性基加密方法
Sun et al. A searchable personal health records framework with fine-grained access control in cloud-fog computing
Guo et al. Revocable blockchain-aided attribute-based encryption with escrow-free in cloud storage
CN110266687B (zh) 一种采用区块链技术的物联网安全代理数据共享模块设计方法
CN109117662B (zh) 基于区块链的电子病历安全搜索方法
CN110610102B (zh) 一种数据访问方法、装置及系统
CN114142996B (zh) 一种基于sm9密码算法的可搜索加密方法
CN112100649A (zh) 支持布尔访问控制策略的多关键字可搜索加密方法及系统
CN112364376A (zh) 一种属性代理重加密医疗数据共享方法
Niu et al. Attribute-based keyword search encryption scheme with verifiable ciphertext via blockchains
CN114697042A (zh) 一种基于区块链的物联网安全数据共享代理重加密方法
CN114598472A (zh) 基于区块链的条件隐藏可搜索代理重加密方法及存储介质
Sandhia et al. Secure sharing of data in cloud using MA-CPABE with elliptic curve cryptography
Cao et al. A Lightweight Fine‐Grained Search Scheme over Encrypted Data in Cloud‐Assisted Wireless Body Area Networks
CN113836571A (zh) 基于云和区块链的医疗数据拥有终端位置匹配方法及系统
CN115412259B (zh) 基于区块链的云健康系统可搜索代理签密方法及产品
CN116668149A (zh) 一种基于策略隐藏和属性更新的电子医疗数据共享方法
CN108920968B (zh) 一种基于连接关键词的文件可搜索加密方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant