CN115834200A - 基于区块链的属性基可搜索加密数据共享方法 - Google Patents

基于区块链的属性基可搜索加密数据共享方法 Download PDF

Info

Publication number
CN115834200A
CN115834200A CN202211474994.1A CN202211474994A CN115834200A CN 115834200 A CN115834200 A CN 115834200A CN 202211474994 A CN202211474994 A CN 202211474994A CN 115834200 A CN115834200 A CN 115834200A
Authority
CN
China
Prior art keywords
data
key
search
index
trapdoor
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.)
Pending
Application number
CN202211474994.1A
Other languages
English (en)
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.)
Nanjing University of Posts and Telecommunications
Original Assignee
Nanjing University of Posts and Telecommunications
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 Nanjing University of Posts and Telecommunications filed Critical Nanjing University of Posts and Telecommunications
Priority to CN202211474994.1A priority Critical patent/CN115834200A/zh
Publication of CN115834200A publication Critical patent/CN115834200A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)

Abstract

本发明公开了一种基于区块链的属性基可搜索加密数据共享方法,包括如下步骤:每个数据拥有者Di计算自身公共参数和主秘钥,同时将各自公共参数聚合生成系统公共参数;数据拥有者根据每个数据用户DU的属性集为其生成自身聚合私钥;数据拥有者采用对称加密算法对其隐私数据文件进行加密;构建安全搜索索引;数据用户生成搜索陷门;智能合约对搜索陷门和安全可搜索索引进行搜索,验证陷门与密文关键字索引的访问控制策略以及两者中的关键字是否匹配;数据用户解密得到安全隐私数据文件。本发明每个数据用户只需维护一个私钥,每次搜索使用单个陷门,具有高效、防篡改、本地存储开销小、细粒度访问控制、隐私保护等优点。

Description

