一種解決組合公鑰cpk密鑰碰撞問(wèn)題的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種組合公鑰CPK密鑰碰撞問(wèn)題的方法,尤其涉及一種解決組合公鑰CPK密鑰碰撞問(wèn)題的方法,屬于密碼學(xué)領(lǐng)域。
【背景技術(shù)】
[0002]組合公鑰體制(CPK)是由資深的密碼學(xué)專家南相浩于2003年正式提出,創(chuàng)造性的以種子密鑰為核心,將多種經(jīng)典的密碼算法加以組合,巧妙地解決了標(biāo)識(shí)密鑰生成以及管理的這一世界難題。少量的公私鑰因子就可以生成無(wú)限個(gè)公私鑰對(duì),而且基于用戶標(biāo)識(shí)生成證書(shū),從而不需要第三方的證明就可離線認(rèn)證用戶身份。CPK具有安全性高,密鑰存儲(chǔ)量下,靈活性好等優(yōu)點(diǎn),國(guó)內(nèi)外專家予以了高度評(píng)價(jià)。然而CPK的創(chuàng)新發(fā)展一直都存在幾個(gè)問(wèn)題,共謀的隱患,密鑰更換困難,用戶密鑰可能發(fā)生碰撞等等。
【發(fā)明內(nèi)容】
[0003]本發(fā)明所要解決的技術(shù)問(wèn)題是針對(duì)【背景技術(shù)】的不足提供了一種解決組合公鑰CPK密鑰碰撞問(wèn)題的方法。
[0004]本發(fā)明為解決上述技術(shù)問(wèn)題采用以下技術(shù)方案
一種解決組合公鑰CPK密鑰碰撞問(wèn)題的方法,具體包含如下步驟:
步驟1.1,用戶向KMC發(fā)出注冊(cè)請(qǐng)求;
步驟1.2,KMC為用戶生成初始公私鑰對(duì)(PKo,sko),其中,PKo作為初始的組合公鑰PK,即PK=PKo=sk*G,其中,G是橢圓曲線E ( Fp )上的基點(diǎn);
步驟1.3,KMC將生成的初始組合公鑰與組合公鑰數(shù)據(jù)庫(kù)里的已有組合公鑰進(jìn)行比對(duì),檢測(cè)是否重復(fù);
步驟1.4,如果有重復(fù),則隨機(jī)分配△ X,得到公鑰增量△ X,將公鑰增量與初始公鑰PK0相加,得到組合公鑰PK,重復(fù)步驟1.3,直到生成的組合公鑰與已有組合公鑰不重復(fù);
步驟1.5,將步驟1.4生成的用戶的組合公鑰記錄到KMC的組合公鑰數(shù)據(jù)庫(kù)中;
步驟1.6,計(jì)算用戶的組合私鑰sk;
步驟1.7,向用戶發(fā)放組合私鑰,并刪除KMC的中心私鑰;
步驟2,用戶進(jìn)行相互認(rèn)證訪問(wèn)過(guò)程,具體包含如下步驟:
步驟2.1,訪問(wèn)用戶A向被訪問(wèn)用戶B發(fā)出訪問(wèn)請(qǐng)求,報(bào)文中包含可驗(yàn)證訪問(wèn)用戶A身份的信息;
步驟2.2,被訪問(wèn)用戶B驗(yàn)證訪問(wèn)用戶A身份的真實(shí)可靠性,當(dāng)被訪問(wèn)用戶B對(duì)訪問(wèn)用戶A的身份認(rèn)證通過(guò)時(shí),被訪問(wèn)用戶B向訪問(wèn)用戶A發(fā)送可驗(yàn)證被訪問(wèn)用戶B個(gè)人身份的信息;步驟2.3,當(dāng)訪問(wèn)用戶A驗(yàn)證被訪問(wèn)用戶B的身份也通過(guò)時(shí),訪問(wèn)用戶A和被訪問(wèn)用戶B進(jìn)行可信的加密訪問(wèn)。
[0005]作為本發(fā)明一種解決組合公鑰CPK密鑰碰撞問(wèn)題的方法的進(jìn)一步優(yōu)選方案,在步驟1.2中,KMC通過(guò)對(duì)用戶標(biāo)識(shí)的hash運(yùn)算和行映射算法生成公私鑰因子的選取序列,然后在公私鑰矩陣中選取對(duì)應(yīng)的元素,進(jìn)行組合運(yùn)算生成初始公私鑰對(duì)。
[0006]作為本發(fā)明一種解決組合公鑰CPK密鑰碰撞問(wèn)題的方法的進(jìn)一步優(yōu)選方案,在步驟1.4中,公鑰增量的具體計(jì)算如下:A X=G* Δ X0
[0007]作為本發(fā)明一種解決組合公鑰CPK密鑰碰撞問(wèn)題的方法的進(jìn)一步優(yōu)選方案,在步驟1.5中,組合私鑰的具體計(jì)算如下:sk=sko+A χ0
[0008]作為本發(fā)明一種解決組合公鑰CPK密鑰碰撞問(wèn)題的方法的進(jìn)一步優(yōu)選方案,在步驟1.7中,所述KMC的中心私鑰包含組合私鑰sk和初始私鑰對(duì)sko。
[0009]本發(fā)明采用以上技術(shù)方案與現(xiàn)有技術(shù)相比,具有以下技術(shù)效果:
本發(fā)明在原組合公鑰CPK算法,對(duì)用戶標(biāo)識(shí)的hash運(yùn)算和行映射算法生成公私鑰因子的選取序列,然后再在公私鑰矩陣中選取對(duì)應(yīng)的元素,進(jìn)行組合生成公私鑰對(duì),這一流程的基礎(chǔ)上,添加了兩個(gè)改進(jìn)點(diǎn):用戶向密鑰管理中心KMC申請(qǐng)注冊(cè)時(shí),KMC對(duì)申請(qǐng)用戶身份標(biāo)識(shí)產(chǎn)生的公鑰進(jìn)行數(shù)據(jù)庫(kù)去重,以生成不碰撞的用戶組合密鑰對(duì);并且用戶在進(jìn)行相互訪問(wèn)時(shí)進(jìn)行身份認(rèn)證時(shí)采用兩步驗(yàn)證法。該解決方案,在解決組合公鑰密鑰碰撞的同時(shí),也兼顧了認(rèn)證的規(guī)?;?,驗(yàn)證的簡(jiǎn)便性,離線認(rèn)證過(guò)程等特點(diǎn)。
【附圖說(shuō)明】
[0010]圖1是用戶向密鑰管理中心KMC進(jìn)行注冊(cè)的流程圖;
圖2是用戶之間進(jìn)行相互的認(rèn)證訪問(wèn)的流程圖。
【具體實(shí)施方式】
[0011]下面結(jié)合附圖對(duì)本發(fā)明的技術(shù)方案做進(jìn)一步的詳細(xì)說(shuō)明:
CPK的標(biāo)識(shí)密鑰的生成,首先通過(guò)對(duì)用戶標(biāo)識(shí)的hash運(yùn)算和行映射算法生成公私鑰因子的選取序列,然后再在公私鑰矩陣中選取對(duì)應(yīng)的元素,進(jìn)行組合生成公私鑰對(duì)。公私鑰矩陣中的對(duì)應(yīng)位置的因子滿足橢圓曲線離散對(duì)數(shù)難題ECDLP。用戶密鑰發(fā)生碰撞的原因有兩個(gè):映射坐標(biāo)和選取的系數(shù)相同,這個(gè)是由hash運(yùn)算所產(chǎn)生的,還有就是模加運(yùn)算的結(jié)果相同。2007年歐洲密碼年會(huì)對(duì)CPK的審閱報(bào)告認(rèn)為hash的安全問(wèn)題不應(yīng)作為CPK的安全問(wèn)題。模加運(yùn)算結(jié)果相同的這一問(wèn)題的解決方案也有很多,不過(guò)它們都無(wú)法避免密鑰更新之后的密鑰碰撞問(wèn)題,因此從訪問(wèn)流程上入手,提出了新的密鑰碰撞的解決方案:
如圖1所示,一種解決組合公鑰CPK密鑰碰撞問(wèn)題的方法,具體包含如下步驟:
步驟1.1,用戶向KMC發(fā)出注冊(cè)請(qǐng)求;
步驟1.2,KMC為用戶生成初始公私鑰對(duì)(PKo,sko),其中,PKo作為初始的組合公鑰PK,即PK=PKo=sk*G,其中,G是橢圓曲線E ( Fp )上的基點(diǎn);
步驟1.3,KMC將生成的初始組合公鑰與組合公鑰數(shù)據(jù)庫(kù)里的已有組合公鑰進(jìn)行比對(duì),檢測(cè)是否重復(fù);
步驟1.4,如果有重復(fù),則隨機(jī)分配△ X,得到公鑰增量△ X,將公鑰增量與初始公鑰PK0相加,得到組合公鑰PK,重復(fù)步驟1.3,直到生成的組合公鑰與已有組合公鑰不重復(fù);
步驟1.5,將步驟1.4生成的用戶的組合公鑰記錄到KMC的組合公鑰數(shù)據(jù)庫(kù)中;
步驟1.6,計(jì)算用戶的組合私鑰sk;
步驟1.7,向用戶發(fā)放組合私鑰,并刪除KMC的中心私鑰; 如圖2所示,步驟2,用戶進(jìn)行相互認(rèn)證訪問(wèn)過(guò)程,具體包含如下步驟:
步驟2.1,訪問(wèn)用戶A向被訪問(wèn)用戶B發(fā)出訪問(wèn)請(qǐng)求,報(bào)文中包含可驗(yàn)證訪問(wèn)用戶A身份的信息;
步驟2.2,被訪問(wèn)用戶B驗(yàn)證訪問(wèn)用戶A身份的真實(shí)可靠性,當(dāng)被訪問(wèn)用戶B對(duì)訪問(wèn)用戶A的身份認(rèn)證通過(guò)時(shí),被訪問(wèn)用戶B向訪問(wèn)用戶A發(fā)送可驗(yàn)證被訪問(wèn)用戶B個(gè)人身份的信息;步驟2.3,當(dāng)訪問(wèn)用戶A驗(yàn)證被訪問(wèn)用戶B的身份也通過(guò)時(shí),訪問(wèn)用戶A和被訪問(wèn)用戶B進(jìn)行可信的加密訪問(wèn)。