1.一种异构的用户认证和密钥协商方法,其特点在于:包括以下步骤:S1:系统初始化:给定一个安全参数k,注册中心RC选择一个加法群G1、乘法群G2,两个群有相同的阶p,p为素数,P是群G1的生成元; 为一个双线性映射,定义四个安全的哈希函数:* *
H1:{0,1}→G1,{0,1}表示任意长度的0,1字符串,
2 * n n
H2:(G1) ×G2×{0,1}→{0,1},{0,1}表示长度为n长的0,1字符串,
2 n n
H3:(G1) ×{0,1}×{0,1}→G1,表示不包括0的整数群;
RC随机选择主密钥 并且计算出相应的主公钥Ppub=sP;
RC公开系统参数 并保密主密钥s,其中,S2:基于IBC的密钥生成:发送端向RC发送身份IDs,RC计算发送端的公钥QIDs=H1(IDs)和私钥SIDs=sQIDs,并将私钥SIDs发送给发送端;
S3:基于无证书的密钥生成;
S4:用户认证和密钥建立;
S5:接收端接收到密文后,给定发送端身份IDs、公钥QIDs和接收端私钥SIDr,建立发送端和接收端会话密钥;
其中,步骤S3具体包括:
S3.1:部分私钥生成:接收端向RC发送身份IDr,RC计算出哈希值QIDr=H1(IDr)和部分私钥DIDr=sQIDr,公开QIDr并将DIDr以安全的方式发送给接收端,QIDr表示接收端的部分公钥;
S3.2:完全私钥生成:接收端随机选择一个秘密值 再结合部分私钥DIDr,计算出完整的私钥SIDr=(xIDr,DIDr);
S3.3:公钥生成:接收端根据秘密值xIDr计算出完整的公钥PkIDr=xIDrP;
步骤S4具体包括:
S4.1:给定接收端身份IDr、公钥PkIDr和发送端私钥SIDs,发送端执行以下步骤:n
S4.2:发送端随机选择一个会话密钥K∈{0,1},随机数 计算盲化值U=rP,双线性对S4.3:发送端计算哈希值h=H2(U,rPkIDr,T,IDr),用哈希值h对密钥K进行加密,得到密钥K的密文 其中H2是一个哈希运算, 是异或运算;
S4.4:发送端计算哈希值X=H3(U,QIDs,C,IDs),X为加法群G1中的一个点,哈希值y=H4(U,QIDs,C,IDs),y为 中的一个随机数;
S4.5:发送端计算签名V=rX+ySIDs;
S4.6:最后生成密文σ=(U,C,V);
步骤S5具体包括:
S5.1:接收端计算出X和y值,X=H3(U,QIDs,C,IDs),y=H4(U,QIDs,C,IDs);
S5.2:检查 是否成立;如果等式不成立,拒绝该密文;否则继续执行步骤S5.3;
S5.3:计算
S5.4:恢复密钥K, 发送端和接收端会话密钥成功建立;
S5.5:最终会话密钥为K。
2.根据权利要求1所述的一种异构的用户认证和密钥协商方法,其特征在于:所有公钥在初始化阶段全部公开。