一种解决组合公钥cpk密钥碰撞问题的方法

文档序号:9790753阅读:1399来源:国知局
一种解决组合公钥cpk密钥碰撞问题的方法
【技术领域】
[0001]本发明涉及一种组合公钥CPK密钥碰撞问题的方法,尤其涉及一种解决组合公钥CPK密钥碰撞问题的方法,属于密码学领域。
【背景技术】
[0002]组合公钥体制(CPK)是由资深的密码学专家南相浩于2003年正式提出,创造性的以种子密钥为核心,将多种经典的密码算法加以组合,巧妙地解决了标识密钥生成以及管理的这一世界难题。少量的公私钥因子就可以生成无限个公私钥对,而且基于用户标识生成证书,从而不需要第三方的证明就可离线认证用户身份。CPK具有安全性高,密钥存储量下,灵活性好等优点,国内外专家予以了高度评价。然而CPK的创新发展一直都存在几个问题,共谋的隐患,密钥更换困难,用户密钥可能发生碰撞等等。

【发明内容】

[0003]本发明所要解决的技术问题是针对【背景技术】的不足提供了一种解决组合公钥CPK密钥碰撞问题的方法。
[0004]本发明为解决上述技术问题采用以下技术方案
一种解决组合公钥CPK密钥碰撞问题的方法,具体包含如下步骤:
步骤1.1,用户向KMC发出注册请求;
步骤1.2,KMC为用户生成初始公私钥对(PKo,sko),其中,PKo作为初始的组合公钥PK,即PK=PKo=sk*G,其中,G是椭圆曲线E ( Fp )上的基点;
步骤1.3,KMC将生成的初始组合公钥与组合公钥数据库里的已有组合公钥进行比对,检测是否重复;
步骤1.4,如果有重复,则随机分配△ X,得到公钥增量△ X,将公钥增量与初始公钥PK0相加,得到组合公钥PK,重复步骤1.3,直到生成的组合公钥与已有组合公钥不重复;
步骤1.5,将步骤1.4生成的用户的组合公钥记录到KMC的组合公钥数据库中;
步骤1.6,计算用户的组合私钥sk;
步骤1.7,向用户发放组合私钥,并删除KMC的中心私钥;
步骤2,用户进行相互认证访问过程,具体包含如下步骤:
步骤2.1,访问用户A向被访问用户B发出访问请求,报文中包含可验证访问用户A身份的信息;
步骤2.2,被访问用户B验证访问用户A身份的真实可靠性,当被访问用户B对访问用户A的身份认证通过时,被访问用户B向访问用户A发送可验证被访问用户B个人身份的信息;步骤2.3,当访问用户A验证被访问用户B的身份也通过时,访问用户A和被访问用户B进行可信的加密访问。
[0005]作为本发明一种解决组合公钥CPK密钥碰撞问题的方法的进一步优选方案,在步骤1.2中,KMC通过对用户标识的hash运算和行映射算法生成公私钥因子的选取序列,然后在公私钥矩阵中选取对应的元素,进行组合运算生成初始公私钥对。
[0006]作为本发明一种解决组合公钥CPK密钥碰撞问题的方法的进一步优选方案,在步骤1.4中,公钥增量的具体计算如下:A X=G* Δ X0
[0007]作为本发明一种解决组合公钥CPK密钥碰撞问题的方法的进一步优选方案,在步骤1.5中,组合私钥的具体计算如下:sk=sko+A χ0
[0008]作为本发明一种解决组合公钥CPK密钥碰撞问题的方法的进一步优选方案,在步骤1.7中,所述KMC的中心私钥包含组合私钥sk和初始私钥对sko。
[0009]本发明采用以上技术方案与现有技术相比,具有以下技术效果:
本发明在原组合公钥CPK算法,对用户标识的hash运算和行映射算法生成公私钥因子的选取序列,然后再在公私钥矩阵中选取对应的元素,进行组合生成公私钥对,这一流程的基础上,添加了两个改进点:用户向密钥管理中心KMC申请注册时,KMC对申请用户身份标识产生的公钥进行数据库去重,以生成不碰撞的用户组合密钥对;并且用户在进行相互访问时进行身份认证时采用两步验证法。该解决方案,在解决组合公钥密钥碰撞的同时,也兼顾了认证的规模化,验证的简便性,离线认证过程等特点。
【附图说明】
[0010]图1是用户向密钥管理中心KMC进行注册的流程图;
图2是用户之间进行相互的认证访问的流程图。
【具体实施方式】
[0011]下面结合附图对本发明的技术方案做进一步的详细说明:
CPK的标识密钥的生成,首先通过对用户标识的hash运算和行映射算法生成公私钥因子的选取序列,然后再在公私钥矩阵中选取对应的元素,进行组合生成公私钥对。公私钥矩阵中的对应位置的因子满足椭圆曲线离散对数难题ECDLP。用户密钥发生碰撞的原因有两个:映射坐标和选取的系数相同,这个是由hash运算所产生的,还有就是模加运算的结果相同。2007年欧洲密码年会对CPK的审阅报告认为hash的安全问题不应作为CPK的安全问题。模加运算结果相同的这一问题的解决方案也有很多,不过它们都无法避免密钥更新之后的密钥碰撞问题,因此从访问流程上入手,提出了新的密钥碰撞的解决方案:
如图1所示,一种解决组合公钥CPK密钥碰撞问题的方法,具体包含如下步骤:
步骤1.1,用户向KMC发出注册请求;
步骤1.2,KMC为用户生成初始公私钥对(PKo,sko),其中,PKo作为初始的组合公钥PK,即PK=PKo=sk*G,其中,G是椭圆曲线E ( Fp )上的基点;
步骤1.3,KMC将生成的初始组合公钥与组合公钥数据库里的已有组合公钥进行比对,检测是否重复;
步骤1.4,如果有重复,则随机分配△ X,得到公钥增量△ X,将公钥增量与初始公钥PK0相加,得到组合公钥PK,重复步骤1.3,直到生成的组合公钥与已有组合公钥不重复;
步骤1.5,将步骤1.4生成的用户的组合公钥记录到KMC的组合公钥数据库中;
步骤1.6,计算用户的组合私钥sk;
步骤1.7,向用户发放组合私钥,并删除KMC的中心私钥; 如图2所示,步骤2,用户进行相互认证访问过程,具体包含如下步骤:
步骤2.1,访问用户A向被访问用户B发出访问请求,报文中包含可验证访问用户A身份的信息;
步骤2.2,被访问用户B验证访问用户A身份的真实可靠性,当被访问用户B对访问用户A的身份认证通过时,被访问用户B向访问用户A发送可验证被访问用户B个人身份的信息;步骤2.3,当访问用户A验证被访问用户B的身份也通过时,访问用户A和被访问用户B进行可信的加密访问。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1