基于区块链的属性基可搜索加密数据共享方法
技术领域
本发明属于区块链隐私保护和密文数据安全共享技术领域,更具体地说,涉及一种基于区块链的属性基可搜索加密数据共享方法。
背景技术
随着数据的爆炸式增长和云计算的发展,越来越多的组织将其数据和服务外包给云,减少本地的计算和存储开销,考虑到云服务器的不可信以及用户数据的隐私安全需要,数据需要在上传前进行加密处理,在这种环境下,用户会遇到无法在海量数据中搜索关键字的问题,在某种程度上限制了云环境下文件共享的灵活性。
可搜索加密技术的提出实现了在不泄露用户数据隐私的条件下通过关键字完成对加密数据的搜索,能够为用户节省大量的网络和计算开销,但数据用户可以从服务器获取自己任何感兴趣关键字的密文数据,数据拥有者无法实现对数据的细粒度访问,通过将可搜索加密技术和基于属性的加密技术结合则可实现有效的密文关键字搜索和细粒度访问控制。
在多数据所有者环境下,针对现有属性基可搜索加密方案,数据所有者不愿意将维护自身隐私和数据安全的主秘钥与他人共享,因此数据用户必须维护来自不同数据所有者的多个私钥,造成沉重的私钥管理负担,同时数据用户需要使用不同的私钥提交多个陷门来检索数据,这将导致高昂的通信和搜索成本。
云服务器是半诚实且好奇的实体,存在为了节省计算或骗取服务费返回部分或不正确搜索结果的情况,同时用户可能在得到正确结果后声称不正确而拒绝支付服务费,导致服务-支付不公平的现象。
发明内容
本发明的目的在于针对上述现有技术的不足,提出一种基于区块链的属性基可搜索加密数据共享方法,以降低系统通信和搜索开销,实现隐私数据安全共享。
为了解决上述技术问题至少之一,根据本发明的一方面,提供了一种基于区块链的属性基可搜索加密数据共享方法,包括如下步骤:
S10、系统初始化,每个数据拥有者Di计算自身公共参数和主秘钥,同时将各自公共参数聚合生成系统公共参数;
S20、根据数据用户DU的属性集生成聚合私钥;
S30、加密数据文件和关键字索引;
S40、构建安全可搜索索引;通过使用倒排索引结构实现可搜索的安全索引,倒排索引由字典和倒排列表两个部分组成,包含查找表,搜索数组,链表几种数据结构;
S50、生成搜索陷门;数据用户DU根据接收到的聚合私钥加密感兴趣的关键词q,并生成搜索陷门上传至区块链;
S60、搜索;数据用户DU提交查询陷门,搜索智能合约将使用它对安全可搜索索引执行线性搜索,检验搜索陷门与密文关键字索引的访问控制策略是否匹配,并将匹配成功的结果全部发送给验证智能合约;
S70、验证;验证智能合约检验密文关键字索引中的关键字与陷门中的查询关键字是否相同,若匹配成功,则将对应文件的标识符发送给云服务器,同时验证云返回结果的完整性;
S80、解密;
数据用户DU使用对称密钥进行解密。
进一步的,步骤S10具体如下:
S11、定义一个双线性映射e:G1×G1→G2,并选择一个对称密码算法SE=(SE.Enc,SE.Dec)、两个哈希函数H1:{0,1}*→G1、H2:{0,1}*→Zp *,其中,e是双线性映射,G1和G2是两个乘法循环群,SE.Enc是对称加密算法,SE.Dec是对称解密算法,Zp *为模p的整数群;
S12、每个数据拥有者Di选择两个随机数αi和ai,计算
Figure BDA0003959083550000021
Figure BDA0003959083550000022
并发送给其他数据所有者,当每个数据所有者Di接收到所有的Ej和Aj,j∈{1,...,n}\{i},Di计算
Figure BDA0003959083550000023
其中αi、ai属于整数群Zp *,g是G1的生成元,素数p是乘法群G1和G2的阶数;
S13、每个数据拥有者Di,i∈{2,...,n-1},选择一个随机数λi,计算
Figure BDA0003959083550000024
分别发送给Di-1和Di+1,生成自身主秘钥
Figure BDA0003959083550000025
对于数据拥有者D1,则将
Figure BDA0003959083550000026
发送给Dn和D2,而Dn
Figure BDA0003959083550000027
发送给Dn-1和D1,且
Figure BDA0003959083550000028
其中λi属于整数群Zp *
S14、公开系统公共参数PK={E,A},同时数据拥有者Di保密自身主秘钥MKi=(αi,βi)。
进一步的,步骤S20具体如下:
S21、每个数据拥有者Di使用自身主秘钥αi、βi计算βi·(1+αi*p),并将其发送给一个特定数据所有者,该特定数据拥有者计算中间参数A、A′和A″,其具体计算公式为:
Figure BDA0003959083550000031
Figure BDA0003959083550000032
Figure BDA0003959083550000033
S22、根据中间参数A″为属性集为U的数据用户生成第一个密钥参数
Figure BDA0003959083550000034
S23、每个数据拥有者Di选择一个随机数ti,计算aiti和βi·(1+ti*p)发送给一个特定数据拥有者,该特定数据拥有者计算中间参数
Figure BDA0003959083550000035
Figure BDA0003959083550000036
Figure BDA0003959083550000037
其中ti属于整数群Zp *
S24、利用中间参数C、D计算数据用户第二个密钥参数
Figure BDA0003959083550000038
第三个密钥参数
Figure BDA0003959083550000039
以及第四个密钥参数
Figure BDA00039590835500000310
其中x属于属性集合U,H1是哈希函数;
S25、数据拥有者根据上述四个密钥参数生成聚合私钥{K1,K2,K3,{Kx}},并将其通过一个安全通道返回给数据用户DU。
进一步的,步骤S30的具体步骤为:
S31、数据拥有者Di选择k作为对称密钥,利用k对数据文件F进行加密,得到加密后的数据文件Ck=SE.Enc(F),其中SE.Enc为对称加密算法;
S32、数据拥有者将该加密的数据文件上传到云服务器,将密文哈希上传至区块链,云服务器将存储地址返回给数据拥有者;
S33、数据拥有者从数据文件F中提取索引关键字w,并定义一个访问策略(M,ρ)对关键字w进行加密,其中M是一个具有l行和n列的矩阵,ρ为内映射函数,是矩阵M的每一行Mo到属性ρ(x)的映射,每个属性在矩阵M中都有唯一的行与之对应;
S34、数据拥有者选择一个随机数s和n-1个随机值y2,...,yn,组成随机向量
Figure BDA00039590835500000311
Figure BDA00039590835500000312
对于矩阵M的每一行Mθ,θ∈[1,...,l],计算
Figure BDA00039590835500000313
其中s为要分享的秘密值,属于整数群Zp *,Mθ为矩阵M的第θ行向量;
S35、数据拥有者使用PK加密关键字w,计算第一个关键字索引参数
Figure BDA00039590835500000314
第二个关键字索引参数τ2=gs和第三个关键字索引参数
Figure BDA0003959083550000041
其中e是双线性映射,g是G1的生成元,αi属于整数群Zp *,H2为哈希函数,s为秘密值,θ属于[1,...,l],ρ为内映射函数;
S36、数据拥有者将上述关键字索引参数生成的密文关键字索引indw=(τ1,τ2,τθ)上传至区块链中。
进一步的,步骤S40具体为:
S41、初始化,扫描数据文件并构建字典Δ,对于每个关键字w∈Δ,构建Dw,其中Δ为扫描数据文件所有关键字构成的集合,Dw为该关键字w映射的所有数据文件标识符的集合;
S42、构建查找表,它允许对每个链表Li的第一个元素进行定位和解密,查找表中的每个条目对应一个关键字w∈Δ,该条目由<value,address>组成,value字段包含索引关键字indw和Li的第一个元素的解密密钥,address表示Li的第一个元素的存储地址,其中Δ为扫描数据文件所有关键字构成的集合,链表Li存储于数组
Figure BDA0003959083550000042
中,是一组节点的集合;
S43、建立搜索数组
Figure BDA0003959083550000043
对于每个关键字w∈Δ,定义链表节点结构为
Figure BDA0003959083550000044
1≤j≤|Dw|,由于Li的每个元素都包含有关Li的下一个元素的信息,因此解密可获得节点中存储的相应文件标识符和下一节点的解密密钥及位置,直到节点为空,其中“||”为字符串连接符,id(Dw.j)为w关键字对应的第j个数据文件Dw,j的文件标识符,kw,j+1为第(j+1)个关键字节点的解密密钥,addrw,j+1为第(j+1)个关键字节点在表中的地址信息,|Dw|表示该关键字w映射的所有数据文件标识符的总数。
进一步的,步骤S50具体为:
S51、数据用户根据接收到的聚合私钥{K1,K2,K3,{Kx}}选择一个随机数δ,计算中间参数A=K1(K2)δ,B=(K3)δ,Cx={(Kx)δ}x∈U,其中δ属于整数群Zp *,U为数据用户的属性集;
S52、数据用户计算H2(q),并将其哈希值加密为第一个搜索陷门参数
Figure BDA0003959083550000045
Figure BDA0003959083550000046
第二个搜索陷门参数
Figure BDA0003959083550000047
和第三个搜索陷门参数
Figure BDA0003959083550000048
其中q为数据用户想要查询的关键字,αi、ai、ti、δ为整数群Zp */上的随机数,g是乘法循环群G1的生成元,任意x属于属性集U;
S53、数据用户根据上述搜索陷门参数计算搜索陷门Tq=(T1,T2,{Tx}x∈U)并发送至区块链。
进一步的,步骤S60具体为:
S61、数据用户提交查询陷门,区块链中的搜索智能合约将使用查询陷门对安全可搜索索引执行线性搜索,如果Tq中的属性集U不满足与indw关联的(M,ρ),则与下一个关键字索引密文进行匹配;
S62、如果Tq中的属性集满足与indw关联的(M,ρ),则将匹配成功的结果全部发送给验证智能合约。
进一步的,步骤S70具体为:
S71、定义一个{1,2,...,l}的子集为Θ={θ:ρ(θ)∈U},基于Θ和M,搜索算法计算一组常数{χi}i∈Θ,使得∑i∈ΘχiMi=(1,0,...,0),其中Mi是LSSS矩阵的第i行,若U满足与indw关联的(M,ρ),则根据匹配规则检测检测关键字q与w是否匹配,所属匹配规则为:
Figure BDA0003959083550000051
S72、若匹配成功,生成解密查找表所查询关键字对应的链表中第一个节点的解密密钥,由于Li的每个元素都包含有关Li的下一个元素的信息,因此解密可获得节点中存储的相应文件标识符、下一节点的解密密钥和位置,直到节点为空,将对应找出文件标识符集合发送至云服务器;
S73、云服务器将密文文件集合发送至区块链,通过验证智能合约检测数据的完整性,将数据密文发送给用户。
根据本发明的另一方面,提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本发明的基于区块链的属性基可搜索加密数据共享方法中的步骤。
根据本发明的又一方面,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现本发明的基于区块链的属性基可搜索加密数据共享方法中的步骤。
相比于现有技术,本发明至少具有如下有益效果:
1、基于区块链,通过引入搜索智能合约和验证智能合约,将关键字密文索引存储在区块链中,实现数据的防篡改,同时可检验云服务器返回结果的完整性。
2、数据用户只需要维护一个私钥,而不需持有来自不同数据所有者的多个私钥。
3、数据用户每次搜索仅需使用单个陷门,通信和搜索开销可以大大减少。
4、基于属性的加密技术和可搜索加密技术相结合,保证了只有当数据用户的属性集满足密文中的访问策略并且关键字匹配时,区块链才能够返回搜索结果,不仅能够实现细粒度访问控制,而且具有较高的计算效率。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例的附图作简单地介绍,显而易见地,下面描述中的附图仅仅涉及本发明的一些实施例,而非对本发明的限制。
图1是本发明方法的系统模型图;
图2为本发明方法中生成密文及索引的流程图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例的附图,对本发明实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。
除非另作定义,此处使用的技术术语或者科学术语应当为本发明所属领域内具有一般技能的人士所理解的通常意义。
实施例1:
如图1~2所示,一种基于区块链的属性基可搜索加密数据共享方法,包括如下步骤:
步骤1:系统初始化,每个数据拥有者Di计算自身公共参数和主秘钥MKi,同时将各自公共参数聚合生成系统公共参数PK;
步骤1.1:定义一个双线性映射e:G1×G1→G2,并选择一个AES对称密码算法SE=(SE.Enc,SE.Dec)、两个哈希函数H1:{0,1}*→G1、H2:{0,1}*→Zp *,其中,e是双线性映射,G1和G2是两个乘法循环群,SE.Enc是对称加密算法,SE.Dec是对称解密算法,Zp *为模p的整数群;
步骤1.2:每个数据拥有者Di选择两个随机数αi和ai,计算
Figure BDA0003959083550000061
Figure BDA0003959083550000062
并发送给其他数据所有者,当每个数据所有者Di接收到所有的Ej和Aj,j∈{1,...,n}\{i},Di计算
Figure BDA0003959083550000063
其中αi、ai属于整数群Zp *,g是G1的生成元,素数p是乘法群G1和G2的阶数;
步骤1.3:每个数据拥有者Di,i∈{2,...,n-1},选择一个随机数λi,计算
Figure BDA0003959083550000068
分别发送给Di-1和Di+1,生成自身主秘钥
Figure BDA0003959083550000064
对于数据拥有者D1,则将
Figure BDA0003959083550000065
发送给Dn和D2,而Dn
Figure BDA0003959083550000066
发送给Dn-1和D1,且
Figure BDA0003959083550000067
其中λi属于整数群Zp *
步骤1.4:公开系统公共参数PK={E,A},同时保密数据拥有者Di自身主秘钥MKi=(αi,βi)。
步骤2:根据数据用户DU的属性集U生成聚合私钥{K1,K2,K3,{Kx}};
步骤2.1:每个数据拥有者Di使用自身主秘钥αi、βi计算βi·(1+αi*p),并将其发送给一个特定数据所有者,βi用来保证αi的机密性,该特定数据拥有者计算中间参数A、A′和A″,其具体计算公式为:
Figure BDA0003959083550000071
Figure BDA0003959083550000072
Figure BDA0003959083550000073
步骤2.2:根据中间参数A″为属性集为U的数据用户生成第一个密钥参数
Figure BDA0003959083550000074
Figure BDA0003959083550000075
步骤2.3:每个数据拥有者Di选择一个随机数ti,计算aiti和βi·(1+ti*p)发送给一个特定数据拥有者,该特定数据拥有者计算中间参数
Figure BDA0003959083550000076
Figure BDA0003959083550000077
Figure BDA0003959083550000078
其中ti属于整数群Zp *
步骤2.4:利用中间参数C、D计算数据用户第二个密钥参数
Figure BDA0003959083550000079
第三个密钥参数
Figure BDA00039590835500000710
以及第四个密钥参数
Figure BDA00039590835500000711
其中x属于属性集合U,H1是哈希函数;
步骤2.5:数据拥有者根据上述四个密钥参数生成聚合私钥{K1,K2,K3,{Kx}},并将其通过一个安全通道返回给数据用户DU。
如图2所示,步骤3:加密数据文件和关键字索引;
数据拥有者采用AES对称加密算法对数据文件进行加密,并将生成的密文数据上传到云服务器,然后选择合适的LSSS访问策略加密索引关键字w,将生成的索引关键字密文indw上传至区块链;
步骤3.1:数据拥有者Di选择k作为对称密钥,利用k对数据文件F进行加密,得到加密后的数据文件Ck=SE.Enc(F),其中SE.Enc为对称加密算法;
步骤3.2:数据拥有者Di将该加密的数据文件上传到云服务器,将密文哈希上传至区块链,云服务器将存储地址返回给数据拥有者;
步骤3.3:数据拥有者从数据文件F中提取索引关键字w,并定义一个访问策略(M,ρ)对关键字w进行加密,其中M是一个具有l行和n列的矩阵,ρ为内映射函数,是矩阵M的每一行Mθ到属性ρ(x)的映射,每个属性在矩阵M中都有唯一的行与之对应;
步骤3.4:数据拥有者选择一个随机数s和n-1个随机值y2,...,yn,组成随机向量
Figure BDA0003959083550000081
对于矩阵M的每一行Mθ,θ∈[1,...,l],计算
Figure BDA0003959083550000082
其中s为要分享的秘密值,属于整数群Zp *,Mθ为矩阵M的第θ行向量;
步骤3.5:数据拥有者使用PK加密关键字w,计算第一个关键字索引参数
Figure BDA0003959083550000083
Figure BDA0003959083550000084
第二个关键字索引参数τ2=gs和第三个关键字索引参数
Figure BDA0003959083550000085
Figure BDA0003959083550000086
其中e是双线性映射,g是G1的生成元,αi属于整数群Zp *,H2为哈希函数,s为秘密值,θ属于[1,...,l],ρ为内映射函数;
步骤3.6:数据拥有者将上述关键字索引参数生成的密文关键字索引indw=(τ1,τ2,τθ)上传至区块链中。
步骤4:构建安全可搜索索引;
通过使用倒排索引结构实现可搜索的安全索引,倒排索引由字典和倒排列表两个部分组成,包含查找表,搜索数组,链表几种数据结构,其中字典是数据文件中所有关键字构成的集合,而倒排列表由包含关键字的所有文档的标识信息组成,根据需要还包含了指向相应倒排列表的指针及其他一些信息;
步骤4.1:初始化,扫描数据文件并构建字典Δ,对于每个关键字w∈Δ,构建Dw,其中Δ为扫描数据文件所有关键字构成的集合,Dw为该关键字w映射的所有数据文件标识符的集合;
步骤4.2:构建查找表,它允许对每个链表Li的第一个元素进行定位和解密,查找表中的每个条目对应一个关键字w∈Δ,该条目由<value,address>组成,value字段包含索引关键字indw和Li的第一个元素的解密密钥,address表示Li的第一个元素的存储地址,其中Δ为扫描数据文件所有关键字构成的集合,链表Li存储于数组
Figure BDA0003959083550000087
中,是一组节点的集合;
步骤4.3:建立搜索数组
Figure BDA00039590835500000810
对于每个关键字w∈Δ,定义链表节点结构为
Figure BDA0003959083550000088
Figure BDA0003959083550000089
1≤j≤|Dw|,由于Li的每个元素都包含有关Li的下一个元素的信息,因此解密可获得节点中存储的相应文件标识符和下一节点的解密密钥及位置,直到节点为空,其中“||”为字符串连接符,id(Dw,j)为w关键字对应的第j个数据文件Dw,j的文件标识符,kw,j+1为第(j+1)个关键字节点的解密密钥,addrw,j+1为第(j+1)个关键字节点在表中的地址信息,|Dw|表示该关键字w映射的所有数据文件标识符的总数。
步骤5:生成搜索陷门Tq
数据用户DU根据接收到的聚合私钥加密感兴趣的关键词q,并生成搜索陷门Tq上传至区块链;
步骤5.1:数据用户根据接收到的聚合私钥{K1,K2,K3,{Kx}}选择一个随机数6,计算中间参数A=K1(K2)δ,B=(K3)δ,Cx={(Kx)δ}x∈U,其中δ属于整数群Zp *,U为数据用户的属性集;
步骤5.2:数据用户计算H2(q),并将其哈希值加密为第一个搜索陷门参数
Figure BDA0003959083550000091
Figure BDA0003959083550000092
第二个搜索陷门参数
Figure BDA0003959083550000093
和第三个搜索陷门参数
Figure BDA0003959083550000094
其中q为数据用户想要查询的关键字,αi、ai、ti、δ为整数群Zp *上的随机数,g是乘法循环群G1的生成元,任意x属于属性集U;
步骤5.3:数据用户根据上述搜索陷门参数计算搜索陷门Tq=(T1,T2,{Tx}x∈U)并发送至区块链。
步骤6:搜索;
步骤6.1:数据用户提交查询陷门,区块链中的搜索智能合约将使用查询陷门对安全可搜索索引执行线性搜索,如果Tq中的属性集U不满足与indw关联的(M,ρ),则与下一个关键字索引密文进行匹配;
步骤6.2:如果Tq中的属性集满足与indw关联的(M,ρ),则将匹配成功的结果全部发送给验证智能合约。
步骤7:验证;
验证智能合约检验密文关键字索引中的关键字与陷门中的查询关键字是否相同,若匹配成功,则将对应文件的标识符发送给云服务器,同时验证云返回结果的完整性;
步骤7.1:定义一个{1,2,...,1}的子集为Θ={θ:ρ(θ)∈U},基于Θ和M,搜索算法计算一组常数{χi}i∈Θ,使得∑i∈ΘχiMi=(1,0,...,0),其中Mi是LSSS矩阵的第i行,若U满足与indw关联的(M,ρ),则根据匹配规则检测检测关键字q与w是否匹配,所属匹配规则为:
Figure BDA0003959083550000095
步骤7.2:若匹配成功,生成解密查找表所查询关键字对应的链表中第一个节点的解密密钥,由于Li的每个元素都包含有关Li的下一个元素的信息,因此解密可获得节点中存储的相应文件标识符、下一节点的解密密钥和位置,直到节点为空,将对应找出文件标识符集合发送至云服务器;
步骤7.3:云服务器将密文文件集合发送至区块链,通过验证智能合约检测数据的完整性,将数据密文发送给用户。
步骤8:解密;
步骤8.1:数据用户通过安全通道获得对称密钥,进行解密操作。
实施例2:
本实施例的计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现实施例1的基于区块链的属性基可搜索加密数据共享方法中的步骤。
本实施例的计算机可读存储介质可以是终端的内部存储单元,例如终端的硬盘或内存;本实施例的计算机可读存储介质也可以是所述终端的外部存储设备,例如终端上配备的插接式硬盘,智能存储卡,安全数字卡,闪存卡等;进一步地,计算机可读存储介质还可以既包括终端的内部存储单元也包括外部存储设备。
本实施例的计算机可读存储介质用于存储计算机程序以及终端所需的其他程序和数据,计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
实施例3:
本实施例的计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现实施例1的基于区块链的属性基可搜索加密数据共享方法中的步骤。
本实施例中,处理器可以是中央处理单元,还可以是其他通用处理器、数字信号处理器、专用集成电路、现成可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等;存储器可以包括只读存储器和随机存取存储器,并向处理器提供指令和数据,存储器的一部分还可以包括非易失性随机存取存储器,例如,存储器还可以存储设备类型的信息。
本领域内的技术人员应明白,实施例公开的内容可提供为方法、系统、或计算机程序产品。因此,本方案可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本方案可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本方案是参照根据本方案实施例的方法、和计算机程序产品的流程图和/或方框图来描述的,应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合;可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-OnlyMemory,ROM)或随机存储记忆体(RandomAccessMemory,RAM)等。
本发明所述实例仅仅是对本发明的优选实施方式进行描述,并非对本发明构思和范围进行限定,在不脱离本发明设计思想的前提下,本领域工程技术人员对本发明的技术方案作出的各种变形和改进,均应落入本发明的保护范围。

