1.一种抵抗有界敏感信息泄露的无证书密钥封装方法,其特征在于由下述步骤组成:
(1)系统初始化
1)运行群生成算法生成相应的元组(q,g,p),其中g是阶为大素数q的加法循环群,p是群g的生成;
2)选择安全的哈希函数h、哈希函数h′、密码衍射函数kdf:
其中id是用户的身份标识,
3)从q阶整数群
ppub=a·p
params={q,g,p,ppub,h,h′,kdf}
其中a为有限的整数;
(2)生成用户密钥
身份标识为id的用户的密钥生成过程如下:
1)用户确定公开参数xid:
其中,
将用户的身份标识id和公开参数xid发送给密钥生成中心;
2)密钥生成中心收到用户的身份标识id和公开参数xid后,密钥生成中心从q阶整数群
yid=rid·p
yid=rid+a·h(id,xid,yid)
3)用户收到部分公钥yid和部分私钥yid,检查式(1)是否成立
yid·p=yid+ppub·h(id,xid,yid)(1)
若式(1)成立,设置用户的私钥skid并保密和用户的公钥pkid并公开;若式(1)不成立,输出失败信息,终止协议并退出;
其中,skid为
(3)封装
1)用户从q阶整数群
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·t2
c=(c0,c1,c2,c3)
k=r2·xid+r1·(yid+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)