胡荣磊 王乐胥 范晓红
北京电子科技学院,北京市 100070
云端存储相较于本地存储,具有相对较低的使用价格与管理成本,收到用户的青睐[1]。 同时,为了实现不可信云环境中的数据安全以及用户隐私保护,数据以密文形态上传至云存储平台。 但是,数据文件以密文的形式在云环境中存储,数据使用者需要将文件密文下载并解密后才可实现检索查询。 这种做法步骤繁琐且浪费网络流量开销以及计算开销。 为解决云环境中文件密文的高效搜索问题,可搜索加密技术(Searchable Encryption,SE)应运而生。
可搜索加密技术的出现,使数据使用者可以凭借关键词密文搜索云服务器中的文件密文。它利用云存储服务器的计算资源进行文件密文检索,达到快速、准确检索数据文件密文,为用户节省网络和计算开销的目的[2]。
可搜索加密技术最早由Song 等人[3]在2000 年提出,在此基础上,研究人员从搜索效率、安全性以及功能性等方向对可搜索加密技术进行改进[4]。 Su 等人[5]在2017 年提出了一种基于属性的关键词搜索加密方案,通过检查用户属性与访问结构之间的匹配关系,实现对密文搜索的访问控制。 Yang 等人[6]在2020 年提出一种非双线性对运算的公共通道的公钥认证可搜索加密方案(NBP-SCF-PAEKS),该方案与传统的双线性对方案相比搜索效率高,适用于运算能力有限的设备。 Raouf 等人[7]在2021 年提出了一种高效安全的无证书可搜索加密方案,在保证通信以及计算效率的前提下,可以抵御不同的关键字猜测攻击。 区块链技术凭借去中心化分布式账本、可溯源、数据不可篡改删除的特点,与可搜索加密技术结合,成为新的研究热点。 在2021 年文献[8]与区块链技术相结合,提出了区块链上的属性基可搜索加密方案,利用区块链不可篡改的特性保护关键字密文安全。 Zhai[9]等人设计了一种基于区块链的可搜索加密电子病历共享模型,实现大规模网络下各医疗机构对电子病历的安全共享。 Liu[10]等人针对当前数据共享难、被攻击、密文搜索效率低的问题,设计了一种基于倒排索引的可搜索加密数据共享方案。Pang[11]等人针对区块链环境下已有的可搜索加密方案成本高、功能局限的问题,提出了支持验证与公平支付的多关键词排序检索方案。
通过分析,当前区块链上可搜索机密设计方案在功能方面存在缺陷。 设计方案模型中,数据使用者设计比较单一,没有根据现实需求进行细化,不利于系统运行效率提高以及多样性的访问控制。
本文在文献[8]所提方案的基础上进行改进,提出了一个区块链上多类型用户属性基可搜索加密方案,实现了对数据密文的准确搜索与细粒度的访问控制以及在部分可信云环境下的数据安全与隐私保护。 本文同时对方案的可行性与安全性进行了分析和证明。 本文构造的适用于多类型用户的可搜索加密方案,其主要优势体现在以下两个方面:
1.针对现实场景需求,在文献[8]所提可搜索加密算法的基础上,设计了多种数据使用者模型。 在结合属性加密和可搜索加密的基础上,通过设计不同类型数据使用者搜索方案,提高了搜索效率的同时,实现了具备高细粒度以及多样性访问控制的可搜索加密。
2.通过分析方案在不可信云环境中的运行步骤,提出适用于不同场景的解决方案,在易受攻击的阶段提供多重保护,有效防止因重放攻击带来的数据使用者搜索陷门盗用问题。
定义映射e:G1×G2→G2满足以下性质[12]:
(1) 双线性
∀P,Q,R∈G1,∀a,b∈Z,e(Pa,Qb)=e(P,Q)ab,e(PQ,R)=e(P,R)e(Q,R),e(P,QR)=e(P,Q)e(P,R)
(2) 非退化性
如果P是G1的生成元,则e(P,P) 就是G2的生成元。
(3) 可计算性
∀P,Q∈G1, 则存在一个有效算法计算e(P,Q)。
(1)判定双线性Diffie-Hellman(decisional bilinear diffie-hellman assumption,DBDH)问题
设双线性映射对e:G1×G2→G2,g 为循环群G1的生成元,随机选择a,b,c∈Z*>q,Z∈G2,给定元组(g,ga,gb,gc,Z),判定等式e(g,g)abc=Z是否成立[13]。
(2) 判定Diffie-Hellman(decisional diffiehellman assumption,DDH)问题
随机选择a,b,c∈,g 为循环群G1生成元。 给 定 元 组 (g,ga,gb,gc), 判 定c=ab(bmodp) 是否成立[14]。
设P={P1,P2,…,Pn} 表示参与者的集合,令2P=2{P1,P2,…,Pn} ={A |A⊆{P1,P2,…,Pn}},集合A⊆2P是单调的,当且仅当任意子集B,C⊆P,若B∈A,B⊆C,则C∈A[15].
设γ是一个访问树。γ中每一个非叶子节点x表示一个门限结构,用(kx,numx) 描述,其中numx表示x的子节点个数,kx表示门限值,0≤kx≤numx.当kx=1 时表示或门,kx=numx表示与门。 叶子节点x用以描述属性,其门限值kx= 1.
令r表示γ根节点,γx表示以x为根的子树,γr即为γ.如果一个属性集合S满足访问树γx表示为γx(s)=1.
在访问树γ中,定义parent(x) 为节点x的父节点。 当x为叶子节点,定义att(x) 为节点x所描述的属性。 定义index(x) 表示节点x在其兄弟节点中的编号。 定义满足访问树如下:
当x为非叶子节点时,对x的所有子节点x*计算γx*(s).当且仅当至少有kx个子节点x*返回γx*(s)=1 时,γx(s)=1.
当x为叶子节点时,当且仅当x所描述的属性att(x) 是属性集合s的元素时,γx(s)=1[16].
本文所使用的符号及定义如表1 所示。
符号 说明DO 数据拥有者DU 数据使用者DUORD 普通用户DUCO 合作用户DUORG 组织用户DUSU 超级用户KDC 密钥分发中心CS 云存储中心BC 区块链平台SP 系统参数DUATT 数据使用者属性att 属性KDO 数据拥有者密钥KDU 数据使用者密钥ω关键字TD 搜索陷门CL 标识
本文借鉴文献[8]系统模型,基于区块链,针对不同类型数据使用者,使用属性基加密与可搜索加密对多类型用户搜索文件进行管理以及安全保护。 本文模型涉及5 类实体,分别是密钥分发中心、数据拥有者、云存储中心、区块链以及多类型数据使用者。
(1)密钥分发中心(Key Distribution Center,KDC)
KDC 作为可信机构,负责为系统生成系统参数SP、数据拥有者密钥KDO以及根据数据使用者DU 属性生成密钥KDU与KDU使用时限,在该时限内数据使用者可以凭借KDU生成搜索陷门检索、阅读文件。 同时KDC 将根据本文设计的多类型数据使用者模型,为DU 生成标识CL∈{CLORD,CLCO,CLORG,CLSU}.
(2)数据拥有者(Data Owner,DO)
DO 作为数据文件的所有者与分享方,将数据文件密文上传至云存储中心CS,CS 将文件密文地址返回DO,方便DO 自行查阅。 DO 提取合适数据文件关键字ω,通过结合DO 要求的数据使用者属性与文件属性生成访问策略并根据自己所定义的访问策略,使用KDO加密ω生成关键字密文ωc.DO 建立ωc与数据文件密文的对应关系,并将ωc与建立的对应关系上传区块链平台BC.
(3)区块链(BlockChain,BC)
BC 作为第三方可信平台,负责调用智能合约进行关键字密文搜索与文件密文搜索记录。DU 根据KDU与想要搜索的关键词ωu生成搜索陷门TD,并将TD上传BC,交由智能合约执行搜索操作。 若搜索成功,BC 将按照DO 上传的对应关系,告知CS 对DU 开放阅读权限至KDU使用时限结束。 同时,BC 负责记录搜索陷门及搜索结果,用于查验。
(4)云存储中心(Cloud Storage Center,CS)
CS 作为云存储服务提供方,负责加密数据文件的存储与阅读权限开放。 DO 将数据文件密文上传CS 存储,CS 将数据密文文件存储地址返回DO。 当BC 调用智能合约搜索关键字成功后把结果返回CS,由CS 为DU 开放阅读权限至区块链平台规定时间完成最后的搜索。
(5)数据使用者(Data User,DU)
DU 作为数据文件的使用者,使用KDU与ωu生成TD搜索数据文件密文,搜索成功后,DU 获得文件阅读权限至KDU使用时限结束。
在该模型中,根据实际场景需求,将不同类型的DU 进行分类,实现细粒化访问控制的同时,提高搜索效率。 KDC 在DU 申请密钥时,为DU 在KDU中添加标识。 DU 将标识本文DU 分类如下:
1)普通用户(Data User Ordinary,DUORD)
DUORD作为无特点用户,可以依据自身属性结合自己想要搜索的关键词完整执行搜索流程,生成陷门进行数据文件密文搜索。 普通用户系统模型图如图1 所示。
图1 普通用户系统模型
2)合作用户(Data User Cooperation,DUCO)
合作用户模型适用于多名用户分别提供自身属性合作搜索文件的场景。 在本方案中DUCO支持实际场景中DU 进行合作查看数据文件。如在电子病历领域,需要不同医院的医生一起为病人进行会诊,此时,病人的电子病历需要各医院医生一起查看,在申请电子病历文件时,单一医生的属性无法满足病人的访问控制策略,需要各医院医生合作搜索数据密文。 在本文方案中,在属性密钥申请时,DUCO向KDC 申请根据同一DUCO的所有用户属性生成的一个KDU进行数据文件密文搜索。 合作用户系统模型图如图2所示。
图2 合作用户系统模型
3)组织用户(Data User Organization,DUORG)
组织用户模型适用于有相同属性的大量用户请求同一文件的场景。DUORG对应同一组织内具有大量相同属性的用户,如同一班级内的所有学生以及同一部门的所有员工。 在同一组织的用户,有时会有相同数据搜索需求。 在本文方案中,有相同文件搜索需求的同一组织用户,DUORG可以向KDC 申请组织用户标识CLORG,用以提高搜索效率。 组织用户系统模型图如图3所示。
图3 组织用户系统模型
4)超级用户(Data User Super,DUSU)
超级用户模型适用于管理、审查人员检查云存储中心文件内容的场景。 本文方案中DUSU的依据KDC赋予的标识CLSU, 在搜索所需密文时,可以不依据DO 访问控制策略,成功搜索所需文件。 KDC 可以根据实际情况将CLSU赋予政府监管部门以及该云存储系统管理员。 超级用户系统模型图如图4 所示。
图4 超级用户系统模型
本文算法借鉴文献[8]方案进行功能扩展。
(1)系统初始化SETUP
由KDC 执行。 KDC 输出系统参数SP用于后续密钥生成,关键字密钥生成以及关键字密文搜索。
算法描述:KDC 为后续算法执行生成系统参数SP={G1,G2,e,g,H0,H1,H2,H3,H4}.其中G1与G2是阶为素数p的乘法循环群。e:G1×G1→G2,g为G1的生成元。 定义散列函数H0:{0,1}*→,H1:{0,1}*→G1,H2:CL→{0,1}*,H3:T→{0,1}*,H4:S→{0,1}*.
(2)密钥生成KEYGEN
由KDC 执行。 KDC 输入SP, 为DO 输出KDO,并根据DUATT与数据使用者类型为DU 生成KDU与CL.
算法描述:KDC 为数据拥有者生成密钥KDO并根据用户属性DUATT为数据使用者生成密钥KDU.KDU包含若干子部分,在密钥生成与搜索陷门生成部分分别发挥作用。 KDC 根据DU 类型生成标识CL,并使用H2:CL→{0,1}*加密保护。 KDC 在为DU 生成KDU时,会综合评估DU所提交属性,为DU 生成一个KDU使用时间上传至区块链,在该时间内,DU 可凭借KDU生成的搜索陷门查找、阅读文件;若超出该时间,则区块链智能合约判定搜索陷门无效。 为适应多类型用户需求,KDU生成具体算法步骤以普通用户为基础,根据不同用户类型有所调整。
1)普通用户
输入:(SP,DUATT),即:系统参数SP、数据使用者属性DUATT.计算
输出:(KDO,KDU)
对于DU 在KDU使用时间内追加的属性申请,KDC 在审核后使用相同的系统参数为DU 更新KDU发送给DU。
2)合作用户
DUCO中的DU 为了合作搜索得到数据文件密文集合到一起。 在同一DUCO中的DU 一起向KDC 申请属于DUCO成员共有的KDU.KDC 根据DUCO中所用人的所有属性生成一个密钥KDU供DUCO成员使用。 KDC 添加CLCO标识用于标记合作用户成员后,将生成的KDU发送给DUCO.
3)组织用户
在密钥生成阶段KDC 首先给每名用户共同的属性例如{A 公司,研发部}生成密钥,再在组织用户KDU中添加CLORG标识。 相同的CLORG用来表示持有者属于同一CLORG.
4)超级用户
DUSU通常表示监管部门或者该云存储系统中的管理员。DUSU在搜索数据加密文件时享有特权,在搜索时凭借CLSU向BC 验明身份并直接获取所需文件,而不需要通过复杂的属性密钥与搜索陷门生成。 其KDU={CLSU,H2(CLSU)}.
(3)关键字密文生成ENCRYPT
由DO 执行。 DO 使用SP与KDO,根据设定的访问控制策略,加密数据文件关键字ω生成关键字密文ωc.DO 将ωc上传至BC.
算法描述:由数据拥有者DO 执行,通过结合DO 要求的数据使用者属性与文件属性生成访问策略,使用密钥KDO, 根据访问策略生成访问树γ, 加密关键词ω生成ωc.设X为访问树γ所有叶子节点的集合,r为访问树γ根节点。 对于访问树γ中的每个节点x, 定义多项式px.多项式px的次数为节点x门限值kx减1, 且有
输入:(SP,KDO,ω,γ),即:系统参数SP、数据拥有者密钥KDO、关键字ω、由访问控制策略生成的访问树γ.计算:
输出:ωc
(4)关键词密文搜索SEARCH
由DU 执行。 DU 使用SP与KDU,结合感兴趣的关键字ωu生成陷门TD.通过分析,在不可信云环境中,在关键词密文搜索阶段,DU 所提交陷门存在被恶意攻击、盗用。 为防止TD被其他用户盗用,实施重放攻击,DU 在串行上传陷门的通用情况下,在TD中加入时间戳T。 在组织用户批量上传陷门等并行上传陷门的情况下,在TD中加入随机数S.DU 将TD上传BC,交智能合约进行关键字密文搜索。 智能合约关键词密文搜索流程如图5 所示。
图5 关键词密文搜索流程图
算法描述:数据使用者DU 结合自身用户类型CL,使用KDU与搜索关键词ωu,生成搜索陷门TD上传区块链智能合约。 首先,智能合约根据KDC 上传的DU 密钥使用时限判断此时DU生成的陷门是否在使用期限内。 若通过,随后,智能合约调用搜索算法,验证DU 上传陷门是否符合DO 指定的访问控制策略。 为防止重放攻击造成的搜索陷门TD盗用问题,DU 根据实际情况在TD中加入时间戳T或随机数S, 并用H3:T→{0,1}*或H4:S→{0,1}*保护。 BC 在收到TD后首先进行检验,提高安全性。 为提高搜索效率以及符合实际场景,具体算法步骤以普通用户为基础,根据不同用户类型有所调整。
1)普通用户
普通用户DUORD生成搜索陷门TD。
输入: (SP,KDU,ωu,T/S), 即:系 统 参 数SP、数据使用者密钥KDU、DU 搜索关键字ωu以及时间戳T或随机数S.计算:
输出:TD
输入:(SP,TD,ωc),即:系统参数SP、陷门TD、关键字密文ωc。
DUORD提交陷门TD至BC。 BC 将搜索记录记录在区块中,并依据智能合约所记录的内容来自动执行以下步骤:
①验证TD时间戳T或随机数S判断是否为重放攻击。 若验证通过,则执行下一步骤。
②验证TD是否符合关键字密文ωc所定义访问控制策略,若一致,则DUORD搜索成功。 BC记录搜索结果。
对于∀x∈X, 若x描述属性属于集合DUATT,则有
对于访问树γ中的非叶节点x,若其描述属性属于集合DUATT的子节点个数大于该非叶节点门限值kx,则Fx=e(g,g)(r+r1)px(0)。 若对于根节点r,有Fr=e(g,g)(r+r1)pr(0)=e(g,g)(r+r1)s则称数据使用者属性DUATT满足访问树γ.计算是否等于co,若相等,则表明陷门搜索成功。
③BC 查看DO 上传的关键字密文与文件密文的对应关系,告知CS 向DUORD开放文件阅读权限至KDU使用期结束。 智能合约调用过程就此完成。
2)合作用户
DUCO选择某一用户,使用合作申请产生的KDU,生成陷门TD搜索文件,BC 识别TD中的CLCO,确认该陷门由合作用户DUCO上传。 若TD符合ωc中包含的访问控制策略,BC 告知CS向DUCO的每一个成员开放文件阅读权限至KDU使用期结束,此次DUCO合作结束。
3)组织用户
同一组织的DU 在搜索相同数据文件时,可以使用组织用户DUORG的标识CLORG来提高搜索效率。 执行SEARCH算法时,DUORG中的所有用户DU 执行算法生成TD, 并在TD中添加标识CLORG上传BC 平台。 BC 通过CLORG识别出TD是DUORG搜索请求后,随机选择若干DU∈DUORG,验证TD是否符合ωc所指定的访问控制策略。 若符合,BC 告知CS 向DUORG中所有DU开放文件阅读权限至KDU使用期结束。
4)超级用户
本方案的超级用户DUSU一般用来担当管理员以及监管角色。 凭借KDC 赋予的CLSU, 向BC 发出文件查看申请,BC 记录申请后,命令CS向DUSU开放文件阅读权限。
通过设计攻击者A与挑战者B之间的INDCPA 游戏,来证明本文方案中的关键字密文与陷门在选择明文攻击下是安全的。
定理1 若攻击者A有不可忽略的优势ε攻破方案中的关键字密文安全,则B能够以优势解决DBDH 问题。
证明:挑战者B生成DBDH 元组
其中a,b,c,z∈.
初始化:挑战者B运行算法,生成系统参数SP。A定义挑战访问树γ*并将其发送给B。
阶段1:A向B发起多项式次数的密钥以及关键字密文询问。 密钥与关键字需满足
密钥询问:A向B发送属性集合DUATT1,DUATT2,DUATT3,…,DUATTN.要求A发送的属性集合不可满足挑战访问树γ*。B运行密钥生成算法,生成相应数据使用者密钥KDU1,KDU2,KDU3,…,KDUN发送给A.
挑战:A选择两个等长的挑战关键字ω0,ω1与挑战访问树γ*一并发送至B,B投掷硬币,公平随机选取μ∈{0,1},将ωμ加密后得到的关键字密文
发送给A.其中,X*为访问树γ*所有叶子节点的集合。 若令随机数a=s,bc=α, 则关键字密文ωcμ可以表示为
阶段2:A重复阶段1 的工作,继续向B发起询问。 要求A发送的属性集合不可满足挑战访问树γ*。
猜测:攻击者A输出μ的猜测μ′ ∈{0,1}.若μ=μ′, 则挑战者B认为Z=e(g,g)abc; 若μ≠μ′,则挑战者B认为Z=e(g,g)z.
若Z=e(g,g)abc,A获得的密文有效。 若A有不可忽略的优势ε攻破关键字密文安全,所以
故B解决DBDH 问题的优势为:
初始化:挑战者A运行算法,生成系统参数SP。
阶段1:A向B发起多项式次数的密钥以及陷门询问。
挑战:A选择两个等长的挑战关键字ω0,ω1.B投掷硬币,公平随机选取μ∈{0,1},使用ωμ计算得到陷门
阶段2:A重复阶段1 的工作,继续向B发起询问。
猜测:攻击者A输出μ的猜测μ′ ∈{0,1}.若μ=μ′,则挑战者B认为Z=gab;若μ≠μ′,则挑战者B认为Z=gz.
若Z=gab,A获得的陷门有效。 因为A有不可忽略的优势ε攻破陷门安全,所以可得Pr[μ
对于用户串行提交的陷门TD, 数据使用者DU 为其添加时间戳T,智能合约验证陷门时间戳T,若T足够接近当前时刻,则智能合约接受陷门TD;若T远离当前时刻,则视为重放攻击,智能合约丢弃该陷门TD。 如图6 所示,对于攻击者试图上传的盗用陷门,智能合约验证时间戳T*,但是T*与智能合约时间不符,因此攻击者无法通过重放攻击盗用其他DU 的搜索陷门。对于通过检验的串行提交陷门TD,智能合约根据其T的先后顺序,依次执行搜索算法,保证搜索的顺序执行。
图6 串行上传陷门防止重放攻击
对于并行提交的陷门TD, 数据使用者为其添加随机数S,智能合约验证陷门随机数S, 智能合约记录TD附加的随机数S,若TD附带的S未被智能合约记录,则智能合约接受TD; 若S已被智能合约记录,则视为重放攻击,智能合约丢弃该TD。 如图7 所示,攻击者试图上传盗用陷门,智能合约验证其随机数S*, 但该随机数已被智能合约数据库记录,因此攻击者无法通过重放攻击盗用其他DU 的搜索陷门。
图7 并行上传陷门防止重放攻击
将本文方案与近几年可搜索加密方案进行对比分析,从表2 看出,从功能对比角度,本文方案具有一定优势。
文献[8,12]均将可搜索加密技术与属性基加密技术向结合,由数据使用者属性集合与访问策略的契合程度定义其解密与搜索能力。 而文献[12]与本文方案和文献[8]不同的是,文献[12]采用与门访问结构,与本文方案和文献[8]采用的访问树结构相比,表达能力相对较弱。 文献[8,13]与本文方案将区块链技术引入可搜索加密方案。 依靠区块链防篡改的特性,保护了加密关键词的同时,将数据使用者搜索申请一并记录,方便日后查验。 文献[14]在提出高效可搜索加密方案的同时,关注敌手对搜索陷门的窃听与重放攻击,提高了系统的安全性。 本文方案较文献[8]方案相比,注重对用户陷门重放攻击保护的同时,依托实际场景,抽象出多类型用户模型,并为各类型用户提供个性化可搜索加密方案。 提高效率的同时,使访问控制策略多样化,丰富化:
方案 属性加密访问结构 区块链 抗重放攻击多类型用户模型文献[8] 有 访问树 有 无 无文献[14] 有 与门 无 无 无文献[15] 无 无 有 无 无文献[16] 无 无 无 有 无本文方案 有 访问树 有 有 有
合作用户模型提供了一种多人合作搜索文件方案,有助于数据的共享,实现细粒化的访问控制,减少“信息孤岛”的产生。 比如分散在各地的不同医院的不同领域的医生需要一起为病人会诊,需要查看病人加密的电子病历,以往方案如果将访问控制策略设置为{{医院A,科室A,医生A},{医院B,科室B,医生B},{医院C,科室C,医生C}}同时满足,则没用医生可以同时满足访问策略,不利于不同医院间的合作;若设置成满足上述三个条件满足其中一个即可,任意一个医生就可以随意翻看病人电子病历,不利用病人隐私信息的保护,本方案的合作用户模型允许在属性密钥申请时,所有医生向KDC 提交属性,KDC 使用所应医生的属性一起生成一个数据使用者密钥。 在关键词密文搜索时一名医生使用该密钥生成陷门搜索文件,若满足访问控制策略,服务器将电子病历发给每一个医生。 这样做既让不同医院的医生可以顺利开展工作,又保护了病人的隐私,且算法效率与普通用户模型基本相同,没有造成额外的计算负担。
组织用户模型为有相同属性的数据使用者设计,这些使用者可以自发组织,向KDC 申请组织用户标识。 在搜索相同文件时,BC 识别出组织用户标识,可随机抽取若干用户上传陷门进行查验,比如同一个实验室的实验员或者同一个部门的员工,他们有着相似的属性标签与对加密数据相似的需求。 在有相同的文件搜索需求时,利用组织用户模型,相较于以往方案中检测所有上传陷门的方案,减少了检测次数,提高了搜索效率。
超级用户为系统内的监管以及管理员,负责对文件内容进行管理审查,维护网络空间安全。通过标识可不通过访问树获取任意文件,检查文件内容,删除违规文件。 在密钥生成算法与关键词密文搜索算法不包含双线性对运算,算法效率高。
因此,本方案在用户量与数据量较大时,较过去方案,有较快的搜索效率与灵活性。 本文对普通用户模型与组织用户模型进行具体算法效率分析。 分析了在若干数据使用者搜索密文时的算法效率,如表3 所示,结果不难看出,在多数据使用者的情况下,组织用户模型具有较高的SEARCH算法效率,且本文方案与文献[8]相比用较低代价实现了对陷门的防重放攻击保护。其中P代表一次双线性对运算,E代表一次指数运算,M代表一次乘法运算,H代表一次哈希运算,Inv代表一次乘法逆元运算,Ver代表一次防重放攻击验证运算。 |S|、|X|、|A|与|N|分别代表属性集,访问树叶子节点集合,满足访问树的访问结构最小属性集,用户量。
表4 对各模式算法通信代价进行分析,其中|G1|,G2|代表G1,G2中元素的长度|H|代表各哈希函数压缩后的长度,|CL|代表标识长度,|Ver|代表搜索陷门时间戳或随机数长度,|C|代表密文文件长度。 |S|、|X|与|N|分别代表属性集,访问树叶子节点集合,用户量。 分析表明在实现多样性细粒度访问控制的同时,方案单位用户量通信代价并无明显增加。
普通用户 组织用户 文献[8]KEYGEN N[P+(2 |S |+3)E+(|S|+1)M+(|S |+1)H+Inv]N[P+(2 |S |+3)E+(|S|+1)M+(|S|+1)H+Inv]N[P+(2 |S |+1)E+(|S |+1)M+|S |H+Inv]ENCRYPT P+(2 |X |+3)E+2M+(|X |+1)H P+(2 |X |+3)E+3M+(|X |+1)H SEARCH N[(2 |A|+3)P+(|A|+|S |+2)E+(|S |+|A|+5)M+2H+Ver]P+(2 |X |+3)E+2M+(|X |+1)H(2 |A|+3)P+(|A|+|S |+2)E+(|S |+|A|+5)M+2H+Ver N[(2 |A|+3)P+(|A|+|S|+1)E+(|S |+|A|+4)M+H]
本文在 AMD Ryzen 7 5800H 处理器,4GBRAM,Ubuntu16.04 虚拟机实验环境下,在Hyperledger Fabric 1.4.0 区块链平台,网络拓扑架构如图8 所示,包含Org1 与Org2 两个组织,其下各自有一个Peer 节点。 部署两个排序节点Order1 与Order2 与Kafka 集群为区块链网络提供排序以及辅助共识服务。
图8 整体网络拓扑结构
利用Caliper 测试框架测试链码写入以及查询操作的吞吐量与平均时延。 将交易频率分别设置为50 至250tps,测试结果如图9 所示。
图9 不同交易频率查询、写入吞吐量以及平均时延
由图9 可以看出查询操作吞吐量基本随交易频率线性增长。 写入操作涉及背书、排序、共识等过程,较查询操作过程复杂,当前计算机性能下吞吐量为140tps 上下,慢于查询操作,且随交易量进一步的增加,吞吐量有所降低。 查询操作的平均时延在800ms 以下,而写入操作频繁的节点通信导致平均时延随交易频率增长而增长。
使用PBC 库对本文方案算法进行性能测试,实验结果为算法运行50 次平均值。 将关键词个数固定为200 个,数据使用人数固定为10人,测试不同属性集元素个数对算法运行时间的影响。 结果如图10 所示。
图10 算法运算花销
通过测试可以看出算法所花费时间随属性集元素个数增多而线性增加,本文方案中与文献[8]方案KEYGEN算法时间消耗基本一致。 组织用户模型具有较高的SEARCH算法效率实验结果与理论分析结果基本一致。
通过测试发现,合作用户模型在实现更为灵活的访问控制的同时,与普通用户和文献[8]方案有着几乎相同的效率。 在数据使用者比较多的情况下,组织用户模型相较其他模型方案有很高的效率。
本文提出了一种区块链上多类型用户属性基可搜索加密方案,实现了对数据密文的准确搜索与细粒度的访问控制以及在不可信云环境下的数据安全与隐私保护。 同时,从实际出发,定义了多类型数据用户模型,拓展了原有方案的单一搜索模式。 该方案可应用于电子病历、数字版权保护以及物品溯源等需要大量分享加密文件的领域。 在未来工作中,计划将本文方案与无证书密码体制[17]相结合,摆脱密钥生成中心必须是完全可信的限制。