本发明属于密钥封装体制技术领域,具体涉及到抵抗有界敏感信息泄露的无证书密钥封装方法。
技术背景
2003年,al-riyami等人提出了无证书公钥密码体制,解决了传统公钥密码体制下的证书管理的问题,同时也解决了基于身份密码体制的证书管理问题。近年来,无证书密码原语的研究得到密码研究者的广泛关注。2007年,huang等人提出了一个称为无证书密钥封装体制的新密码学原语,在该密码原语的研究中,忽略了泄露秘密状态信息对体制安全性所造成的影响。在现实环境中,敌手可以通过某种攻击方式(例如时间攻击)获得秘密信息。例如,银行的atm系统在使用时,用户的密码极易被攻击者通过视频监控或分析按键手势和频率的方式获知,采用传统密码体制来保护敏感信息的方法在秘密信息被泄露的情况下,已无法满足其应有的安全性。在现实应用中,敌手能够持续进行上述泄露攻击方式,形成连续的泄露攻击模式。为了所设计的密码体制具有更高的实用性和更广泛的应用前景,应该去除与通信双方相关的秘密信息不会被窃取或泄露的假设,以进一步研究密码体制抗连续泄露攻击的能力。
jui-di等人公开的《leakage-resilientcertificatelesskeyencapsulationscheme.informatica》(lithuanianacademyofsciences,2018年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)
本发明在各个步骤中未使用复杂的双线性映射,提高了运算效率和实用性;在封装密文中的所有元素对于任意敌手完全随机,确保任何敌手都无法从封装密文中获得相关私钥的秘密信息,保持了泄露参数固定,与封装密钥空间的大小无关,抗泄露能力不受封装密钥空间的增加而减少,在存在泄漏的现实环境中依然保持高安全性。本发明具有安全性高、使用范围广、实用性强等优点,可用于网络环境受限的数字传输技术领域。
附图说明
图1是本发明实施例1的流程图。
具体实施方式
下面结合附图和实施例对本发明进一步详细说明,但本发明不限于下述的实施例。
实施例1
在图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)
根据上述原理,还可设计出另外一种具体的抵抗有界敏感信息泄露的无证书密钥封装方法,但均在本发明的保护范围之内。