史 妍, 潘 伟, 陈伟昌
(东北师范大学 理想信息技术研究院,吉林 长春 130117)
第一个代理签密方案是在1999年由Gamage等人提出的[1],代理签密是将代理签名和签密两项功能结合起来, 签密者将签密的权力授予另一人,称为代理签密人,然后代理签密人代替原签密人对文件进行签密工作。
基于属性的加密方案于2006年由Goyal等人提出[2],被加密的数据可以在具有特定属性的一个群组中达到共享。随后,在文献[3]中,作者提出了基于属性的签名方案,使得具有特定属性的群组中的任意一人可以对具有某种属性的文件进行签名。
在此基础上,定义了一个基于属性的代理签密方案,使得某个群组中的任意一员可以授权给代理签密人去签密一个具有特定属性的文件,签密后的文件可在具有特定属性的群组中进行共享[6]。
令 G1和 G2为两个素阶群,阶为p,令 G1的生成元为g。定义满足如下特性的双线性映射 e :G1× G1→ G2:①双线性性:对任意 a ,b ∈及生成元 g ∈,e(ga,gb)→ e (g,g)ab;②非退化性:对任意的生成元 g ∈G1,e(g,g)≠ 1 ;③可计算性:对所有的生成元 g ∈G1,可以在多项式时间内计算e(g,g)。
代理签密方案基于如下BDH假设:
设 G1为素阶群,生成元为g,双线性映射 e :G1×G1→G2,< G1,G1,e>上的 BDH假设则为:对于任意的a,b,c ∈Zp,不存在算法B,在多项式时间内以不可忽略的优势来区分元组(A = ga,B = gb,C = gc,e(g,g )abc)和元组(A = ga,B = gb,C = gc,e(g,g )z)。
现代理签密算法中用到了拉格朗日插值法,用来为访问控制树中的每个结点构造多项式。
定理:对于次数为n多项式 f,给定 f上的 n + 1 个点(xi, f(xi))(i = 1,2,… ,n +1),能够唯一的确定一个多项式
Goyal等人在文章中提出了“访问控制树”的概念[2],现所述代理签密算法也是基于这种访问控制树结构。将被签密的文件用一个特定属性集来标识,签密者与解签密者的私钥由访问控制树来定义。访问控制树的叶结点代表某个特定属性,每个非叶结点都为阈门。对签密者来说,当且仅当他的访问控制树被文件属性集满足时,可签密文件;对解签密者而言,当且仅当他的访问控制树被文件属性集满足时,可解签密文件。
①将非叶结点x定义为阈门,由它的子结点和阈值来描述。定义 n umx为x的子结点数量; kx为x的阈值,则有0 ≺ kx≤ n umx。对于每个叶结点x, kx= 1 ,它代表属性集中的某个特定属性;
②定义3个函数:parent(x)代表结点x的父结点;a tt (x)表示x代表的属性,当且仅当x为叶结点;index(x)代表结点x的值,可以任意赋予,对每个密钥来说值唯一;
③访问控制树被满足。记以r为根结点的树为 Tr,其根结点为x的子树为 Tx;γ为属性集。
定义递归布尔函数 Tx(γ),当且仅当 Tx被γ满足时,有Tx(γ) = 1 。对于非叶结点x,对其所有子结点y计算 Ty(γ),当且仅当至少有 kx个孩子返回1时,有 Tx(γ) = 1 ,即x结点被满足;对于叶结点x,当且仅当 a tt(x)∈γ,即该结点所代表的属性在文件属性集中时,有 Tx(γ) = 1 ,x结点被满足。
基于属性的代理签名方案包含如下5个算法:
①由 PKG完成,系统初始化算法。输入安全参数,输出主密钥MK和公钥PK;
②密钥生成算法。输入主密钥MK和公钥PK,及访问控制树结构T,输出群组的私钥,当且仅当 T (γ) = 1 时,可签密或解签密属性集为γ的文件。算法运算过程如下:
a. 对T中的每个结点x,从根结点开始自顶向下的为每一个结点定义多项式 qx,其次数为 dx= kx- 1 。对根结点r有 qr(0)= y,为定义 qr,随机设置其余 dr个子结点的点值;对非根结点x,设置 qx(0) = qparent(x)(index(x )),随机设置其余 dx个子结点的点值。
③代理签密密钥生成算法。A向 PKG请求一个许可证mw来说明A和代理人P之间的授权关系、所授权限及使用期限等内容。其中,A将所授权限从其访问控制树中提取出来,以子树的形式存储在 mw中。A将 mw签名后发送给P,P验证签名,若成立则向 PKG请求自己私钥并生成代理签密密钥。因此,此算法以许可证 mw,原始签密者私钥 DA,代理签密者私钥 DP为输入,输出代理签密密钥D或⊥(签名验证失败);
④签密算法。输入文件的属性集γ,明文M和公钥PK,由代理签密密钥D进行签密,输出密文 C =(E,σ,S,mw);
⑤解签密算法。输入公钥PK,解签密密钥D和密文C,接收者进行解密并进行签名验证,解签密成功输出明文M,解签密失败输出⊥。
(1)定义相关变量
定义 G1, G2为双线性素阶群,阶为p,g为 G1的生成元,双线性映射 e :G1× G1→ G2;定义两个哈希函数:{0,1}n→ ,其中n为明文消息M的长度;定义拉格朗日系数i∈Zp,S⊂Zp,其中S为Zp的子集。
令A为群组1的一个成员,有签密文件的权限;P为代理签密者;B为群组2的一个成员,将解签密文件。
(2)方案如下:
①系统初始化算法:
定义全局属性集 U = { 1,2,… ,n },在集合 Zp上为每个属性i∈U均匀随机地选择一个元素ti;在集合Zp上均匀随机地选择一个元素y。MK为:
②密钥生成算法: (M K,P K,T)⇒D。
令T为一成员的访问控制树,其私钥为: D = { DX=|i = att(x)};
③代理签密密钥生成算法:(M K,P K,TP)⇒DP, (mw,DA, DP)⇒D。
A对 mw进行签名:发送给P。
④签密算法: (γ,M ,P K,DP,D ) ⇒ C 。
令γ为预签密文件的所具有属性的集合,P随机均匀的从pZ中选择数x作为自己的私有数值。签密过程如下:
④ k ← e (g,g )xy⑤ E ← H2(k ) ⊕M
⑥ C ←(E,σ,S,mw);
⑤解签密算法: (P K,DB,C) ⇒ M/⊥ ,
解密: e (DB,σ) = e(g,g )xy⇒ M ,r ,
验证: h = H1(mw),当且仅当 e (S,Ti) = (e(g,g )xy)r(e(g,g )y)h(e(g,g )y)h时,签名正确,输出M;否则输出⊥。
(1)正确性
在文献[2]中定义了递归算法 V erNode(E,D,x),可将该算法针对该方案稍做修改即有 e (DB,σ) = e (g,g )xy,从而可得 M ,r。同理可证明签名验证的正确性。具体计算过程请参见文献[2]和文献[5]。
(2)保密性
在文献[4]中,提出如下假设并给出基于该假设的证明方法:已知 P ,Q ∈ G ,R = sP,计算sQ是困难的。在该方案中,。该保密性证明问题可等价为已知,显然,基于上述假设,求 Qx= e (g,g)xy是困难的,因此,该方案满足保密性。
(3)强不可伪造性
(4)公开验证性
将(S,r,k =e(g,g )xy,提交给第三方,验证等式成立与否。整个验证过程中,无需访问明文M,也无需接收者B的密钥,在保密的基础上可进行公开验证。
(5)强可识别性
签密文件中有原始签密人A的授权许可证wm , 则任何人都可以从wm 中来确定代理签密人的身份。
(6)强不可否认性
验证签名的等式中包含授权许可证wm ,因此代理签密人一旦签密了文件,便不可否认。
主要提出了一个基于属性的代理签密方案,并对其安全性进行了分析。该方案可满足公开验证性、强可识别性和强不可否认性,但不满足前向安全性。这将作为下一步的工作。
[1] MAMBO M, USUDA K, OKAMOTO E. Proxy Signature: Delegation of the Power to Sign Messages[J]. IEICE Trans. Fundamentals,1996(E79-A):1338-1353.
[2] GOYAL V, PANDEYY O, SAHAIZ A. Attribute-based Encryption for Fine-grained Access Control of Encrypted Data[C]. USA: ACM Press, 2006:89-98
[3] GUO S Q, ZENG Y P. Attribute-based Signature Scheme[C]. USA:IEEE Computer Society, 2008:509-511.
[4] FLORIAN Hess. Efficient Identity Based Signature Schemes Based on Pairings [C]. Berlin/Heidelberg: Springer, 2003:310-324.
[5] 史妍,潘伟,钟绍春.基于属性的签密方案[J].信息安全与通信保密,2009(09):129-131.
[6] 张慧.一种代理签名方案的分析与改进[J].信息安全与通信保密,2009(11):74-76.