«上一篇 下一篇»
  计算机工程  2022, Vol. 48 Issue (2): 25-33, 39  DOI: 10.19678/j.issn.1000-3428.0061419
0

引用本文  

彭红艳, 李杰, 石贞奎, 等. 一种基于区块链可验证的加密图像检索方案[J]. 计算机工程, 2022, 48(2), 25-33, 39. DOI: 10.19678/j.issn.1000-3428.0061419.
PENG Hongyan, LI Jie, SHI Zhenkui, et al. A Blockchain-based Verifiable Encrypted Image Retrieval Scheme[J]. Computer Engineering, 2022, 48(2), 25-33, 39. DOI: 10.19678/j.issn.1000-3428.0061419.

基金项目

国家自然科学基金地区科学基金项目(61862008, 61662008);广西自然科学基金面上项目(2020JJA170023)

作者简介

彭红艳(1973-), 女, 副教授, 主研方向为信息安全、区块链技术;
李杰, 硕士研究生;
石贞奎, 讲师、博士;
李先贤, 教授、博士

文章历史

收稿日期:2021-04-25
修回日期:2021-08-12
一种基于区块链可验证的加密图像检索方案
彭红艳1,2 , 李杰1 , 石贞奎1,2 , 李先贤1,2     
1. 广西师范大学 计算机科学与信息工程学院, 广西 桂林 541004;
2. 广西多源信息挖掘与安全重点实验室, 广西 桂林 541004
摘要:由于难以构造通用的认证结构对图像类型数据的相似度计算过程进行验证,因此对加密图像检索结果的验证面临很大挑战。同时,现有多数加密图像检索方案没有考虑恶意云服务器的问题,可能返回不正确或不完整的检索结果。利用区块链技术的去中心化、不可篡改等特性,提出一种基于区块链可验证的加密图像检索方案BVEIR,确保搜索结果的可靠性与搜索过程的透明性。将加密索引存储在区块链(以太坊)上,通过区块链的共识机制保证在智能合约上完成搜索的功能,确保搜索结果完备性,同时将相应的加密图像数据外包到云服务器以降低存储成本,并在相似图片索引过程中使用基于视觉词袋模型和simhash的双层索引结构,进一步提高检索效率和精度。实验结果表明,BVEIR具有良好的隐私保护效果,其建立索引时间较SEIR方案更少,并且可实现对图像数据的细粒度访问控制,在提高索引效率的同时保证图像检索的精确率。
关键词加密图像检索    区块链    可搜索加密    局部敏感哈希    属性加密    
A Blockchain-based Verifiable Encrypted Image Retrieval Scheme
PENG Hongyan1,2 , LI Jie1 , SHI Zhenkui1,2 , LI Xianxian1,2     
1. College of Computer Science and Information Engineering, Guangxi Normal University, Guilin, Guangxi 541004, China;
2. Guangxi Key Lab of Multi-Source Information Mining and Security, Guilin, Guangxi 541004, China
Abstract: It is difficult to construct a general authentication structure to verify the similarity calculation process of image type data, so the verification of encrypted image retrieval results faces great challenges.At the same time, most existing encrypted image retrieval schemes do not consider the problem of malicious cloud servers, and may return incorrect or incomplete retrieval results.Taking advantage of the decentralized and tamper proof characteristics of blockchain technology, a Blockchain-based Verifiable Encrypted Image Retrieval(BVEIR) scheme is proposed to ensure the reliability of search results and the transparency of search process.With the encrypted index stored in blockchain(Ethereum), the search function is implemented by using the consensus mechanism of blockchain on the smart contract to ensure the completeness of search results.At the same time, the corresponding encrypted image data is outsourced to the cloud server to reduce storage cost.In the process of similarity image indexing, the double-layer index structure adopting visual word bag model and simhash is used to improve the retrieval efficiency and accuracy.Experimental results show that BVEIR displays good privacy protection effect.Its indexing time is less than that of the SEIR scheme, and can realize fine-grained access control of image data, so it can improve the indexing efficiency and ensure the accuracy of image retrieval.
Key words: encrypted image retrieval    blockchain    searchable encryption    locality-sensitive hashing    attribute-based encryption    

开放科学(资源服务)标志码(OSID):

0 概述

近年来,云服务中心遭受外部攻击而丢失用户数据的事故接连发生,为了确保图像安全,用户在将图像外包到云服务器[1]之前会对数据进行加密以防止隐私泄露,然而加密后的图像数据失去了明文特征,使用户无法高效地进行图像检索,并且影响对图像数据的管理。

在基于可搜索加密技术的图像安全检索方案中[2-3],用户事先构造安全索引并将其与加密图像一起存储到云服务器中,通过安全索引实现了在不泄露用户数据隐私的条件下完成对加密数据的搜索,从而保证图像数据的安全性和可用性。但是目前多数加密图像检索方案[2-5]没有足够重视恶意云服务器问题,可能返回给用户错误或不完整的检索结果。

由于很难构造通用的认证结构对图像类型数据的相似度计算过程进行验证,因此加密图像检索结果验证面临很大的挑战。为准确捕捉用户真正的目标与兴趣点,本文通过使用区块链技术[6],提出一种基于区块链可验证的加密图像检索(Blockchain-based Verifiable Encrypted Image Retrieval,BVEIR)方案。在智能合约上执行图像检索任务时,借助区块链的共识机制使每次搜索操作正确执行,确保搜索结果的完整性和正确性。同时,为缩小图像语义与其特征描述符之间的差距,设计一种利用视觉词袋模型和simhash的双层索引结构,实现精细化图像分类。该索引结构的第1层基于视觉词袋模型,初步确定图像的分类以减少simhash计算量,第2层则利用simhash进行相似图像检索,以汉明距离作为判断图像之间相似性的指标,通过相似性比较提高搜索效率和精度。

1 相关工作 1.1 加密图像检索

文献[7]提出一种保护隐私的图像检索方案,通过提取特征向量来表示对应的图像,并利用LSH算法和K最近邻算法提高搜索效率,确保图像数据安全。文献[8]提出一种基于内容的加密图像检索方案,通过引入基于离散对数问题的盲技术来保持特征向量的私密性,同时该方案支持模糊搜索。文献[9]提出一种混沌加密方法用于保护图像隐私,利用加速鲁棒特征算法和词袋模型来生成每个图像的特征向量,并应用局部敏感哈希算法构造特征向量的可搜索索引。文献[10]开发一种基于加密指纹的生物特征识别系统,但该系统的搜索复杂度和数据库大小呈线性关系。文献[11]提出一种具有访问控制功能的加密域图像检索算法,该算法可以管理用户对图像的访问权限,实现不同用户角色对图像的访问。文献[12]提出一种基于内容的加密图像检索方案,通过加密图像纹理和颜色信息来解决大规模图像数据的隐私保护问题,但该方案仍存在被恶意云服务器威胁的风险。

1.2 可搜索加密和区块链

