李兆斌 赵 洪 魏占祯
(北京电子科技学院 北京 100070)
随着云计算、物联网等新技术的快速发展和应用,大量数据需要外包存储在各种开放环境中,数据安全尤其是数据机密性保护已经成为企业和个人关注的焦点。传统的解决方法是将数据加密后再存储到云服务器,但这种方法在密文授权和密钥管理时不够灵活。为了解决密文授权问题,Blaze 等人[1]首次提出了代理重加密方案,半可信服务器使用重加密密钥进行密文转换,将授权者的密文转换成被授权者可以解密的密文,重加密过程不会泄露明文和授权者的私钥信息。代理重加密可以实现单向或双向授权,也可以实现单次或多次重加密操作[2-5],目前的重加密方案都是基于传统公钥或基于身份的公钥来实现的,在云计算环境中的应用已经有很多研究成果[6-11]。但这些代理重加密方案都存在缺陷,代理服务器在得到重加密密钥后可以将授权者的所有密文都进行重加密,授权者无法对密文进行细粒度的控制。因此Weng等人[12]提出了条件代理重加密方案(Conditional Proxy Re-Encryption, CPRE),只有符合条件的密文才会被代理服务器重新加密,很多文献对CPRE进行了研究,大多数的CPRE方案都是基于双线性对[13-16]。由于双线性对运算效率不高,因此有研究者提出了无双线性对的CPRE方案[17-20],但这些方案在重加密过程中只检查原始密文的条件符合性,而忽略了重加密密钥的条件符合性检查,导致攻击者可以发送不符合条件的重加密密钥来让代理服务器进行重加密操作,从而大量消耗代理服务器的资源。这些方案也没有对条件信息进行保护,容易造成敏感条件信息泄露。
为了解决单个代理服务器完成重加密操作带来的信任过度集中和单点失效问题,有文献提出了基于门限的代理重加密方案[21-24]。其中Patil等人[22]提出的方案在重加密时没有考虑原始密文的条件,并且需要授权者和被授权者将私钥信息提交给第三方来生成重加密密钥,存在很大的安全隐患。同时该方案中的被授权者与代理服务器合谋可以恢复出授权者私钥的哈希值,从而导致方案中授权者用该私钥哈希值对应公钥加密的所有原始密文都存在被恶意恢复的安全风险,方案只能达到选择明文攻击下的不可区分安全性。
本文是在条件代理重加密[20]和门限代理重加密方案[22]基础上提出的一种新的门限条件匿名代理重加密方案,本方案不依赖双线性对,在重加密过程中同时对密文和重加密密钥进行条件检查,对敏感的条件信息进行匿名化处理,将重加密过程分布到多个代理节点来执行,并能够防止代理服务节点与被授权者合谋恢复出授权者的私钥信息。
无双线性对的门限条件匿名代理重加密方案(Threshold-Based Conditional Anonymous Proxy Re-Encryption scheme, TB-CAPRE)基于有限域中的离散对数,在解决条件匿名化的同时也解决了Paul等人[20]所提方案中只检查密文的条件信息而忽略了重加密密钥有效性问题,具有更细粒度的密文授权能力。本文中的条件信息t∈Zq∗可由用户根据实际应用需要进行定义,如密文生成时间、文件类型等。方案包含如下7个算法:
(1)系统参数生成(Setup):输入安全参数λ,输出公开的系统参数p aram;
(2)密钥生成(KeyGen):输入系统的公开参数集p aram ,为用户i生 成公私钥对( PKi,SKi);
(3)加密(Encryption):输入系统公开参数集param 、用户的公钥P Ki、 明文消息m和条件信息t,生成消息的原始密文Ci;
由于本方案中存在两种密文,即原始密文和重加密密文,因此在安全性定义时必须考虑两种密文的安全。
定义1 无双线性对的门限条件匿名代理重加密方案选择密文攻击下的不可区分性(TB-CPAE INDistinguishablity under Chosen Ciphertext Attack,TB-CAPRE-IND-CCA),包括原始密文选择密文攻击下的不可区分性(Level-2 INDistinguishablity under Chosen Ciphertext Attack, L2-IND-CCA)和重加密密文选择密文攻击下的不可区分性 (Level-1 INDistinguishablity under Chosen Ciphertext Attack,L1-IND-CCA)。
下面通过两个安全游戏来描述原密文和重加密密文选择密文攻击下的不可区分性。
2.2.1 L2- IND- CCA游戏
该游戏考虑原始密文(第2层密文)选择密文攻击下的不可区分性。挑战者C模拟TB-CAPRE运行环境,接收敌手A的查询,游戏过程如下:
(1)初始化,挑战者C运行S etup(λ),获得系统参数p aram ,并将p aram 返回给敌手A。
(2)查询阶段1,敌手A可进行如下查询:
(a)诚实用户公钥查询Ou(i):输入诚实的用户i, 挑战者C运行K eyGen(i,param) 来获得用户的公私钥对( PKi,SKi), 并将公钥P Ki发 送给敌手A;
(b)毁坏用户私钥查询Oc(i):输入毁坏的用户i, 挑战者C运行K eyGen(i,param) 来获得用户的公私钥对( PKi,SKi), 并将公私钥对( PKi,SKi)发送给敌手A;
(1)原始密文条件验证
(2)重加密密钥条件验证
4.2.1 条件匿名性
本方案在原始消息加密和生成重加密密钥过程中使用条件信息t,生成的原始密文和重加密密钥中只包含T=gt,所以即使攻击者得到T也无法恢复出条件信息,可以实现条件的匿名性。
4.2.2 重加密密钥保护
4.2.3 抗合谋攻击
算法C维护2个初始为空的列表Klist和Rlist来分别存储公私钥对和重加密密钥。
查询阶段1,敌手A可进行各种查询,C作如下响应:
下面对本方案进行计算效率方面的分析,表1为本方案与其他方案计算效率和特点的比较。由于方案的加解密、重加密和条件匿名等功能主要是由指数和哈希运算实现的,因此表2统计了本方案各过程中包含的指数运算和哈希运算计算量。其中p,e,h分 别表示双线性对运算、群G中的指数运算以及哈希运算,系数为运算次数,k是门限值,n是代理服务节点总数量。
表1 计算效率与特点对比
表2 本方案计算量
从表1可以看出,除了重加密过程(ReEnc)外,本文方案的性能与文献[20]相当,但本文方案使用门限的方法来解决重加密过程中信任过度集中和单点失效问题,因而ReEnc过程计算效率会有所下降。文献[23]的方案是基于双线性对且不支持条件重加密,考虑到双线性对运算效率一般只有指数运算的一半,在代理重加密服务节点数量较多时((k,n) 门限中的n较大),本文方案的计算效率要优于文献[23]。文献[22]的计算效率比较高,主要原因是在重加密密钥生成过程(ReKeyGen)中没有进行指数运算和双线性对运算,而是直接将授权者和被授权者的私钥信息发送给一个第三方来进行简单的代数运算生成重加密密钥,这带来了私钥泄露的风险,同时该方案也不支持条件重加密,只能达到IND-CPA安全。本文方案实现了随机预言下的IND-CCA安全,从表2可以看到,为了实现INDCCA安全和条件信息的匿名化,本方案的计算量中引入了一定的哈希运算。由于哈希运算的效率比指数运算要高得多,因此本方案在提高安全性的同时并没有增加太大的计算量。
本文提出了无双线对的门限条件匿名代理重加密方案的定义及安全模型,该方案在CDH问题困难性假设下能够满足随机预言模型中的INDCCA安全,本文方案在原始密文和重加密密钥中加入条件信息,能够对重加密密文进行细粒度的控制。方案在重加密密钥生成和重加密过程中引入了门限技术,为重加密应用于分布式系统提供了基础。方案不依赖双线性对操作,可以对敏感的条件信息进行匿名化处理,并能够防止代理服务节点与被授权者合谋恢复授权者的私钥信息。方案目前只能支持确定的单条件信息,无法实现模糊条件和多条件,这是下一步需要重点解决的问题。