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