Claims (10)

1.一种基于区块链的属性基可搜索加密数据共享方法,其特征在于,包括如下步骤:
S10、系统初始化,每个数据拥有者Di计算自身公共参数和主秘钥,同时将各自公共参数聚合生成系统公共参数;
S20、根据数据用户DU的属性集生成聚合私钥;
S30、加密数据文件和关键字索引;
S40、构建安全可搜索索引;通过使用倒排索引结构实现可搜索的安全索引,倒排索引由字典和倒排列表两个部分组成,包含查找表,搜索数组,链表几种数据结构;
S50、生成搜索陷门;数据用户DU根据接收到的聚合私钥加密感兴趣的关键词q,并生成搜索陷门上传至区块链;
S60、搜索;数据用户DU提交查询陷门,搜索智能合约将使用它对安全可搜索索引执行线性搜索,检验搜索陷门与密文关键字索引的访问控制策略是否匹配,并将匹配成功的结果全部发送给验证智能合约;
S70、验证;验证智能合约检验密文关键字索引中的关键字与陷门中的查询关键字是否相同,若匹配成功,则将对应文件的标识符发送给云服务器,同时验证云返回结果的完整性;
S80、解密;
数据用户DU使用对称密钥进行解密。
2.根据权利要求1所述的方法,其特征在于,步骤S10具体如下:
S11、定义一个双线性映射e:G1×G1→G2,并选择一个对称密码算法SE=(SE.Enc,SE.Dec)、两个哈希函数H1:{0,1}*→G1、H2:{0,1}*→Zp *,其中,e是双线性映射,G1和G2是两个乘法循环群,SE.Enc是对称加密算法,SE.Dec是对称解密算法,Zp *为模p的整数群;
S12、每个数据拥有者Di选择两个随机数αi和ai,计算
Figure FDA0003959083540000011
Figure FDA0003959083540000012
并发送给其他数据所有者,当每个数据所有者Di接收到所有的Ej和Aj,j∈{1,...,n}\{i},Di计算
Figure FDA0003959083540000013
其中αi、ai属于整数群Zp *,g是G1的生成元,素数p是乘法群G1和G2的阶数;
S13、每个数据拥有者Di,i∈{2,...,n-1},选择一个随机数λi,计算
Figure FDA0003959083540000014
分别发送给Di-1和Di+1,生成自身主秘钥
Figure FDA0003959083540000015
对于数据拥有者D1,则将
Figure FDA0003959083540000016
发送给Dn和D2,而Dn
Figure FDA0003959083540000017
发送给Dn-1和D1,且
Figure FDA0003959083540000018
其中λi属于整数群Zp *
S14、公开系统公共参数PK={E,A},同时数据拥有者Di保密自身主秘钥MKi=(αi,βi)。
3.根据权利要求1所述的方法,其特征在于,步骤S20具体如下:
S21、每个数据拥有者Di使用自身主秘钥αi、βi计算βi·(1+αi*p),并将其发送给一个特定数据所有者,该特定数据拥有者计算中间参数A、A′和A″,其具体计算公式为:
Figure FDA0003959083540000021
Figure FDA0003959083540000022
Figure FDA0003959083540000023
S22、根据中间参数A″为属性集为U的数据用户生成第一个密钥参数
Figure FDA0003959083540000024
S23、每个数据拥有者Di选择一个随机数ti,计算aiti和βi·(1+ti*p)发送给一个特定数据拥有者,该特定数据拥有者计算中间参数
Figure FDA0003959083540000025
Figure FDA0003959083540000026
Figure FDA0003959083540000027
其中ti属于整数群Zp *
S24、利用中间参数C、D计算数据用户第二个密钥参数
Figure FDA0003959083540000028
第三个密钥参数
Figure FDA0003959083540000029
以及第四个密钥参数
Figure FDA00039590835400000210
其中x属于属性集合U,H1是哈希函数;
S25、数据拥有者根据上述四个密钥参数生成聚合私钥{K1,K2,K3,{Kx}},并将其通过一个安全通道返回给数据用户DU。
4.根据权利要求1所述的方法,其特征在于,步骤S30的具体步骤为:
S31、数据拥有者Di选择k作为对称密钥,利用k对数据文件F进行加密,得到加密后的数据文件Ck=SE.Enc(F),其中SE.Enc为对称加密算法;
S32、数据拥有者将该加密的数据文件上传到云服务器,将密文哈希上传至区块链,云服务器将存储地址返回给数据拥有者;
S33、数据拥有者从数据文件F中提取索引关键字w,并定义一个访问策略(M,ρ)对关键字w进行加密,其中M是一个具有l行和n列的矩阵,ρ为内映射函数,是矩阵M的每一行Mθ到属性ρ(x)的映射,每个属性在矩阵M中都有唯一的行与之对应;
S34、数据拥有者选择一个随机数s和n-1个随机值y2,...,yn,组成随机向量
Figure FDA00039590835400000211
Figure FDA00039590835400000212
对于矩阵M的每一行Mθ,θ∈[1,...,l],计算
Figure FDA00039590835400000213
其中s为要分享的秘密值,属于整数群Zp *,Mθ为矩阵M的第θ行向量;
S35、数据拥有者使用PK加密关键字w,计算第一个关键字索引参数
Figure FDA0003959083540000031
第二个关键字索引参数τ2=gs和第三个关键字索引参数
Figure FDA0003959083540000032
其中e是双线性映射,g是G1的生成元,αi属于整数群Zp *,H2为哈希函数,s为秘密值,θ属于[1,...,l],ρ为内映射函数;
S36、数据拥有者将上述关键字索引参数生成的密文关键字索引indw=(τ1,τ2,τθ)上传至区块链中。
5.根据权利要求1所述的方法,其特征在于,步骤S40具体为:
S41、初始化,扫描数据文件并构建字典Δ,对于每个关键字w∈Δ,构建Dw,其中Δ为扫描数据文件所有关键字构成的集合,Dw为该关键字w映射的所有数据文件标识符的集合;
S42、构建查找表,它允许对每个链表Li的第一个元素进行定位和解密,查找表中的每个条目对应一个关键字w∈Δ,该条目由<value,address>组成,value字段包含索引关键字indw和Li的第一个元素的解密密钥,address表示Li的第一个元素的存储地址,其中Δ为扫描数据文件所有关键字构成的集合,链表Li存储于数组
Figure FDA0003959083540000033
中,是一组节点的集合;
S43、建立搜索数组
Figure FDA0003959083540000034
对于每个关键字w∈Δ,定义链表节点结构为
Figure FDA0003959083540000035
1≤j≤|Dw|,由于Li的每个元素都包含有关Li的下一个元素的信息,因此解密可获得节点中存储的相应文件标识符和下一节点的解密密钥及位置,直到节点为空,其中“||”为字符串连接符,id(Dw,j)为w关键字对应的第j个数据文件Dw,j的文件标识符,kw,j+1为第(j+1)个关键字节点的解密密钥,addrw,j+1为第(j+1)个关键字节点在表中的地址信息,|Dw|表示该关键字w映射的所有数据文件标识符的总数。
6.根据权利要求1所述的方法,其特征在于,步骤S50具体为:
S51、数据用户根据接收到的聚合私钥{K1,K2,K3,{Kx}}选择一个随机数δ,计算中间参数A=K1(K2)δ,B=(K3)δ,Cx={(Kx)δ}x∈U,其中δ属于整数群Zp *,U为数据用户的属性集;
S52、数据用户计算H2(q),并将其哈希值加密为第一个搜索陷门参数
Figure FDA0003959083540000036
Figure FDA0003959083540000037
第二个搜索陷门参数
Figure FDA0003959083540000038
和第三个搜索陷门参数
Figure FDA0003959083540000039
其中q为数据用户想要查询的关键字,αi、ai、ti、δ为整数群Zp *上的随机数,g是乘法循环群G1的生成元,任意x属于属性集U;
S53、数据用户根据上述搜索陷门参数计算搜索陷门Tq=(T1,T2,{Tx}x∈U)并发送至区块链。
7.根据权利要求1所述的方法,其特征在于,步骤S60具体为:
S61、数据用户提交查询陷门,区块链中的搜索智能合约将使用查询陷门对安全可搜索索引执行线性搜索,如果Tq中的属性集U不满足与indw关联的(M,ρ),则与下一个关键字索引密文进行匹配;
S62、如果Tq中的属性集满足与indw关联的(M,ρ),则将匹配成功的结果全部发送给验证智能合约。
8.根据权利要求1所述的方法,其特征在于,步骤S70具体为:
S71、定义一个{1,2,...,l}的子集为Θ={θ:ρ(θ)eU},基于Θ和M,搜索算法计算一组常数{χi}i∈Θ,使得∑i∈ΘχiMi=(1,0,...,0),其中Mi是LSSS矩阵的第i行,若U满足与indw关联的(M,ρ),则根据匹配规则检测检测关键字q与w是否匹配,所属匹配规则为:
Figure FDA0003959083540000041
S72、若匹配成功,生成解密查找表所查询关键字对应的链表中第一个节点的解密密钥,由于Li的每个元素都包含有关Li的下一个元素的信息,因此解密可获得节点中存储的相应文件标识符、下一节点的解密密钥和位置,直到节点为空,将对应找出文件标识符集合发送至云服务器;
S73、云服务器将密文文件集合发送至区块链,通过验证智能合约检测数据的完整性,将数据密文发送给用户。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于:该程序被处理器执行时实现如权利要求1~8中任一项所述的基于区块链的属性基可搜索加密数据共享方法中的步骤。
10.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1~8中任一项所述的基于区块链的属性基可搜索加密数据共享方法中的步骤。
CN202211474994.1A 2022-11-23 2022-11-23 基于区块链的属性基可搜索加密数据共享方法 Pending CN115834200A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211474994.1A CN115834200A (zh) 2022-11-23 2022-11-23 基于区块链的属性基可搜索加密数据共享方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211474994.1A CN115834200A (zh) 2022-11-23 2022-11-23 基于区块链的属性基可搜索加密数据共享方法