密码学家提出对称可搜索加密(Searchable Symmetric Encryption,SSE)技术[13],以实现对加密数据的亚线性搜索。SSE不仅可以用于精确搜索文本类型数据,同样还能对图像类型数据进行相似性检索[2]。文献[14]设计了基于局部敏感哈希的SSE方案,其不依赖同态加密,但是复杂的构建搜索凭证过程导致整体效率较低。文献[2, 14]都是在云服务器环境下设计加密图像检索方案,将加密图像和加密索引存储在云服务器中。文献[15]提出动态身份验证器用于检查结果的完整性,但不能阻止恶意服务器的重放攻击。文献[16]提出的方法可以提供前向或者后向的安全性,但是当云服务器为恶意时,用户仍无法简单有效地验证搜索结果。文献[17-19]提出将区块链技术融入到可搜索加密中实现去中心化、可靠、可验证的检索方案:文献[17-18]采用智能合约存储加密索引并执行搜索操作,解决了云服务器返回不正确结果的情况,但是方案不支持相似性检索;文献[19]将密文数据库和加密索引均存储于智能合约中,但导致了巨大的存储成本,造成不必要的浪费。

2 BVEIR系统模型 2.1 系统结构

本文提出的BVEIR方案中包含以下实体:图像拥有者(Image Owner,IO),服务提供者(Service Provider,SP),图像使用者(Image User,IU),智能合约,云服务器即云平台(Cloud Platform,CP),系统模型如图 1所示。

Download:
图 1 BVEIR系统模型 Fig. 1 BVEIR system model

1)IO即拥有图像数据的人,为了得到图像SP的服务,其自愿将图像数据上传给SP,但不愿将这种信任延伸到外包的CP上。

2)SP从图像数据集中通过SIFT提取特征,最终生成加密的图像索引存储到区块链上。SP还使用对称加密算法对图像进行加密,然后将加密图像外包给CP。此外,SP还会将解密密钥指定树形访问结构,从而实现细粒度访问控制。SP部署用于搜索与更新的智能合约,当IU发出搜索请求后,SP认证用户的身份并为用户相应属性集合attr_list生成属性私钥,通过安全信道将属性私钥和搜索密钥颁发给IU。

3)在搜索请求之前,IU必须在智能合约中存入足够的搜索费(包括消息费和服务费)。如果IU存入了足够的搜索费并且被SP验证为授权用户,那么IU可以将生成的搜索令牌以交易的方式发送到搜索智能合约进行搜索。IU从搜索智能合约接收到结果后,到CP上下载相应的加密图像数据进行解密。

4)区块链记录从SP得到的加密图像索引,通过智能合约对IU提供搜索服务以保证搜索结果的正确性和完整性。本文部署2个智能合约(分别为搜索智能合约与更新智能合约)以支持整个系统的工作流程。

5)为避免CP返回错误或者不完整结果对用户搜索造成威胁,本文仅将加密后的图像数据外包到云服务器中,搜索过程需要在区块链上完成,甚至还可将云服务器进一步替换为分布式存储服务器,例如IPFS[20]

2.2 系统工作流程

系统工作流程包括以下步骤:

1)IO将图像数据上传给SP。

2)SP生成系统参数k和密钥。SP通过SIFT从图像数据集中提取图像特征,然后对提取的整个SIFT局部特征描述因子进行K-Means聚类,得到k个聚类中心作为视觉单词表(或者说是词典),这样每一幅图像就变成了一个与视觉词关联或者说图像包含在一个聚类中心中,最后根据每一幅图像所提取到的特征构建其单独的simhash指纹,形成最终的索引结构,同时SP将加密索引以及智能合约部署到区块链上。索引结构如表 1所示,为了方便展示,表中并没有体现加密情况。

下载CSV 表 1 索引示例 Table 1 Example of index

3)SP同样利用对称加密算法对图像数据进行加密并且外包到CP中。

IO要查询图像数据,执行以下流程:

4)IO要进行查询并将查询请求提交到SP。

5)SP根据IO查询图像生成search token,然后发送到搜索智能合约。

6)搜索智能合约收到search token后进行相应的搜索,并把结果在区块链中进行广播,这样SP将会得到结果。

7)SP从区块链上查询到图像ID信息,在CP中下载与之对应的加密图像并解密。

8)SP返回给IO最初查询的图像结果。

IO查询图像数据,执行以下流程:

9)IU将自己相应的属性集合attr_list发送到SP请求搜索授权。

10)SP认证IU的身份,并为IU所具有的属性生成属性私钥,根据查询图像的请求颁发搜索密钥。

11)IU利用步骤10中得到的搜索密钥将查询图像生成的search token发送到搜索智能合约中。

12)搜索智能合约收到search token后进行相应的搜索并把结果在区块链中进行广播,这样IU将会得到结果。

13)IU从区块链上查询到图像ID信息,在CP中下载与之对应的加密图像并解密。

3 BVEIR方案设计 3.1 算法形式定义

本文提出的BEVIR方案包括以下算法(符号说明见表 2):

下载CSV 表 2 符号说明 Table 2 Symbol description

1)Setup(1λ)→(kabe,ks,kd)。给定一个安全参数λ,SP随机生成以下3个密钥:kabe=(pk,msk)用来进行CP-ABE加密;ks用来进行SSE方案;kd是对称加密密钥,用于加密图像。

2)KeyGen(pk,msk,attr_list)→sk。由SP执行这个算法,输入公共密钥pk、主私钥msk以及用户属性集合attr_list,输出属性私钥sk。SP收到IU的搜索请求后,返回给IU相应的密钥ks和sk。

3)Enc(pk,G,W,S,policy_str,ks,kd)→(Ψ,C,Ckd)。SP输入公共密钥pk、原始图像数据集合G、视觉字典W、图像的simhash指纹集合S、访问策略policy_str、搜索密钥ks、对称密钥kd,输出安全加密索引Ψ、加密图像集合C、密钥kd嵌入访问策略后的密文Ckd,SP将C外包到CP,将加密索引Ψ放入搜索智能合约中并将合约部署到区块链上。

4)Trapdoor(pk,g,ks)→tokenq/tokenu。IU向SP申请搜索/更新权限通过后,SP通过安全信道将ks传输给IU,输入公共密钥pk、图像g和搜索密钥ks,输出搜索令牌tokenq,IU将tokenq发送给搜索智能合约并在区块链上完成搜索功能;或者输出更新令牌tokenu,同样IU将tokenu发送给更新智能合约并在区块链上完成动态更新功能。

5)Search(Ψ,tokenq)→ID/⊥。搜索智能合约输入安全加密索引Ψ、搜索令牌tokenq,输出相似图像的标识符集合ID,之后IU可以通过ID到CP中下载对应的加密图像。

6)Update(Ψ,tokenu)→Ψ’。更新智能合约输入安全索引Ψ、更新令牌tokenu,输出更新后的加密索引Ψ’。

7)Dec(sk,CID,Ckd)→DID/⊥。IU输入属性私钥sk、集合ID对应的相似加密图像集合CID和对称密钥kd嵌入访问策略后的密文Ckd,输出解密后的相似图像集合DID;否则,输出⊥表示为空。

3.2 具体步骤

