孙丽雪,豆建峰
(河南工学院 理学部,河南 新乡 453003)
随着云计算的发展,越来越多的用户把数据外包到云服务器上[1],但云服务的数据安全问题成为云服务被广泛应用的主要障碍[2-3]。为了避免隐私泄漏的风险,数据拥有者通常在上传数据之前加密了这些数据。数据加密使得文件对任何人都是不可读的,用户就不能直接输入关键词来检索自己想要的数据,因而带来了对密文数据进行检索这一具有挑战性的难题。
为了解决上述问题,公钥可搜索加密技术被广泛研究。公钥可搜索加密[4]允许数据拥有者把加密的文件上传到云服务器上,之后数据拥有者指定的用户可以使用关键词从云服务器上检索这些加密的文件。在公钥可搜索加密方案中,数据拥有者使用接收者的公钥分别加密文件中每个关键词,即生成关键词的索引,并把这些索引附在文件密文之后。为了搜索包含指定关键词的文件,数据接收者生成关键词的陷门,并发送给云服务器。云服务器检验索引中的关键词和陷门中的关键词是否匹配,并把相应的密文文件返回给接收者。为了实现对加密数据细粒度的访问控制,公钥可搜索加密的概念可以扩展为基于属性的关键词搜索,即允许属性满足指定访问策略的用户直接搜索加密的数据[5-6]。
根据公钥认证方法的不同,公钥密码体制分为基于公钥基础设施(PKI)的密码体制[7-9]、基于身份的密码体制[10-12]和无证书的密码体制[13-15]。在基于PKI的密码体制中,证书权威(CA)为每个用户签发一个公钥证书,用户使用公钥前,需要先验证公钥证书的合法性,这就增加了用户的计算量。基于身份的密码体制取消了公钥证书,但所有用户的私钥都由私钥生成中心(PKG)生成,这就产生了密钥托管问题。无证书的密码体制解决了基于身份的密码体制中的密钥托管问题,更加安全。和基于PKI的密码体制相比,无证书的密码体制更加高效,因为不需要维护公钥证书目录。
Ma等[16]提出了一个无安全信道的无证书公钥可搜索加密方案。然而,该方案容易遭受内部关键词猜测攻击,即云服务器可以猜测出用户发送的陷门中的关键词。此外,陷门是应用确定性的加密算法生成的,不能实现陷门不可链接性。陷门不可链接性要求外部敌手不能推断出任何捕获的陷门的关系,也就是外部敌手不能推断出任何不同的陷门是否是同一个用户发送的。为了解决这些问题,根据文献[17],本文提出了一个无证书的可以抵抗内部关键词猜测攻击的公钥可搜索加密方案,且陷门的生成采用的是随机性的加密算法,可以实现陷门不可链接性。
定义1 (双线性对[11]) 假设G是一个加法循环群,GT是一个乘法循环群,阶数都为某个大素数p。定义G和GT中的单位元分别为1G和1GT。令g是群G的一个随机生成元。称e:G×G→GT是一个双线性对,如果它是一个满足下列性质的映射:
(1) 双线性性:对于任何a,b∈RZp,有e(ag,bg)=e(g,g)ab;
(2) 非退化性:对于g1,g2∈G,存在e(g1,g2)≠1GT;
(3) 可计算性:对于所有的g1,g2∈G,可以有效地计算e(g1,g2)。
定义2 一个无证书的公钥可搜索加密方案包含以下步骤:
(1)系统建立。该算法由密钥生成中心(KGC)完成。以安全性参数λ为输入,输出主密钥和系统参数,密钥生成中心保密主密钥,公开系统参数。
(2)部分私钥提取。该算法生成用户的部分私钥,由密钥生成中心完成。输入用户的身份后,密钥生成中心计算该用户的部分私钥,并通过安全的方式发送给这个用户。
(3)设置秘密值。输入用户的身份和系统参数,算法输出该用户的秘密值。
(4)设置私钥。输入用户的部分私钥和秘密值,算法输出一个完全的私钥。
(5)设置公钥。输入系统参数和用户的秘密值,算法输出用户的公钥。
(6)加密的索引生成。输入系统参数和关键词,算法输出关键词的可搜索密文。
(7)陷门生成。输入系统参数和关键词,算法输出该关键词的陷门,并把陷门发送给云服务器。
(8)测试。云服务器收到陷门后,检验密文和陷门中含有的关键词是否一致。如果一致,算法输出1;否则,输出0。
(1) 系统建立。
(2) 部分私钥提取。
给定数据发送者的身份IDS,KGC计算它的部分私钥为DIDS=sQIDS,其中QIDS=H1(IDS);给定数据接收者的身份IDR,KGC计算它的部分私钥为DIDR=sQIDR,其中QIDR=H1(IDR)。
(3) 设置秘密值。
(4) 设置私钥。
给定数据发送者的部分私钥DIDS和秘密值xIDS,算法返回数据发送者的完全私钥为SIDS=(xIDS,DIDS);给定数据接收者的部分私钥DIDR和秘密值xIDR,算法返回数据发送者的完全私钥为SIDR=(xIDR,DIDR)。
(5) 设置公钥。
给定数据发送者和接收者的秘密值xIDS和xIDR,数据发送者和接收者分别计算自己的公钥为PKIDS=xIDSP和PKIDR=xIDRP。
(6) 加密的索引生成。
(7) 陷门生成。
(8) 测试。
收到陷门Tw′后,云服务器检验等式T1e(T3,C1)=e(C2,T2)是否成立。如果成立,算法输出1,表示密文和陷门中含有的关键词是一致的;否则,输出0。
正确性验证:
T1e(T3,C1)=e(zxIDRH1(w,K),PKIDS)
e(zP,rxIDRP)
=e(zxIDRH1(w,K),xIDSP)e(zP,rxIDRP)
=e(xIDSH1(w,K)+rP,zxIDRP)
=e(SKIDSH1(w,K)+rP,zPKIDR)
=e(C2,T2)
本文考虑建立一个无证书的可搜索加密系统。它包含了四个参与者:密钥生成中心、数据发送者、数据接收者和云服务器。
数据拥有者使用数据接收者的公钥和自己的私钥加密自己的数据和关键词,并把产生的密文上传到云服务器上。云服务器为数据发送者和数据接收者分别提供数据存储和检索服务。数据接收者想要搜索某个关键词时,他用自己的私钥和数据发送者的公钥生成关键词的陷门,并把陷门发送给云服务器。收到陷门后,云服务器会对加密的数据进行搜索,并把搜索结果返回给数据接收者。
密钥生成中心、数据发送者和接收者都被认为是完全诚实的。云服务器是诚实但好奇的,即它会诚实地执行描述的协议,但会尝试推断出一些用户的敏感信息。
在无证书的密码体制中,有类型Ι敌手AⅠ和类型Ⅱ敌手AⅡ。类型I敌手AⅠ不知道主密钥,但是该敌手可以任意替换用户的公钥。类型Ⅱ敌手知道主密钥,但是该敌手不能替换用户的公钥。本文给出的安全性模型类似于文献[1],现给出安全性定义:如果没有任何多项式有界的敌手以一个不可忽略的优势赢得游戏,则称提出的方案在选择关键词攻击下具有不可区分性。
可以通过下述挑战者C和敌手之间的游戏来定义安全性。
(1) 游戏1:假设敌手是一个不诚实的用户。
初始阶段:在这个阶段,C首先运行系统建立算法得到公共参数和主密钥。C把公共参数返回给AⅠ,秘密地保存主密钥。
阶段 1: AⅠ以一种适应性的方式进行多项式有界数目的询问。
哈希询问:AⅠ询问关键词wi的哈希随机预言。为了回应AⅠ,C把相应的结果发送给AⅠ。
部分私钥提取询问:如果AⅠ询问身份ID对应的部分私钥,C运行部分私钥提取算法得到部分私钥,并把结果发送给AⅠ。
公钥询问:收到身份ID的公钥询问,C返回相应的公钥给AⅠ。
替换公钥询问:AⅠ可以选择一个随机的值替换用户的公钥。
私钥提取询问:除了被挑战的身份,AⅠ可以进行任意身份的私钥提取询问,C运行相应的私钥提取算法,并返回相应的结果给AⅠ。
陷门询问:除了被挑战的身份,AⅠ可以进行任意关键词的陷门询问,C运行相应的陷门生成算法,并返回相应的陷门给AⅠ。
挑战阶段: 首先,AⅠ生成两个长度相等的不同关键词w0,w1。要求在阶段1中,AⅠ从来没有作过对w0或w1的询问。然后,AⅠ把w0和w1发送给C。C随机地选择一个比特b∈{0,1},并运行加密的索引生成算法,生成挑战密文。最后,C把挑战密文返回给AⅠ。
阶段2: 和在阶段 1中一样,AⅠ可以适应性地作出多项式有界数目的询问,限制是AⅠ不能作出对w0或w1的询问。
猜测阶段: ΑⅠ输出一个比特b′。如果b′=b,那么AⅠ赢得游戏。
(2) 游戏2:假设敌手是一个恶意但被动的KGC。
初始阶段:在这个阶段,C首先运行系统建立算法得到公共参数和主密钥。
C把公共参数和主密钥返回给AⅡ。
阶段1: AⅡ以一种适应性的方式进行多项式有界数目的询问,包括哈希询问、公钥询问、私钥提取询问和陷门询问,C运行相应的算法,并把相应的结果返回给AⅡ。
挑战阶段: 首先,AⅡ生成两个长度相等的不同关键词w0,w1。要求在阶段1中,AⅡ从来没有作过对w0或w1的询问。然后,AⅡ把w0和w1发送给C。C随机地选择一个比特b∈{0,1},并运行加密的索引生成算法,生成挑战密文。最后,C把挑战密文返回给AⅡ。
阶段2: 和在阶段 1中一样,AⅡ可以适应性地作出多项式有界数目的询问,限制是AⅡ不能作出对w0或w1的询问。
猜测阶段: AⅡ输出一个比特b′。如果b′=b,那么ΑⅡ赢得游戏。
在本文提出的方案中,密文是随机生成的,敌手能够区分两个随机生成密文的概率是可以忽略的,即两种类型的敌手在游戏 1和游戏 2中的优势都是可以忽略的。通过类似的安全性游戏验证,可以说明本文提出的方案在关键词猜测攻击下具有不可区分性。
本文基于无证书的公钥密码体制,提出了一个高效可行的公钥可搜索加密方案。在方案中,数据发送者使用接收者的公钥和自己的私钥生成陷门,避免了密文的公共生成,可以抵抗云服务器发起的内部关键词猜测攻击。