Publications (1)

Publication Number Publication Date
CN115834200A true CN115834200A (zh) 2023-03-21

Family

ID=85530676

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211474994.1A Pending CN115834200A (zh) 2022-11-23 2022-11-23 基于区块链的属性基可搜索加密数据共享方法

Country Status (1)

Country Link
CN (1) CN115834200A (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116933296A (zh) * 2023-09-15 2023-10-24 福昕鲲鹏(北京)信息科技有限公司 开放版式文档ofd访问控制方法和装置
CN117454436A (zh) * 2023-12-22 2024-01-26 北京天润基业科技发展股份有限公司 基于乘法群的数据对齐方法、系统及电子设备
CN117540430A (zh) * 2023-12-07 2024-02-09 北方工业大学 隐私数据的安全共享方法和系统
CN117596036A (zh) * 2023-11-20 2024-02-23 北京邮电大学 多时间粒度约束的动态属性基加密访问控制方法
CN117640255A (zh) * 2024-01-25 2024-03-01 齐鲁工业大学(山东省科学院) 防诬陷可搜索的物联网数据共享方法及系统
CN117828673A (zh) * 2024-03-05 2024-04-05 北京全景智联科技有限公司 基于区块链的数据流通与隐私保护方法及装置
CN117997651A (zh) * 2024-04-03 2024-05-07 湖南天河国云科技有限公司 数据共享方法、系统、设备及存储介质

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116933296A (zh) * 2023-09-15 2023-10-24 福昕鲲鹏(北京)信息科技有限公司 开放版式文档ofd访问控制方法和装置
CN116933296B (zh) * 2023-09-15 2023-12-19 福昕鲲鹏(北京)信息科技有限公司 开放版式文档ofd访问控制方法和装置
CN117596036A (zh) * 2023-11-20 2024-02-23 北京邮电大学 多时间粒度约束的动态属性基加密访问控制方法
CN117596036B (zh) * 2023-11-20 2024-06-11 北京邮电大学 多时间粒度约束的动态属性基加密访问控制方法
CN117540430A (zh) * 2023-12-07 2024-02-09 北方工业大学 隐私数据的安全共享方法和系统
CN117454436A (zh) * 2023-12-22 2024-01-26 北京天润基业科技发展股份有限公司 基于乘法群的数据对齐方法、系统及电子设备
CN117454436B (zh) * 2023-12-22 2024-02-27 北京天润基业科技发展股份有限公司 基于乘法群的数据对齐方法、系统及电子设备
CN117640255A (zh) * 2024-01-25 2024-03-01 齐鲁工业大学(山东省科学院) 防诬陷可搜索的物联网数据共享方法及系统
CN117640255B (zh) * 2024-01-25 2024-04-09 齐鲁工业大学(山东省科学院) 防诬陷可搜索的物联网数据共享方法及系统
CN117828673A (zh) * 2024-03-05 2024-04-05 北京全景智联科技有限公司 基于区块链的数据流通与隐私保护方法及装置
CN117997651A (zh) * 2024-04-03 2024-05-07 湖南天河国云科技有限公司 数据共享方法、系统、设备及存储介质
CN117997651B (zh) * 2024-04-03 2024-06-07 湖南天河国云科技有限公司 数据共享方法、系统、设备及存储介质

Similar Documents

Publication Publication Date Title
CN112019591B (zh) 一种基于区块链的云数据共享方法
Ning et al. Passive attacks against searchable encryption
Wan et al. VPSearch: Achieving verifiability for privacy-preserving multi-keyword search over encrypted cloud data
CN115834200A (zh) 基于区块链的属性基可搜索加密数据共享方法
Li et al. Full verifiability for outsourced decryption in attribute based encryption
Liu et al. Verifiable Diversity Ranking Search Over Encrypted Outsourced Data.
CN107491497B (zh) 支持任意语言查询的多用户多关键词排序可搜索加密系统
Sun et al. Catch you if you lie to me: Efficient verifiable conjunctive keyword search over large dynamic encrypted cloud data
US9977918B2 (en) Method and system for verifiable searchable symmetric encryption
TWI463857B (zh) 權重認證及秘密擷取
CN110392038B (zh) 一种多用户场景下可验证的多密钥可搜索加密方法
CN109361644B (zh) 一种支持快速搜索和解密的模糊属性基加密方法
CN114048448A (zh) 基于区块链的动态可搜索加密方法及装置
Yi et al. Privacy-preserving user profile matching in social networks
CN114021164B (zh) 基于区块链的征信系统隐私保护方法
Chen et al. Verifiable dynamic ranked search with forward privacy over encrypted cloud data
CN114417073A (zh) 一种加密图的邻居节点查询方法及装置、电子设备
CN113434555B (zh) 一种基于可搜索加密技术的数据查询方法和装置
Park et al. PKIS: practical keyword index search on cloud datacenter
WO2023134576A1 (zh) 数据加密方法、属性授权中心及存储介质
Hahn et al. Multi-key similar data search on encrypted storage with secure pay-per-query
CN113868450B (zh) 一种基于区块链的遥感影像安全检索方法
CN113904823B (zh) 常数级授权计算复杂度的属性基可搜索加密方法及系统
Blömer et al. Cloud architectures for searchable encryption
CN117828673B (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