淺談無(wú)證書公鑰密碼

Shookin
公鑰密碼必須解決好一個(gè)基本問(wèn)題,那就是如何保證用戶公鑰的真實(shí)性和有效性。傳統(tǒng)公鑰密碼的解決方法是使用證書。CA為用戶簽發(fā)公鑰證書,用以保證系統(tǒng)中用戶公鑰的真實(shí)性和有效性。使用公鑰時(shí)先驗(yàn)證公鑰證書的有效性,再用公鑰驗(yàn)證簽名或者加密數(shù)據(jù)。公鑰證書較好地解決了公鑰的真實(shí)性和有效性問(wèn)題,但公鑰證書庫(kù)的管理和維護(hù)需要巨大的計(jì)算、通信和存儲(chǔ)代價(jià)。

01

概述

公鑰密碼必須解決好一個(gè)基本問(wèn)題,那就是如何保證用戶公鑰的真實(shí)性和有效性。傳統(tǒng)公鑰密碼的解決方法是使用證書。CA為用戶簽發(fā)公鑰證書,用以保證系統(tǒng)中用戶公鑰的真實(shí)性和有效性。使用公鑰時(shí)先驗(yàn)證公鑰證書的有效性,再用公鑰驗(yàn)證簽名或者加密數(shù)據(jù)。公鑰證書較好地解決了公鑰的真實(shí)性和有效性問(wèn)題,但公鑰證書庫(kù)的管理和維護(hù)需要巨大的計(jì)算、通信和存儲(chǔ)代價(jià)。

1984年,基于身份的公鑰密碼IBC問(wèn)世,它以另外一種方式解決公鑰的真實(shí)性問(wèn)題,避免了傳統(tǒng)公鑰密碼中對(duì)證書的使用和驗(yàn)證過(guò)程。國(guó)家密碼管理局于2016年發(fā)布了IBC密碼行業(yè)標(biāo)準(zhǔn)算法SM9。在IBC公鑰密碼中,用戶的公鑰是一些公開(kāi)的、可以唯一確定用戶身份的標(biāo)識(shí)信息。在實(shí)際應(yīng)用中,用戶的身份信息可以是姓名+通信地址、手機(jī)號(hào)碼、身份證號(hào)碼或E-Mail 地址等。在使用IBC進(jìn)行加密和認(rèn)證時(shí),由于我們已經(jīng)知道對(duì)方的公開(kāi)身份信息,所以就不需要在數(shù)據(jù)庫(kù)中查找用戶的公鑰,也不需要對(duì)公鑰的真實(shí)性進(jìn)行檢驗(yàn)。因此,IBC無(wú)須公鑰證書的存在。IBC中用戶的私鑰由密鑰生成中心KGC產(chǎn)生,因此,這樣的密碼系統(tǒng)存在私鑰托管問(wèn)題。當(dāng)前,一些學(xué)者對(duì)如何解決IBC私鑰托管問(wèn)題做了一些探索性研究。

2003年誕生的無(wú)證書公鑰密碼(certificateless public key cryptography,CL-PKC)克服了IBC中的私鑰托管問(wèn)題。與傳統(tǒng)公鑰密碼相比,CL-PKC和IBC一樣不需要證書,同時(shí),CL-PKC消除了IBC的私鑰托管問(wèn)題。在CL-PKC密碼體制中, KGC為用戶產(chǎn)生一個(gè)部分私鑰, 用戶選取一個(gè)秘密值,并與部分私鑰結(jié)合生成用戶私鑰,用戶私鑰由KGC和用戶聯(lián)合產(chǎn)生。KGC 不知道用戶的完整私鑰,從而避免了密鑰托管問(wèn)題。

近年來(lái),CL-PKC一直是密碼學(xué)領(lǐng)域突出的研究熱點(diǎn)之一,伴隨著CL-PKC的不斷發(fā)展,各式各樣的CL-PKC方案也被研究出來(lái),不少學(xué)者提出了關(guān)于無(wú)證書簽名、無(wú)證書加密、無(wú)證書密鑰協(xié)商、無(wú)證書身份認(rèn)證等諸多方案,其方案實(shí)現(xiàn)大體上可分為使用雙線性對(duì)和不使用雙線性對(duì)兩大類。另外,無(wú)證書簽密也是研究熱點(diǎn)之一,它將簽名與加密相結(jié)合,形成無(wú)證書簽密方案以及無(wú)證書聚合簽密方案。也有學(xué)者將盲簽名技術(shù)和CL-PKC相結(jié)合,提出了無(wú)證書盲簽名方案、無(wú)證書盲簽密方案等。

CL-PKC是繼傳統(tǒng)公鑰密碼、IBC公鑰密碼之后發(fā)展起來(lái)的,從目前公鑰密碼應(yīng)用來(lái)看,似乎仍然是傳統(tǒng)公鑰密碼占據(jù)著主導(dǎo)地位,但是隨著物聯(lián)網(wǎng)、5G等新興技術(shù)的發(fā)展,無(wú)證書公鑰密碼的應(yīng)用日益擴(kuò)大,成為物聯(lián)網(wǎng)密碼應(yīng)用的潛在解決方案。

02

一種基于SM2的無(wú)證書簽名方案實(shí)例

(1). 系統(tǒng)參數(shù)生成

選擇SM2系統(tǒng)參數(shù)作為該無(wú)證書密碼系統(tǒng)的一部分參數(shù),此外,KGC產(chǎn)生隨機(jī)數(shù)s作為系統(tǒng)主私鑰,作為系統(tǒng)主公鑰。設(shè)置摘要函數(shù)H為SM3。

(2). 用戶密鑰生成

假設(shè)簽名用戶標(biāo)識(shí)為id,KGC 選取隨機(jī)數(shù)rid,計(jì)算Rid = ridG 和部分私鑰Did = rid + s*H( id,Rid) ,KGC 將Did和Rid安全地傳送給用戶。用戶驗(yàn)證Did G = Rid + Ppub*H( id,Rid) 是否成立,若成立,則判定Did是有效的部分私鑰,否則,判定Did無(wú)效。用戶隨機(jī)選擇秘密值xid,并計(jì)算Xid = xidG,用戶私鑰SKid = ( Did,xid) ,用戶公鑰為PKid = (Rid,Xid)并予以公布。

(3). 簽名

對(duì)消息m的簽名過(guò)程是:選取隨機(jī)數(shù)t,計(jì)算T=tG;計(jì)算 h=H(id,Rid),v=H(m,T,Rid,Xid);計(jì)算u=t+xid*(h+v)+Did,生成簽名值σ=(u,v)。

(4). 驗(yàn)證簽名

計(jì)算h=H(id,Rid),T’=uG-Xid*(h+v)-Rid-Ppub*h,v’=H(m,T’,Rid,Xid)。若v=v’,則簽名有效,否則簽名無(wú)效。

本文作者:北京海泰方圓科技股份有限公司總工辦 Shookin

THEEND

最新評(píng)論(評(píng)論僅代表用戶觀點(diǎn))

更多
暫無(wú)評(píng)論