1)系统初始化阶段Setup(1λ)→(kabe,ks,kd)。输入安全参数λ,其中kabe=(pk,msk),SP定义G0G1是两个阶为素数p的乘法循环群,阶p是一个大的素数,g是群G0的生成元,定义双线性映射eG0×G0G1,选取抗碰撞散列函数H1:{0,1}→G0,定义伪随机函数H2:{0,1}k×{0,1}→{0,1}lF:{0,1}k×{0,1}→{0,1}l,SP随机选αβ$ {\mathbb{Z}}_{p} $,输出公共参数pk=(G0G1pgh=gβeggαFH1H2),主私钥msk=(αβ)。其中,egg)表示双线性映射在群G1中的值。搜索密钥ks=(k1k2k3),其中k1k2k3是伪随机函数F、G、P的参数,这些函数的参数设置细节内容可参见文献[13]。SP随机选取kd←{0,1}k作为原始图像数据的对称加密密钥。

2)用户属性私钥生成阶段KeyGen(pk,msk,attr_list)→sk,由SP负责执行。在一个用户IU发送搜索/更新权限申请后,SP来认证用户的身份为用户的相应属性集合attr_list生成属性私钥,并通过安全通信信道将属性私钥以及在系统初始化阶段生成的搜索密钥ks返回给用户IU。SP随机选择r$ {\mathbb{Z}}_{p} $,并且∀j∈attr_list,SP取rj$ {\mathbb{Z}}_{p} $,计算$ \mathrm{s}\mathrm{k}=\{D={g}^{\frac{a+r}{\beta }},\{{D}_{j}={g}^{r}{H}_{1}{\left(j\right)}^{{r}_{j}}, {D}_{j}^{\mathrm{\text{'}}}={g}^{{r}_{j}}{\}}_{{}_{\forall j\in \mathrm{a}\mathrm{t}\mathrm{t}\mathrm{r}\_\mathrm{l}\mathrm{i}\mathrm{s}\mathrm{t}}}\; \} $,对于不同IU而言,属性私钥是不同的。

3)加密阶段Enc(pk,G,W,S,policy_str,ks,kd)→(Ψ,C,Ckd)。假设SP有#G个图像数据集,即G={g1,g2,…,g#G},需要加密上传到CP中,同时加密索引Ψ和密钥kd嵌入访问策略后的密文Ckd上传部署到区块链中。加密阶段分为以下3个步骤:

步骤1    图像加密,Enc(G,kd)→C。SP使用kd加密图像gii∈[1,#G]),得到ci=Enckd(gi)|i∈[1,#G]。最后SP将加密图像数据集C={c1,c2,…,c#G}外包给CP。

步骤2    对称密钥加密,kenEnc(pk,kd,policy_str)→Ckd。对于对称密钥kd,SP定义加密策略policy_str并根据加密策略构造访问树T,首先从树的根节点r开始为树T的每一个节点x分配一个阶为dx的多项式qx(叶子节点的qx为常数),令kx表示节点的门限值,设置deg(qx)=dx=kx-1,从树的根节点r开始,SP随机选择s$ {\mathbb{Z}}_{p} $,并设置qr(0)=s,接着从$ {\mathbb{Z}}_{p} $中选取deg(qr)个随机系数来确定多项式qr;对于其他任意节点x,设置qx(0)=qparrentx)(index(x)),并从$ {\mathbb{Z}}_{p} $中随机选取deg(qx)系数来确定多项式qx。令Y表示树T中所有叶子节点,∀yY,attr(y)表示叶子节点y对应的属性字符串,H(attr(y))将属性字符串attr(y)散列成G0中的元素,SP计算得到对称密钥kd加密后密文:

$ \begin{array}{l}{\mathrm{C}}_{\mathrm{k}\mathrm{d}}=\{\mathrm{T},{\tilde {\rm{C}}}={\mathrm{k}}_{\mathrm{d}}e{(g, g)}^{as},\mathrm{C}={h}^{s}, \\ \{{\mathrm{C}}_{y}={g}^{{q}_{y}\left(0\right)}, {\mathrm{C}}_{{}_{y}}^{\mathrm{\text{'}}}={H}_{1}(\mathrm{a}\mathrm{t}\mathrm{t}\mathrm{r}{\left(y\right))}^{{q}_{y}\left(0\right)}{\}}_{\forall y\in Y}\}\end{array} $

步骤3    建立加密索引,indexBuild(W,S,ks)→Ψ。SP使用底层的SSE方案,通过搜索密钥ks=(k1,k2,k3)生成安全加密索引Ψ。本文系统的索引结构采用了链表的形式,但可以很简单地看出也能用其他相似的数据结构进行动态加密。例如,SP首先从图像集合G={g1,g2,…,g#G}中提取gii∈[1,#G])的SIFT局部特征,然后对局部特征进行k-Means聚类,得到用来表征图像信息的视觉单词wii∈[1,#W]),不同图像的视觉单词可能相同,同时还对提取到的SIFT局部特征进行哈希编码生成相应的simhash指纹S={s1,s2,…,s#G},这样就能获得每幅图像对应的视觉单词和simhash指纹,整理成为如表 1所示的形式,并基于可搜索加密算法构建加密索引。这样构建索引,能够在查找图像过程中先根据视觉单词排除掉大部分不相关图像,而只在同一个分类下继续根据simhash进行相似图像的查询,所对应的现实世界中的场景就是胸外科医生只能对关于胸部CT的医疗图像进行搜索,而无权限搜索其他科室的图像数据,这样处理不仅实现了对图像数据使用者细粒度的搜索权限管理,而且还进一步缩小了搜索图像的规模,缩短了搜索时间。其中,SP初始化搜索数组As和查找字典Ts分别用来随机存放每个链表的所有节点和每个链表的头节点地址,ctr是一个计数器,本文使用随机函数π映射ctr到数组As的一个随机地址上。SP计算$ {\mathrm{N}}_{i}^{\mathrm{w}} $是基于同一个视觉单词w建立的链表Lw中第i个节点,$ \mathrm{i}{\mathrm{d}}_{i}^{\mathrm{w}} $表示Lw中第i幅图像的标识符id,$ {\mathrm{L}}_{i}^{\mathrm{w}} $表示Lw中第i幅图像的f-bit的simhash指纹信息,π(ctr+1)表示在搜索数组As中下一个节点的地址,然后SP通过哈希函数H$ {\mathrm{N}}_{i}^{\mathrm{w}} $加密后存储在As中的π(ctr)地址上。随着计数器ctr的增加,SP可以得到链表Lw的第i+1个节点并且像上述操作一样对$ {\mathrm{N}}_{i+1}^{\mathrm{w}} $进行加密。对于每条链表Lw而言,其头结点地址还会被进一步加密存储在搜索字典Ts中。最终得到加密索引Ψ={As,Ts},并将其与步骤2中得到的Ckd一同通过交易Tx发送给搜索智能合约,调用智能合约的storeIndex()函数存储加密索引,如果SP账户中没有足够的余额来支付$cost,系统回滚,其中,$cost表示矿工收取的燃料费。建立加密索引的具体过程如算法1所示。

算法1    建立加密索引

输入   W,S,ks,kd

输出   Ψ

1.设置ks=(k1,k2,k3),其中,k1、k2、k3分别由随机函数F、G、P生成;

2.初始化数组As,字典Ts,ctr=1,π;

3.$ \mathrm{F}\mathrm{O}\mathrm{R}\mathrm{\ }\mathrm{w}\in \mathrm{W}\mathrm{\ }\mathrm{D}\mathrm{O} $

4.$ \mathrm{F}\mathrm{O}\mathrm{R}\mathrm{\ }\mathrm{i}=1\mathrm{ }\mathrm{t}\mathrm{o}\mathrm{\ }\#{\mathrm{L}}^{\mathrm{w}}\ \mathrm{D}\mathrm{O} $

5.$ {\mathrm{N}}_{\mathrm{i}}^{\mathrm{w}}=\mathrm{i}{\mathrm{d}}_{\mathrm{i}}^{\mathrm{w}}\left|\right|0\left|\right|\left[{\mathrm{L}}_{\mathrm{i}}^{\mathrm{w}}{]}_{\mathrm{p}\mathrm{k}}\right|\left| {\mathtt{π}}\right(\mathrm{c}\mathrm{t}\mathrm{r}+1); $

6.$ {\mathrm{R}}_{\mathrm{i}}^{\mathrm{w}}\leftarrow {\left\{\mathrm{0, 1}\right\}}^{\mathrm{\lambda }}; $

7.$ {\mathrm{A}}_{\mathrm{s}}\left[{\mathtt{π}}\right(\mathrm{c}\mathrm{t}\mathrm{r}\left)\right]=\left({\mathrm{N}}_{\mathrm{i}}^{\mathrm{w}} ⊕ \mathrm{H}\right({\mathrm{P}}_{\mathrm{k}3}\left(\mathrm{w}\right)\left|\right|{\mathrm{R}}_{\mathrm{i}}^{\mathrm{w}}\left)\right)\left|\right|{\mathrm{R}}_{\mathrm{i}}^{\mathrm{w}}; $

8.$ \mathrm{c}\mathrm{t}\mathrm{r}+=1; $

9.$ \mathrm{E}\mathrm{N}\mathrm{D}\mathrm{\ }\mathrm{F}\mathrm{O}\mathrm{R} $

10.$ {\mathrm{T}}_{\mathrm{s}}\left[{\mathrm{F}}_{{\mathrm{k}}_{1}}\right(\mathrm{w}\left)\right]=\left(\mathrm{a}\mathrm{d}\mathrm{d}\mathrm{r}\right({\mathrm{N}}_{1}^{\mathrm{w}}\left)\right|\left|{\mathrm{P}}_{{\mathrm{k}}_{3}}\right(\mathrm{w}\left)\right)\left|\right|⊕{\mathrm{G}}_{{\mathrm{k}}_{2}}\left(\mathrm{w}\right); $

11.$ \mathrm{E}\mathrm{N}\mathrm{D}\mathrm{\ }\mathrm{F}\mathrm{O}\mathrm{R} $

12.$ \mathrm{R}\mathrm{E}\mathrm{T}\mathrm{U}\mathrm{R}\mathrm{N}\mathrm{\ }\mathrm{\Psi }=\{{\mathrm{A}}_{\mathrm{s}},{\mathrm{T}}_{\mathrm{s}}\}; $

4)令牌生成阶段Trapdoor(pk,g,ks)→tokenq/tokenu。搜索/更新令牌由IU生成。在IU向SP申请搜索/更新权限阶段,IU得到相应的属性私钥sk和搜索密钥ks,通过特征提取器对要查询的图像g计算出图像的视觉单词w和simhash指纹s,生成搜索令牌tokenq=(Fk1(wq),Gk2(wq),[sq]pk)或者更新令牌。更新令牌又可以分为添加令牌和删除令牌,如果需要添加一张图片,添加令牌tokena=((Fk1(wa),Gk2(wa),Pk3(wa),Na),其中Na=((ida||0||[sa]pk||null)。而Ra是一串随机数{0,1}λ。如果需要删除一张图片,需要SP在用户属性私钥生成阶段对IU的身份审核更加严格才能得到id进而计算出tokend=(Fk1(wd),Gk2(wd),Pk3(idd),[sd]pk)。

5)搜索阶段Search(Ψ,tokenq)→ID/⊥。IU将搜索令牌tokenq通过交易Tx发送到搜索智能合约的地址,调用搜索智能合约的search()函数进行搜索得到相似图像的标识符集合IDq,具体过程如算法2所示。

算法2    搜索

输入   Ψ,tokenq

输出   IDq/⊥

1.$ \mathrm{解}\mathrm{析}\mathrm{t}\mathrm{o}\mathrm{k}\mathrm{e}{\mathrm{n}}_{\mathrm{q}}\mathrm{为}({{\mathtt{τ}}}_{1}, {{\mathtt{τ}}}_{2}, {{\mathtt{τ}}}_{3}); $

2.$ \mathrm{初}\mathrm{始}\mathrm{化}\mathrm{I}{\mathrm{D}}_{\mathrm{q}}=\mathrm{\varnothing }; $

3.$ \mathrm{I}\mathrm{F}{\mathrm{T}}_{\mathrm{s}}\left[{{\mathtt{τ}}}_{1}\right]==\perp \mathrm{ }\mathrm{T}\mathrm{H}\mathrm{E}\mathrm{N} $

4.$ \mathrm{R}\mathrm{E}\mathrm{T}\mathrm{U}\mathrm{R}\mathrm{N}\mathrm{ }\perp ; $

5.$ \mathrm{E}\mathrm{L}\mathrm{S}\mathrm{E} $

6.$ \mathrm{计}\mathrm{算}{\mathrm{T}}_{\mathrm{s}}\left[{{\mathtt{τ}}}_{1}\right]⊕{{\mathtt{τ}}}_{2}\mathrm{得}\mathrm{到}\mathrm{a}\mathrm{d}\mathrm{d}{\mathrm{r}}_{1}\mathrm{和}{\mathrm{P}}_{{\mathrm{k}}_{3}}\left({\mathrm{w}}_{\mathrm{q}}\right); $

7.$ \mathrm{解}\mathrm{析}{\mathrm{A}}_{\mathrm{s}}\left[\mathrm{a}\mathrm{d}\mathrm{d}{\mathrm{r}}_{1}\right]\mathrm{得}\mathrm{到}{\mathrm{N}}_{1}^{\mathrm{q}}; $

8.$ \mathrm{j}=1; $

9.$ \mathrm{W}\mathrm{H}\mathrm{I}\mathrm{L}\mathrm{E}\mathrm{\ }\mathrm{a}\mathrm{d}\mathrm{d}{\mathrm{r}}_{\mathrm{j}}\ne \mathrm{n}\mathrm{u}\mathrm{l}\mathrm{l}\mathrm{\ }\mathrm{D}\mathrm{O} $

10.$ \mathrm{解}\mathrm{析}{\mathrm{N}}_{\mathrm{j}}^{\mathrm{q}}\mathrm{得}\mathrm{到}\mathrm{\Sigma }; $

11.$ \mathrm{I}\mathrm{F}\mathrm{\ }\mathrm{\Sigma }==0\ \mathrm{ }\mathrm{a}\mathrm{n}\mathrm{d}\mathrm{\ }\mathrm{x} < ={\rm{z}}\ {\rm{THEN}} $

12.$ \mathrm{将}\mathrm{i}{\mathrm{d}}_{\mathrm{j}}^{\mathrm{q}}\mathrm{加}\mathrm{入}\mathrm{到}\mathrm{I}{\mathrm{D}}_{\mathrm{q}}\mathrm{当}\mathrm{中}; $

13.$ \mathrm{E}\mathrm{N}\mathrm{D}\mathrm{\ }\mathrm{I}\mathrm{F} $

14.$ \mathrm{解}\mathrm{析}{\mathrm{A}}_{\mathrm{s}}\left[\mathrm{a}\mathrm{d}\mathrm{d}{\mathrm{r}}_{\mathrm{j}+1}\right]\mathrm{得}\mathrm{到}{\mathrm{N}}_{\mathrm{j}+1}^{\mathrm{q}}; $

15.$ \mathrm{j}+=1; $

16.$ \mathrm{E}\mathrm{N}\mathrm{D}\mathrm{\ }\mathrm{W}\mathrm{H}\mathrm{I}\mathrm{L}\mathrm{E} $

17.$ \mathrm{E}\mathrm{N}\mathrm{D}\mathrm{\ }\mathrm{I}\mathrm{F} $

18.$ \mathrm{R}\mathrm{E}\mathrm{T}\mathrm{U}\mathrm{R}\mathrm{N}\mathrm{\ }\mathrm{I}{\mathrm{D}}_{\mathrm{q}}; $

从算法2中可以看出,当判断Σ=0表示图片存在并且在加密状态下,计算得到τ3与解析到第j个节点的simhash指纹的汉明距离为x,若x小于所定义的阈值$ z $,则可认为图片是相似的,否则是不相似的。如果IU账户中没有足够的余额来支付$cost,系统回滚。算法2定义一个搜索字典Ts和一个搜索数组As,其中Ts中包含了#W个条目,允许通过$ {\mathrm{F}}_{{\mathrm{k}}_{1}}\left(\mathrm{w}\right) $高效定位包含视觉单词w的头结点地址$ \mathrm{a}\mathrm{d}\mathrm{d}\mathrm{r}\left({\mathrm{N}}_{1}^{\mathrm{w}}\right) $,进而在搜索数组As中遍历链表Lw中所有的节点并且对节点$ {\mathrm{N}}_{i}^{\mathrm{w}} $i∈ [1,#Lw])中的加密simhash指纹计算汉明距离x,在阈值z内的为相似图像,然后将id添加进集合ID中,否则为不相似图像。本文所设计的索引结构优点在于查找图像的过程中能够通过视觉单词来排除不相关的图片,缩小查找范围和减少计算量,进而提高检索效率和精度。

6)更新阶段Update(Ψ,tokenu)→Ψ’。IU将更新令牌tokenu通过交易Tx发送到更新智能合约的地址,调用搜索智能合约的add()函数进行添加图片操作或者调用delete()函数进行删除图片操作,具体过程如算法3所示。如果IU账户中没有足够的余额来支付$cost,系统回滚。

算法3    更新

输入   Ψ,tokenu

输出   Ψ’

1.$ \mathrm{解}\mathrm{析}\mathrm{t}\mathrm{o}\mathrm{k}\mathrm{e}{\mathrm{n}}_{\mathrm{u}}\mathrm{为}({{\mathtt{τ}}}_{1}, {{\mathtt{τ}}}_{2}, {{\mathtt{τ}}}_{3}, {{\mathtt{τ}}}_{4}); $

2.$ \mathrm{要}\mathrm{增}\mathrm{加}\mathrm{一}\mathrm{张}\mathrm{图}\mathrm{片}:$

3.$ \mathrm{F}\mathrm{O}\mathrm{R}\mathrm{\ }\mathrm{w}\in \mathrm{W}\mathrm{\ }\mathrm{D}\mathrm{O} $

4.$ \mathrm{I}\mathrm{F}\ {\mathrm{T}}_{\mathrm{s}}\left[{{\mathtt{τ}}}_{1}\right]==\perp \mathrm{\ }\mathrm{T}\mathrm{H}\mathrm{E}\mathrm{N} $

5.$ \mathrm{新}\mathrm{建}\mathrm{链}\mathrm{表}\mathrm{以}\mathrm{a}\mathrm{d}\mathrm{d}{\mathrm{r}}_{1}\mathrm{作}\mathrm{为}\mathrm{头}\mathrm{节}\mathrm{点}\mathrm{地}\mathrm{址}; $

6.$ {\mathrm{A}}_{\mathrm{s}}\left[\mathrm{a}\mathrm{d}\mathrm{d}{\mathrm{r}}_{1}\right]={{\mathtt{τ}}}_{4}; $

7.$ {\mathrm{T}}_{\mathrm{s}}\left[{{\mathtt{τ}}}_{1}\right]=\left(\mathrm{a}\mathrm{d}\mathrm{d}{\mathrm{r}}_{1}\right|\left|{{\mathtt{τ}}}_{3}\right)\left|\right|⊕{{\mathtt{τ}}}_{2}; $

8.$ \mathrm{E}\mathrm{L}\mathrm{S}\mathrm{E} $

9.$ \mathrm{计}\mathrm{算}{\mathrm{T}}_{\mathrm{s}}\left[{{\mathtt{τ}}}_{1}\right]⊕{{\mathtt{τ}}}_{2}\mathrm{得}\mathrm{到}\left(\mathrm{a}\mathrm{d}\mathrm{d}{\mathrm{r}}_{2}\right|\left|{{\mathtt{τ}}}_{3}\right); $

10.$ {\mathrm{N}}_{\mathrm{a}}^{\mathrm{w}}=\left(\mathrm{i}{\mathrm{d}}_{\mathrm{a}}^{\mathrm{w}}\right|\left|0\right|\left|\right[{\mathrm{s}}_{\mathrm{a}}{]}_{\mathrm{p}\mathrm{k}}\left|\right|\mathrm{a}\mathrm{d}\mathrm{d}{\mathrm{r}}_{2}); $

11.$ {\mathrm{A}}_{\mathrm{s}}\left[\mathrm{a}\mathrm{d}\mathrm{d}{\mathrm{r}}_{1}\right]=\left({\mathrm{N}}_{\mathrm{a}}^{\mathrm{w}}⊕\mathrm{H}\right({\mathrm{P}}_{\mathrm{k}3}\left(\mathrm{w}\right)\left|\right|{\mathrm{R}}_{1}^{\mathrm{w}}\left)\right)\left|\right|{\mathrm{R}}_{1}^{\mathrm{w}}; $

12.$ \mathrm{T}{}_{\mathrm{s}}[{{\mathtt{τ}}}_{1}]=(\mathrm{a}\mathrm{d}\mathrm{d}{\mathrm{r}}_{1}\left|\right|{{\mathtt{τ}}}_{3}\left)\right||⊕{{\mathtt{τ}}}_{2}; $

13.$ \mathrm{E}\mathrm{N}\mathrm{D}\mathrm{\ }\mathrm{I}\mathrm{F} $

14.$ \mathrm{E}\mathrm{N}\mathrm{D}\mathrm{\ }\mathrm{F}\mathrm{O}\mathrm{R} $

15.$ \mathrm{要}\mathrm{删}\mathrm{除}\mathrm{一}\mathrm{张}\mathrm{图}\mathrm{片}:$

16.$ \mathrm{利}\mathrm{用}{{\mathtt{τ}}}_{1}\mathrm{、}{{\mathtt{τ}}}_{2}\mathrm{、}{{\mathtt{τ}}}_{3}\mathrm{找}\mathrm{到}\mathrm{删}\mathrm{除}\mathrm{图}\mathrm{片}\mathrm{所}\mathrm{在}\mathrm{链}\mathrm{表}{\mathrm{L}}_{}^{\mathrm{w}}; $

17.$ \mathrm{解}\mathrm{析}{{\mathtt{τ}}}_{4}\mathrm{得}\mathrm{到}\mathrm{i}{\mathrm{d}}_{\mathrm{d}},\mathrm{在}{\mathrm{L}}_{}^{\mathrm{w}}\mathrm{找}\mathrm{到}{\mathrm{N}}_{\mathrm{d}}^{\mathrm{w}}; $

18.$ \mathrm{将}\mathrm{\Sigma }\mathrm{设}\mathrm{置}\mathrm{为}1,\mathrm{对}{\mathrm{A}}_{\mathrm{s}}\mathrm{进}\mathrm{行}\mathrm{更}\mathrm{新}; $

7)解密阶段Dec(sk,CID,Ckd)→DID/⊥。IU从CP上将ID对应加密状态下的相似图像集合CID下载下来后,需要本地验证IU是否具有解密权限。如果验证通过,则可以进行解密Ckd得到kd进而恢复出原始图像;如果验证不通过,即使搜索到相应的文档也不具有解密权限,所以得不到原始图像。解密阶段的具体步骤如下:

步骤1    验证密钥VerifyKey(sk,Ckd)→kd/⊥。IU收到密文Ckd后,检查属性私钥sk和访问策略policy_str是否匹配,如果不匹配,返回⊥;否则,采用自下而上的递归算法得到$ e{(g, g)}^{r{q}_{\mathrm{A}}\left(0\right)}=e{(g, g)}^{rs} $。由此IU可以恢复出对称密钥kd

$\begin{array}{c} {\mathrm{k}}_{\mathrm{d}}=\frac{e{(g, g)}^{rs}\tilde{\mathrm{C}}}{e(\mathrm{C}, \mathrm{D})}=\frac{{\mathrm{k}}_{\mathrm{d}}e{(g, g)}^{\alpha s}e{(g, g)}^{rs}}{e({h}^{\mathrm{s}}, {g}^{\frac{\alpha +r}{\beta }})}= \\ \frac{{\mathrm{k}}_{\mathrm{d}}e{(g, g)}^{\alpha s}e{(g, g)}^{rs}}{\mathrm{e}({g}^{\beta s}, {g}^{\frac{\alpha +r}{\beta }})}={\mathrm{k}}_{\mathrm{d}} \end{array} $

步骤2    Dec(CID,kd)→DID。IU利用解密得到的对称密钥kd,对CID解密得到DID,其中ID为查询到的相似图像标识符集合。

3.3 智能合约设计

当发送交易到区块链上时,若满足智能合约的触发条件,将自动执行预先设定好的逻辑,待区块链中多数验证节点达成共识后,智能合约将成功执行。由于智能合约会被自动触发而不需要图像服务提供商一直在线提供服务,因此用户无须直接面对恶意服务器的威胁,保证了在图像服务提供商、图像用户和图像拥有者之间交易的公平性。本文方案利用搜索智能合约和更新智能合约分别完成搜索过程以及对加密索引的更新。

1)搜索合约初始由SP部署,之后在加密索引更新时IU重新部署,这是因为智能合约中的代码和执行过程是提前制定的,一旦在区块链上部署完成后其中的内容无法修改且无法干预合约的执行,所以只能以重新部署的方式完成迭代更新。合约结构如图 2所示,其中主要展示了搜索合约中的变量和函数。addr_owner和addr_UC分别表示合约创建者的地址和更新合约的地址,定义了数组类型变量store_EI用于存储加密索引和数组类型变量ID表示搜索结果。此外,搜索合约包含存储索引函数storeIndex(),SP调用该函数并输入加密索引Ψ,将其存储到变量store_EI当中。search()为搜索函数,IU调用该函数并传入搜索令牌token,输出搜索结果ID,同时更新合约调用getIndex()函数得到加密索引Ψ。

Download:
图 2 搜索合约结构 Fig. 2 Structure of search contract

2)更新合约完全由SP部署,合约结构如图 3所示,其中主要展示了更新合约中的变量和函数。变量addr_SP表示合约创建者SP的地址。更新合约包含添加函数add(),IU调用该函数并传入添加令牌,添加函数add()则调用搜索合约中的getIndex()得到变量store_EI,并根据添加令牌对store_EI进行修改并重新部署搜索合约,以达到添加新索引的目的。delete()为删除函数,IU调用该函数并传入删除令牌,删除函数delete()同样调用搜索合约中的getIndex()得到变量store_EI,同时根据删除令牌对store_EI进行修改并重新部署搜索合约,以达到删除索引目的,更新合约通过添加函数和删除函数来完成加密索引的更新功能。

Download:
图 3 更新合约结构 Fig. 3 Structure of update contract
4 实验评估与安全性分析

本节通过Ganache在本地构建一个模拟的以太坊网络,并通过分析建立加密索引、在智能合约上存储、搜索和更新所消耗的时间,对本文方案进行实验评估。实验环境为8 GB内存Intel® CoreTM i7-7700 3.20 Hz,操作系统是Microsoft Windows 10 64位。数据集为3个真实数据集Holiday、Oxford5k和Ukbench。最后对方案进行安全性分析并与现有方案功能进行对比。

4.1 数据集

实验使用3个著名的经常用于人工智能领域的真实数据集,分别为Holiday、Oxford5k和Ukbench。Holiday包含个人度假时拍摄的图片,以风景为主,有1 491张图。Oxford5k数据集包含针对11个不同的地标landmarks共5 062张图,每个地标有5个可能的查询表示。Ukbench数据集包含2 550个不同场景下的10 200张图。

4.2 加密索引建立(链下)

建立加密索引过程在链下进行,包含两个阶段:第一阶段是对图片预处理得到每张图片的视觉单词和simhash,本文使用python来进行这一系列工作,包括提取所有图像的SIFT特征向量生成每张图片的视觉单词和他们的simhash指纹;第二阶段利用所有图像的视觉单词和simhash建立加密索引,并将索引上传到区块链的智能合约,同时,将加密图像存储在云服务器中。

本文设定不同的聚类中心点个数k,通过聚类中心形成最后的视觉字典来建立索引。从图 4中可以看出,聚类中心数量k不是特别影响索引生成的时间,但是有助于在智能合约上快速检索。图 4显示了在3个数据集上建立加密索引所需时间,可以看出,随着数据集规模的变大,建立索引的时间也相应增多。Holiday数据集耗时约为20 s,Oxford5k数据集约为61 s,Ukbench数据集约为140 s。此处取20次实验结果的平均值为最后的结果,对于大规模图像数据而言在可接受的范围内,因为建立索引后可以动态修改无需重新建立一次索引。

Download:
图 4 不同聚类中心建立索引耗时 Fig. 4 Time consuming of indexing by different clustering centers

图 5展示了BVEIR方案与SEIR方案[2]建立索引耗时的对比,可以看出,BVEIR方案在建立索引方面耗时较少。

Download:
图 5 不同方案建立索引耗时 Fig. 5 Time consuming of indexing by different schemes
4.3 属性私钥生成(链下)

BVEIR方案还支持对图像数据的细粒度访问控制策略。选取pbc库中提供的A类椭圆曲线,对称加密算法采用AES-256来对图像进行加密。本文采用密文策略的属性加密机制完成对称密钥的加密,这实现了细粒度访问控制,不满足策略的用户将无法完成对图像的解密。本文所加密的是用来加密图像的对称加密密钥,用户只有在得到授权后才能恢复出原始的对称加密密钥,进而完成对加密图像的解密工作。换言之,非授权用户是无法解密出原始图像的,从而实现了对数据拥有者图像的隐私保护。如图 6所示,随着访问策略授权的属性个数增多,生成时间属性私钥的时间变长。当属性个数为20时,所需时间约为0.24 s,当属性个数为60时,所需时间约为0.5 s,即使当授权的属性个数达到100个时,所需时间也只需约1.6 s。而在实际应用中,一般授权的属性数量在10个左右,所以,这个细粒度的访问控制方案所需时间是可行的。

Download:
图 6 生成属性私钥耗时 Fig. 6 Time consuming of generating attribute private key

在后续工作中,将考虑利用属性加密技术来约束用户的搜索权限,与原先的构建索引过程最大的优势在于可以对图像数据使用者进行细粒度的搜索授权,用户只能在得到授权后才能通过陷门函数生成搜索凭证来完成后续的搜索操作,以此实现对搜索范围的权限管理。当数据使用者的属性满足数据拥有者预先设定的访问结构时才能解密出对应的搜索密钥,这里提到的访问结构指的是被授权的属性集合的结构。

4.4 BVEIR检索的可靠性、效率与精度(链上)

使用Ganache在本地构建一个模拟的以太坊网络,验证智能合约实现链上各个功能所需消耗的时间。智能合约采用solidity语言,并通过javascript编写的脚本与智能合约交互实现存储、搜索、更新功能。Ganache与真实的以太坊环境非常相似,不同之处在于其默认的挖矿时间为0,即发起的交易立即可以得到确认上链,从而可以专注于智能合约的调试去分析是否实现了预定的逻辑处理。

在本文研究中,对检索结果的性能评价使用精确率P与召回率R。由图 7图 8可以看出。虽然本文提出的索引结构BSEI在随着图像数量增长的同时检索精确率有所回落,但当图像数量为10 000时检索仍然不低于30%。此外,从图 8中还可以看出,3个方案的召回率随着图像数量的增长而增长,但在图像数量保持相同时,本文方案的召回率相比于EHD[21]和SIM[22]方案要好。通过精确率与召回率指标可以看出,本文提出的加密索引方案是可行的,并且检索的效果符合预期。

Download:
图 7 不同索引结构精确率对比 Fig. 7 Accuracy comparison between different index structures
Download:
图 8 不同索引结构召回率对比 Fig. 8 Recall rate comparison between different index structures

本文方案的主要贡献是在区块链上进行加密图像的检索,通过区块链的共识机制来保证图像检索结果的完备性。从图 9中可以看出智能合约的各主要功能存储、搜索和更新操作的耗时。存储耗时最多,是因为加密索引需要通过交易的方式发送给智能合约。具体而言,为了避免超过gaslimit,本文在把加密索引存储到智能合约阶段将其分为n个子集,再以n次交易的形式发送到智能合约,加密索引的存储大小、存储上链需要的交易次数#Tx和存储到智能合约所消耗的时间在表 3中列出,可以看出,最小的数据集Holiday需要的存储时间约为55 s,最大的数据集Ukbench需要的存储时间约为876 s。通过多次交易的方式将加密索引分批存储到智能合约当中,平均每笔交易需要约4 s进行操作。这是与在云服务器上检索方案最大的不同。此外,本文没有考虑共识机制(挖矿)过程对效率的影响。

Download:
图 9 智能合约耗时 Fig. 9 Time consuming of smart contract
下载CSV 表 3 加密索引存储耗时 Table 3 Time consuming of storing encrypted index

本文BVEIR方案在搜索与更新时,需要在本地生成token并通过交易的方式发送给智能合约以触发对应的功能,一次交易就能完成。3个数据集的搜索时间都在10 s以下,在可接受的时间范围内普通用户进行常规搜索并能得到可靠的数据,而SHEN等[23]的图像检索时间平均为14.65 s,需要注意的是,可以通过调整聚类中心k的个数进一步优化检索效率。同时最大不同之处在于本文方案并不需要删除字典,而是类似搜索一样去找到需要删除的图像将其中的$ {\mathit{\Sigma}} $置1代表删除,虽然这样会导致删除一张图片时间要比增加一张图片时间要多,原因是增加一张图片只需要对搜索字典查找并将其加入到对应的链表的头节点,而删除一张图片不仅要找到对应的链表,还需要对搜索数组查到找需要删除图像的id。普遍来说,遇到增加一张图片比删除一张图片的情况要多,虽然一定程度上造成了更新阶段比搜索阶段消耗更多的时间,但是从区块链存储成本角度来分析,省去了删除字典,降低了存储到智能合约当中的成本。此外,本文提出的在区块链上进行的加密图像检索方案产生的检索成本相比于传统的云服务器略显高昂,但是带来的优势是其无法比拟的,也提供了一种新的思路解决搜索结果的验证问题。

图 10中展示了部分检索结果(山、帆船、金字塔、浮冰),可以看出,根据查询图像可以检索到多张与其相似度很高的匹配图像,从而说明BVEIR具有可靠性和较高的检索效率与精度,同时具有良好的隐私保护效果。

Download:
图 10 BVEIR方案检索结果 Fig. 10 Search results of BVEIR scheme
4.5 安全性分析

对BEVIR方案的安全性分析如下:

1)完备性。一旦触发智能合约中的条件并执行预先设定好的逻辑(代码),智能合约就会将运行后的结果永久保存在智能合约的状态中,在以太坊上,这种结果是对所有人公开的。以太坊的共识机制保证了智能合约上的操作都能得到正确执行,并且每个矿工可以对结果进行验证,也就意味者通过搜索智能合约进行搜索可以得到正确的结果,无需用户验证结果,从而避免恶意云服务器所带来的威胁。

2)机密性。为了证明本文方案π的机密性,遵循real-ideal simulation paradigm,首先在构造中定义以下3个泄露函数:

(1)泄露函数L1(G)={|G|,{|gi|,id(gi)},i∈[1,#G]},其中,id(gi)是第i幅图像的唯一标识符。

(2)泄露函数L2(w,s)={SP(w,s),tokenq},其中,w是图像的视觉单词,s是图像的simhash指纹,SP(w,s)表示搜索模式。

(3)泄露函数L3(w,s,id)={add/del,UP(w,s,id),tokenu},其中,add/del作为区分输入的目的(增加或删除),UP(w,s,id)表示更新(增加或删除)模式。

定理1    如果FGP是伪随机函数,那么本文方案π是适应性选择关键词安全的。

证明:如果对于任意敌手A存在一个模拟器S,模拟器S根据泄露函数L回答敌手A的询问。敌手A识图通过分析加密图像、加密索引与搜索令牌来赢得游戏但由可忽略函数negl(λ)定义可知,任意多项式时间敌手A在不具备对称加密密钥kd以及搜索密钥ksFGP)的情况下,对于$ \mathrm{R}\mathrm{e}\mathrm{a}{\mathrm{l}}_{\mathrm{A}}^{\pi }\left(\lambda \right) $$ \mathrm{I}\mathrm{d}\mathrm{e}\mathrm{a}{\mathrm{l}}_{\mathrm{A}, \mathrm{S}}^{\pi }\left(\lambda \right) $的输出结果在计算上不可区分的,满足条件$ \mathrm{P}\mathrm{r}\left[\mathrm{I}\mathrm{d}\mathrm{e}\mathrm{a}{\mathrm{l}}_{\mathrm{A}, \mathrm{S}}^{\pi }\right(\lambda \left)\right]\le \mathrm{n}\mathrm{e}\mathrm{g}\mathrm{l}\left(\lambda \right) $,那么本文方案π是适应性选择关键词安全的。

5 结束语

本文提出一种基于区块链的加密图像检索方案,通过在智能合约上进行检索,避免云服务器返回错误或不完整的搜索结果。此外,设计一种利用视觉词袋模型和simhash的双层索引结构,提高图像检索的效率和精度。本文方案的索引生成过程也可以模块化换为其他可搜索加密方案。后续将研究可信执行环境TEE、同态加密、安全多方计算SMC、零知识证明ZKP等技术,在不泄露图像隐私的情况下进一步降低检索成本,增强方案的实用性。同时,还将在建立索引的过程融入卷积神经网络和主成分分析,获得更好的相似图像匹配效果。

参考文献
[1]
RITTINGHOUSE J W, RANSOME J F. Cloud computing: implementation, management, and security[M]. [S.l.]: CRC Press, 2016.
[2]
LI M, ZHANG M, WANG Q, et al. InstantCryptoGram: secure image retrieval service[C]//Proceedings of IEEE Conference on Computer Communications. Washington D.C., USA: IEEE Press, 2018: 2222-2230.
[3]
WANG Q, HE M, DU M, et al. Searchable encryption over feature-rich data[J]. IEEE Transactions on Dependable and Secure Computing, 2016, 15(3): 496-510.
[4]
JARECKI S, JUTLA C, KRAWCZYK H, et al. Outsourced symmetric private information retrieval[C]//Proceedings of ACM Conference on Computer and Communications Security. New York, USA: ACM Press, 2013: 875-888.
[5]
WANG Q, REN K, DU M, et al. SecGDB: graph encryption for exact shortest distance queries with efficient updates[C]//Proceedings of International Conference on Financial Crypto-graphy and Data Security. Berlin, Germany: Springer, 2017: 79-97.
[6]
YLI-HUUMO J, KO D, CHOI S, et al. Where is current research on blockchain technology?—A systematic review[J]. PloS One, 2016, 11(10): 1-10.
[7]
XIA Z, WANG X, ZHANG L, et al. A privacy-preserving and copy-deterrence content-based image retrieval scheme in cloud computing[J]. IEEE Transactions on Information Forensics and Security, 2016, 11(11): 2594-2608. DOI:10.1109/TIFS.2016.2590944
[8]
YE J, XU Z, DING Y. Image search scheme over encrypted database[J]. Future Generation Computer Systems, 2018, 87: 251-258. DOI:10.1016/j.future.2018.02.045
[9]
QIN J, LI H, XIANG X, et al. An encrypted image retrieval method based on Harris corner optimization and LSH in cloud computing[J]. IEEE Access, 2019, 7: 24626-24633. DOI:10.1109/ACCESS.2019.2894673
[10]
ZHU L, ZHANG C, XU C, et al. An efficient and privacy-preserving biometric identification scheme in cloud computing[J]. IEEE Access, 2018, 6: 19025-19033. DOI:10.1109/ACCESS.2018.2819166
[11]
YUAN J, YU S, GUO L. SEISA: secure and efficient encrypted image search with access control[C]//Proceedings of IEEE Conference on Computer Communications. Washington D.C., USA: IEEE Press, 2015: 2083-2091.
[12]
FERREIRA B, RODRIGUES J, LEITAO J, et al. Practical privacy-preserving content-based retrieval in cloud image repositories[J]. IEEE Transactions on Cloud Computing, 2017, 7(3): 784-798.
[13]
KAMARA S, PAPAMANTHOU C, ROEDER T. Dynamic searchable symmetric encryption[C]//Proceedings of ACM Conference on Computer and Communications Security. New York, USA: ACM Press, 2012: 965-976.
[14]
CUI H, YUAN X, WANG C. Harnessing encrypted data in cloud for secure and efficient mobile image sharing[J]. IEEE Transactions on Mobile Computing, 2016, 16(5): 1315-1329.
[15]
CASH D, JARECKI S, JUTLA C, et al. Highly-scalable searchable symmetric encryption with support for boolean queries[C]//Proceedings of Annual Cryptology Conference. Berlin, Germany: Springer, 2013: 353-373.
[16]
GUO S, XU J, ZHANG C, et al. ImageProof: enabling authentication for large-scale image retrieval[C]//Proceedings of the 35th International Conference on Data Engineering. Washington D.C., USA: IEEE Press, 2019: 1070-1081.
[17]
WANG S, ZHANG Y, ZHANG Y. A blockchain-based framework for data sharing with fine-grained access control in decentralized storage systems[J]. IEEE Access, 2018, 6: 38437-38450. DOI:10.1109/ACCESS.2018.2851611
[18]
HU S, CAI C, WANG Q, et al. Searching an encrypted cloud meets blockchain: a decentralized, reliable and fair realization[C]//Proceedings of IEEE Conference on Computer Communications. Washington D.C., USA: IEEE Press, 2018: 792-800.
[19]
CHEN L, LEE W K, CHANG C C, et al. Blockchain based searchable encryption for electronic health record sharing[J]. Future Generation Computer Systems, 2019, 95: 420-429.
[20]
BENET J. IPFS-content addressed, versioned, P2P file system[EB/OL]. (2014-07-14)[2021-03-10]. https://arxiv.org/pdf/1407.3561.pdf.
[21]
SUN X M, XIONG N N, VASILAKOS A V, et al. EPCBIR: an efficient and privacy-preserving content-based image retrieval scheme in cloud computing[J]. Information Sciences, 2017, 387: 195-204. DOI:10.1016/j.ins.2016.12.030
[22]
曹宇思. 云环境下密文图像检索系统研究[D]. 长沙: 中南林业科技大学, 2019.
CAO Y S. Research on ciphertext image retrieval system in cloud environment[D]. Changsha: Central South University of Forestry and Technology, 2019. (in Chinese)
[23]
SHEN M, DENG Y, ZHU L, et al. Privacy-preserving image retrieval for medical IoT systems: a blockchain-based approach[J]. IEEE Network, 2019, 33(5): 27-33. DOI:10.1109/MNET.001.1800503