1.一种抵抗连续秘密信息泄露的无证书密钥封装方法其特征在于由下述步骤组成:(1)系统初始化
1)运行群生成方法生成相应的元组(q,G,P),其中G是阶为大素数q的加法循环群,P是群G的生成元;
2)选择安全的哈希函数H、哈希函数H′、密码衍射函数KDF:H:
H′:
KDF:
其中ID是用户的身份标识, 为q阶整数群;
3)从q阶整数群 中随机选择有限整数a作为系统的主私钥并保密,设定系统的主公钥Ppub,全局参数params,并公开:Ppub=a·P
params={q,G,P,Ppub,H,H′,KDF}其中a为有限的整数;
(2)生成用户密钥
身份标识id的用户的密钥生成方法如下:
1)用户确定公开参数Xid:其中, 和 是从q阶整数群 中随机选择的有限整数;
将用户的身份标识id和公开参数Xid发送给密钥生成中心;
2)密钥生成中心收到用户的身份标识id和公开参数Xid后,密钥生成中心从q阶整数群中随机选择有限整数rid,将用户的部分公钥Yid和用户的部分私钥yid通过安全信道发送给用户:Yid=rid·P
yid=rid+a·H(id,Xid,Yid)
3)用户收到部分公钥Yid和部分私钥yid,检查式(1)是否成立yid·P=Yid+Ppub·H(id,Xid,Yid) (1)若式(1)成立,则从q阶整数群 中随机选择有限整数w1、w2、w3,并设定用户的部分私钥和用户的部分私钥设置用户的私钥SKid并保密和用户的公钥PKid并公开;若式(1)不成立,输出失败信息,终止协议并退出;
其中,SKid为 PKid为(Xid,Yid);
(3)密钥更新
用户从q阶整数群 中均匀随机选择有限整数n1、n2、n3,构成整数集合 并设定更新后的用户部分私钥 用户部分私钥输出更新后的用户私钥SKi′d(4)封装
1)用户从q阶整数群 中均匀随机选择有限整数r、r1、r2,设定部分封装密文c0、部分封装密文c1、部分封装密文c2:c0=r·P
c1=r1·P
c2=r2·P
2)给定哈希函数H′的输入值c0、c1、c2,得到相对应的输出值μ:μ=H′(c0,c1,c2)
3)设定密码衍射函数KDF的输入值W:W=r1·Xid+r2·μ·(Yid+Ppub·H(id,Xid,Yid))
4)设定密码衍射函数KDF的输出值t1、输出值t2:(t1,t2)=KDF(W)
5)设定部分封装密文c3、封装密文C和封装密钥k,并输出封装密文C和封装密钥k:c3=r·t1+r1·t2C=(c0,c1,c2,c3)k=r2·Xid+r1·(Yid+Ppub·H(id,Xid,Yid))(5)解封装
1)接受者设定部分私钥的中间秘密值 哈希函数H′的输出值μ,密码衍射函数KDF的输入值W和密码衍射函数KDF的输出值t1′、输出值t2′:μ=H′(c0,c1,c2)(t1′,t2′)=KDF(W)
2)如果等式(2)成立,则输出封装密钥k;否则输出⊥,表示解封装失败:c3·P=t′1·c0+t′2·c1 (2)