一種基于標(biāo)識的橢圓曲線密碼系統(tǒng)的制作方法
【專利摘要】本發(fā)明涉及一種基于標(biāo)識的橢圓曲線密碼系統(tǒng),所述系統(tǒng)包括偽公鑰、偽數(shù)字證書、ECC密鑰生成系統(tǒng)、偽數(shù)字證書簽發(fā)系統(tǒng)、偽數(shù)字證書簽發(fā)客戶端、密碼模塊、密碼應(yīng)用程序。所述密碼系統(tǒng)通過將對應(yīng)一個(gè)身份標(biāo)識的偽公鑰與密碼模塊中對應(yīng)同一身份標(biāo)識的ECC公鑰組和ECC私鑰組相對應(yīng),從而將使用偽公鑰的密碼運(yùn)算自動(dòng)轉(zhuǎn)化成使用對應(yīng)ECC公鑰組中相應(yīng)公鑰的運(yùn)算;將使用偽公鑰對應(yīng)私鑰的密碼運(yùn)算自動(dòng)轉(zhuǎn)化成使用對應(yīng)ECC私鑰組中對應(yīng)私鑰的運(yùn)算;且在沒有對應(yīng)ECC公鑰或私鑰時(shí),由密碼模塊自動(dòng)獲取對應(yīng)的ECC公鑰或私鑰。本發(fā)明的系統(tǒng)具有IBC的部分特點(diǎn),但密碼算法比IBC簡單,且易于得到客戶端密碼硬件的支持,并能減少密鑰更新過程中用戶的干預(yù)。
【專利說明】—種基于標(biāo)識的橢圓曲線密碼系統(tǒng)【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于信息安全【技術(shù)領(lǐng)域】,是一種具有IBCXIdentity Based Cryptography)部分特點(diǎn)的基于標(biāo)識的的橢圓曲線密碼系統(tǒng)。
【背景技術(shù)】
[0002]在非對稱密鑰密碼體制(Asymmetric Key Cryptography)中,采用兩個(gè)不同但相互關(guān)聯(lián)的密鑰(密鑰對),其中一個(gè)可公開,稱為公鑰(Public Key),用于數(shù)據(jù)加密或簽名驗(yàn)證,另一不公開,稱為私鑰(Private Key),用于數(shù)據(jù)解密或數(shù)字簽名,私鑰須由密鑰對的擁有者安全保管。由于一個(gè)密鑰可公開,因此,非對稱密鑰密碼體制又稱為公開密鑰密碼體制(Public Key Cryptography),其中的密鑰對又稱為公開密鑰對。相應(yīng)地,非對稱密鑰密碼體制中的密碼算法稱為非對稱密鑰密碼算法或公開密鑰密碼算法。目前獲得廣泛應(yīng)用的公開密鑰密碼算法包括以三個(gè)發(fā)明人Rivest, Shamir和Adleman命名的RSA算法,以及DSA(Digital Signature Algorithm)算法等;而 ECC (Elliptic CurveCryptography)捕圓曲線密碼算法也是最近幾年獲得重視并逐步獲得應(yīng)用的公開密鑰密碼算法。
[0003]相對于數(shù)據(jù)加密方和解密方使用同一個(gè)密鑰的對稱密鑰密碼體制,公開密鑰密碼算法具有密鑰分發(fā)容易(公鑰可公開發(fā)布)的優(yōu)點(diǎn),但其也存在算法實(shí)現(xiàn)較復(fù)雜、運(yùn)算速度較慢的缺點(diǎn)。故此,在數(shù)據(jù)加密應(yīng)用中,通常將二者結(jié)合起來使用:使用隨機(jī)生成的對稱密鑰和對稱密鑰密碼算法對數(shù)據(jù)加密,然后使用數(shù)據(jù)解密方的公鑰、應(yīng)用公開密鑰密碼算法對隨機(jī)產(chǎn)生的對稱密鑰加密,之后將加密的數(shù)據(jù)和對稱密鑰一起傳遞給數(shù)據(jù)解密方;數(shù)據(jù)解密方接收到加密后的數(shù)據(jù)和對稱密鑰后,先用自己的私鑰解密加密的對稱密鑰,然后用解密后的對稱密鑰解密數(shù)據(jù)。
[0004]在公開密鑰密碼體制中,一方要向另一方發(fā)送加密數(shù)據(jù),必須事先獲得對方的公鑰,因此,公鑰的擁有者(即加密數(shù)據(jù)的接收者)需通過一定的安全途徑發(fā)布其公鑰(防止攻擊者假冒他人發(fā)布公鑰),以使得其他人(或?qū)嶓w)能夠使用其公鑰向其發(fā)送加密數(shù)據(jù)。為了解決這一問題,人們提出了公開密鑰基礎(chǔ)設(shè)施(Public Key Infrastructure, PKI)安全技術(shù)體系。在PKI體系中,由一個(gè)數(shù)字證書認(rèn)證中心(Certification Authority,CA)作為可信的第三方簽發(fā)數(shù)字證書(Digital Certificate)來進(jìn)行用戶(實(shí)體)公鑰的發(fā)布(如通過LDAP 目錄服務(wù),Lightweight Directory Access Protocol)。CA簽發(fā)的數(shù)字證書除了包含證書持有人的公鑰外,還包含有證書持有人的其他身份信息,如姓名、所屬組織、電子郵件地址等。這樣,在PKI體系中,一方要向另一方發(fā)送加密數(shù)據(jù),發(fā)送者需先通過一定的途徑,如從CA的公開證書目錄服務(wù)(LDAP),獲取接收者的(加密)數(shù)字證書,然后從數(shù)字證書中提取接收者的公鑰。
`[0005]在PKI體系中,要發(fā)送加密數(shù)據(jù),必須事先獲取接收方的(加密)數(shù)字證書,這對于許多普通用戶來說不是一件容易的事,這也是PKI技術(shù)體系在實(shí)際應(yīng)用中存在的一個(gè)比較突出的問題,為了解決這一問題,人們提出了基于身份標(biāo)識的密碼體制(Identity BasedCryptography, IBC)(也稱基于標(biāo)識的密碼體制)。在IBC中,一個(gè)實(shí)體(如人)的一個(gè)身份標(biāo)識就構(gòu)成了一個(gè)公鑰(IBC公鑰),用于數(shù)據(jù)加密或簽名驗(yàn)證,并對應(yīng)一個(gè)私鑰(IBC私鑰),用于數(shù)據(jù)解密或數(shù)字簽名。身份標(biāo)識對應(yīng)的私鑰是由一個(gè)稱為私鑰生成器(Private KeyGenerator, PKG)的一個(gè)IBE密鑰服務(wù)器產(chǎn)生的。嚴(yán)格地說,IBC公鑰是由一個(gè)身份標(biāo)識和一組IBC公開參數(shù)所組成,而IBC私鑰是由一個(gè)身份標(biāo)識對應(yīng)的私密數(shù)據(jù)和一組IBC公開參數(shù)所組成。IBC用于數(shù)據(jù)加密稱為IBE (Identity Based Cryptography,基于身份標(biāo)識的加密);IBC用于數(shù)字簽名稱為IBS (Identity Based Signature)。但是,有時(shí)候人們把IBE與IBC等同(IBE同時(shí)包括加密與簽名,因?yàn)楹灻⒑灻?yàn)證同樣可看作一種加密、解密運(yùn)算)。
[0006]使用IBC進(jìn)行數(shù)據(jù)加密時(shí),數(shù)據(jù)加密方無需事先獲得數(shù)據(jù)解密方的數(shù)字證書或公鑰,只需事先知道唯一標(biāo)識對方身份的一個(gè)標(biāo)識(如身份證號、電子郵件地址等),然后基于這個(gè)身份識別結(jié)合一組公開參數(shù)就可以進(jìn)行數(shù)據(jù)加密(通常是先用隨機(jī)產(chǎn)生的對稱密鑰加密數(shù)據(jù),然后用IBE公鑰加密隨機(jī)產(chǎn)生的對稱密鑰)。由于無需事先獲得數(shù)據(jù)解密方的數(shù)字證書或公鑰,這就大大提供了數(shù)據(jù)加密的易用性、方便性。進(jìn)一步,除了易用性外,與PKI/CA相比,IBC具有如下有點(diǎn):
[0007]I)密鑰管理與服務(wù)系統(tǒng)要簡單很多,只需一個(gè)用戶和標(biāo)識管理系統(tǒng)加上一個(gè)PKG即可;
[0008]2)由于用戶的IBC私鑰是由PKG動(dòng)態(tài)計(jì)算出來的,在用戶私鑰丟失時(shí)可方便地為用戶(在線)恢復(fù)私鑰,不像PKI/CA需要一個(gè)復(fù)雜的KMC (Key Management Center)系統(tǒng)為所有用戶生成、保存并恢復(fù)加密數(shù)字證書的私鑰(密鑰對),其中保存大量的用戶私鑰增加了系統(tǒng)的復(fù)雜性,以及增加了對系統(tǒng)安全性、可靠性的要求。
[0009]IBC還可以與各種身份標(biāo)識或密鑰限定策略結(jié)合使用,形成各種基于策略(PolicyBased)的數(shù)據(jù)加密(或簽名),其中最常用的是將一個(gè)身份標(biāo)識與一個(gè)時(shí)間段限定策略結(jié)合(時(shí)間策略),形成一個(gè)如下所示的擴(kuò)展身份標(biāo)識:
[0010]〈身份標(biāo)識>I〈時(shí)間段〉,
[0011]這里,< 身份標(biāo)識 > 指身份標(biāo)識對應(yīng)的字串,< 時(shí)間段 > 指相應(yīng)時(shí)間段信息的字串(如用2013-8-28:2013-9-28,表示時(shí)間段2013年8月28日到2013年9月28,但這種表示不是唯一的,可根據(jù)需要約定),“ I I”表示身份標(biāo)識字串和時(shí)間段字串的組合(可以是簡單的字串連接、合并,或者其他約定的組合方式,只要能唯一區(qū)分、表示擴(kuò)展身份標(biāo)識即可),時(shí)間段既可以是一個(gè)時(shí)間區(qū)間,也可以是一個(gè)時(shí)刻(起止時(shí)間相同)。擴(kuò)展身份標(biāo)識被當(dāng)作一個(gè)通常的身份標(biāo)識對應(yīng)有一個(gè)IBC私鑰,并用于密碼運(yùn)算。增加了時(shí)間段的擴(kuò)展身份標(biāo)識及其對應(yīng)的私鑰僅在一段時(shí)間內(nèi)使用,這相當(dāng)于用時(shí)間段對身份標(biāo)識及其私鑰的使用進(jìn)行了限定(限定身份標(biāo)識和/或其私鑰僅在對應(yīng)的時(shí)間段使用和有效)。通過時(shí)間段限定的擴(kuò)展身份標(biāo)識所對應(yīng)的私鑰一旦被泄露,則僅會(huì)對相應(yīng)時(shí)間段內(nèi)的密碼數(shù)據(jù)造成影響。時(shí)間段的長短可根據(jù)安全要求結(jié)合使用方便性綜合考慮,如可以按年、月、周、日更新。
[0012]除了采用時(shí)間段對身份標(biāo)識的使用進(jìn)行限定外,還可以增加其他的限定策略對標(biāo)識的使用加以限定,如,
[0013]<身份標(biāo)識> 11〈角色> 11〈時(shí)間段>,
[0014]這里,〈角色 > 是角色的字串表示,即限定只有擁有對應(yīng)角色的用戶才能使用擴(kuò)展身份標(biāo)識對應(yīng)的私鑰對加密數(shù)據(jù)進(jìn)行解密,或者對數(shù)據(jù)進(jìn)行數(shù)字簽名。[0015]需指出的是,在IBC的實(shí)際密碼運(yùn)算中,并不是使用身份標(biāo)識字串本身參與運(yùn)算,而是使用身份標(biāo)識的散列值=HASH (〈身份標(biāo)識 >),這里HASH (…)表示散列值計(jì)算。
[0016]加了限定策略后,參與密碼運(yùn)算的是擴(kuò)展身份標(biāo)識,這時(shí),參與運(yùn)算的散列值有兩種計(jì)算方式,一是采用如下的先拼接擴(kuò)展身份標(biāo)識,再計(jì)算散列值的方式:
[0017]HASH (<身份標(biāo)識> I I〈時(shí)間段 >),或者,
[0018]HASH (<身份標(biāo)識> I I〈角色> I I〈時(shí)間段? ;
[0019]二是采用如下先計(jì)算散列值,然后拼接,再計(jì)算散列值的方式:
[0020]HASH (HASH (< 身份標(biāo)識 >)| HASH (< 時(shí)間段 >)),或者,
[0021]HASH (HASH (〈身份標(biāo)識 >)I HASH (〈角色 >)| HASH (〈時(shí)間段 >))。
[0022]IBC有很多獨(dú)特的優(yōu)點(diǎn),其中最突出的是改善用戶公鑰數(shù)據(jù)加密的易用性、方便性,但I(xiàn)BC應(yīng)用也存在一定的問題,具體如下:
[0023]I)目前缺少統(tǒng)一的 密碼算法國際標(biāo)準(zhǔn),導(dǎo)致缺少統(tǒng)一的IBC密碼產(chǎn)品認(rèn)證標(biāo)準(zhǔn),這樣妨礙了密碼設(shè)備的研制生產(chǎn)、銷售和使用;
[0024]2)沒有應(yīng)用層的統(tǒng)一的標(biāo)準(zhǔn)(國際或工業(yè)標(biāo)準(zhǔn)),導(dǎo)致缺少應(yīng)用支持,目前幾乎所有的主流標(biāo)準(zhǔn)應(yīng)用都不支持IBC ;
[0025]3)由于相對普通的公開密鑰密碼算法,IBC的密碼運(yùn)算多了復(fù)雜的配對運(yùn)算,密碼運(yùn)算量比較大,若在密碼硬件中進(jìn)行密碼運(yùn)算,則對密碼硬件的要求比較高,因此,目前還沒有像RSA、ECC那樣的進(jìn)行客戶端密碼運(yùn)算的合適的客戶端密碼硬件(如USB Key),目前的IBC USB Key基本上是不進(jìn)行密碼運(yùn)算的密鑰存儲(chǔ)Key。
[0026]ECC (Elliptic Curve Cryptography)橢圓曲線密碼算法是最近幾年獲得重視并逐步獲得應(yīng)用的公開密鑰密碼算法,與目前仍然廣泛使用的RSA密碼算法相比,ECC具有密鑰長度短、運(yùn)算量小等特點(diǎn),已有相應(yīng)的國際、國家、工業(yè)標(biāo)準(zhǔn)以及相應(yīng)密碼產(chǎn)品認(rèn)證規(guī)范,以及客戶端密碼硬件(如支持ECC的USB KeyXECC密碼算法是基于有限域(finite field)上的橢圓曲線的點(diǎn)所構(gòu)成的加法群(Group)來實(shí)現(xiàn)密碼運(yùn)算。在ECC中,首先選定一條橢圓曲線,包括曲線格式、域(field)和曲線系數(shù),并選定橢圓曲線上的一個(gè)稱為基點(diǎn)(basepoint)的公共點(diǎn)計(jì)算G,選定的橢圓曲線的格式、域、系數(shù)以及基點(diǎn)G構(gòu)成了 ECC的系統(tǒng)參數(shù)(System Parameters), ECC系統(tǒng)參數(shù)是可公開的(也稱為ECC公開參數(shù));在選定了 ECC系統(tǒng)參數(shù)后,一個(gè)用戶ECC私鑰是一個(gè)隨機(jī)生成的整數(shù)d,其中d小于G的階(Order) (G的階是一個(gè)大素?cái)?shù));d對應(yīng)的公鑰是P=dG,其中dG是橢圓曲線上的點(diǎn)構(gòu)成的加法群(group)中的倍乘(即d個(gè)G的累加和);(d,P)即構(gòu)成了用戶的ECC密鑰對。
[0027]實(shí)際上,在ECC密碼體制中,也可以通過將一個(gè)擴(kuò)展身份標(biāo)識與一個(gè)ECC私鑰或密鑰對相對應(yīng),使之具有IBC的部分性質(zhì),有關(guān)方案如下:
[0028]由一個(gè)密鑰生成系統(tǒng)通過一個(gè)秘密的種子數(shù)據(jù)(如隨機(jī)字串)與一個(gè)擴(kuò)展身份標(biāo)識通過運(yùn)算(如合并后的散列運(yùn)算)得到一個(gè)ECC私鑰,并進(jìn)而得到一個(gè)擴(kuò)展身份標(biāo)識對應(yīng)的ECC公鑰或密鑰對;擴(kuò)展身份標(biāo)識中的限定策略用于限定ECC私鑰的生成、使用;
[0029]一個(gè)身份標(biāo)識的擁有者可從密鑰生成系統(tǒng)獲取其擴(kuò)展身份標(biāo)識對應(yīng)的ECC私鑰或密鑰對;一個(gè)ECC公鑰的信賴方,可從密鑰生成系統(tǒng)獲取其他個(gè)用戶擴(kuò)展身份標(biāo)識對應(yīng)的ECC公鑰。
[0030]本發(fā)明的基于標(biāo)識的橢圓曲線密碼系統(tǒng)是在以上方案的基礎(chǔ)上實(shí)現(xiàn)的。
【發(fā)明內(nèi)容】
[0031]本發(fā)明的目的是主要針對企業(yè)、機(jī)構(gòu)內(nèi)部的應(yīng)用,提出一種采用ECC橢圓曲線密碼算法,具有IBC密碼系統(tǒng)的部分特點(diǎn),包括將一個(gè)ECC密鑰對與一個(gè)(擴(kuò)展)身份標(biāo)識相對應(yīng),通過限定策略限定對應(yīng)ECC密鑰對的使用,由密碼服務(wù)系統(tǒng)根據(jù)用戶(擴(kuò)展)身份標(biāo)識計(jì)算生成或恢復(fù)對應(yīng)的ECC私鑰或密鑰對,以及無需集中存儲(chǔ)用戶私鑰等特點(diǎn)的基于標(biāo)識的橢圓曲線密碼系統(tǒng)。
[0032]為了實(shí)現(xiàn)上述目的,本發(fā)明所采用的技術(shù)方案是:
[0033]一種基于標(biāo)識的橢圓曲線密碼系統(tǒng),所述密碼系統(tǒng)包括如下組件或數(shù)據(jù):
[0034]偽公鑰:一種公鑰數(shù)據(jù)結(jié)構(gòu),存放的不是數(shù)據(jù)結(jié)構(gòu)標(biāo)識的或約定的公開密鑰密碼算法的公鑰數(shù)據(jù),而是身份標(biāo)識信息及ECC系統(tǒng)參數(shù)信息;所述身份標(biāo)識信息指身份標(biāo)識字串本身或其散列值,所述ECC系統(tǒng)參數(shù)信息包括ECC密碼運(yùn)算所采用的橢圓曲線格式、域、系數(shù)及基點(diǎn)的指示信息(如通過一個(gè)URL或版本號指示),即ECC系統(tǒng)參數(shù)的指示信息;一個(gè)所述偽公鑰對應(yīng)一個(gè)身份標(biāo)識及其所有擴(kuò)展身份標(biāo)識;(比如一個(gè)公鑰數(shù)據(jù)結(jié)構(gòu)原本標(biāo)識或約定是用來存放RSA或ECC公鑰數(shù)據(jù)的,但實(shí)際上存放的不是RSA或ECC公鑰的密鑰數(shù)據(jù),而是身份標(biāo)識信息及ECC系統(tǒng)參數(shù)信息)
[0035]偽數(shù)字證書:一種X509格式的數(shù)字證書,數(shù)字證書上的證書持有者(主題名對應(yīng)的實(shí)體)的公鑰不是數(shù)字證書上所指示的公開密鑰密碼算法(如RSA或ECC)的公鑰,而是證書持有者的身份標(biāo)識所對應(yīng)的偽公鑰;一張偽數(shù)字證書及其偽公鑰與證書持有者的身份標(biāo)識及其所有擴(kuò)展的身份標(biāo)識相對應(yīng);所述偽數(shù)字證書的有效期長度及起始、終止時(shí)間的設(shè)定沒有限定要求,只要超過偽數(shù)字證書所對應(yīng)的身份標(biāo)識的所有擴(kuò)展身份標(biāo)識所對應(yīng)的ECC私鑰或密鑰對的使用期限即可(通常將有效期設(shè)置得很長,如50年,而將起始、終止時(shí)間固定);
[0036]ECC密鑰生成系統(tǒng):通過計(jì)算得到一個(gè)擴(kuò)展身份標(biāo)識對應(yīng)的ECC公鑰、ECC私鑰或ECC密鑰對的系統(tǒng);所述ECC密鑰生成系統(tǒng)設(shè)置有隨機(jī)生成的用于ECC私鑰生成計(jì)算的種子數(shù)據(jù);
[0037]偽數(shù)字證書簽發(fā)系統(tǒng):生成并簽發(fā)一個(gè)身份標(biāo)識所對應(yīng)的偽數(shù)字證書的系統(tǒng);
[0038]偽數(shù)字證書簽發(fā)客戶端:供用戶使用,用于從偽數(shù)字證書簽發(fā)系統(tǒng)獲取用戶身份標(biāo)識所對應(yīng)的偽數(shù)字證書的用戶端軟件程序;
[0039]密碼模塊:提供密鑰操作與密碼運(yùn)算功能的軟件組件或軟硬件組合,所述密鑰操作包括密鑰生成、導(dǎo)入、導(dǎo)出和刪除,所述密碼運(yùn)算包括加密和解密,簽名和簽名驗(yàn)證;所述密碼模塊通過密碼接口對外提供密鑰操作與密碼運(yùn)算功能的調(diào)用;
[0040]密碼應(yīng)用程序:調(diào)用密碼模塊進(jìn)行密鑰操作(包括公鑰、私鑰或密鑰對的密鑰操作),包括生成、導(dǎo)出、導(dǎo)入和刪除,以及調(diào)用密碼模塊使用公鑰或私鑰進(jìn)行加密或解密,簽名驗(yàn)證或數(shù)字簽名密碼運(yùn)算的軟件程序;
[0041]所述密碼模塊在存儲(chǔ)介質(zhì)中為用戶或密碼應(yīng)用程序使用的每一個(gè)身份標(biāo)識維護(hù)一個(gè)存放ECC公鑰組的密鑰對象,稱為ECC公鑰組密鑰對象;所述ECC公鑰組密鑰對象的ECC公鑰組中存放有一系列由同一個(gè)身份標(biāo)識的擴(kuò)展身份標(biāo)識所生成的ECC公鑰;一個(gè)所述ECC公鑰組及其密鑰對象與一個(gè)對應(yīng)相同身份標(biāo)識的偽公鑰和偽數(shù)字證書相對應(yīng);所述ECC公鑰組密鑰對象作為一個(gè)密鑰對象用一個(gè)密鑰對象標(biāo)識符(Key Object Identifier)標(biāo)識;
[0042]當(dāng)所述密碼模塊在存儲(chǔ)介質(zhì)中創(chuàng)建一個(gè)偽公鑰的密鑰對象時(shí),將所創(chuàng)建的偽公鑰密鑰對象關(guān)聯(lián)到對應(yīng)的具有相同身份標(biāo)識的ECC公鑰組的密鑰對象;密碼應(yīng)用程序通過使用偽公鑰的密鑰對象使用偽公鑰對應(yīng)的ECC公鑰組密鑰對象的ECC公鑰組中的ECC公鑰進(jìn)行密碼運(yùn)算,包括數(shù)據(jù)加密和簽名驗(yàn)證;所述密碼模塊所創(chuàng)建的偽公鑰的密鑰對象稱為偽公鑰密鑰對象;
[0043]所述密碼模塊在存儲(chǔ)介質(zhì)中為用戶或密碼應(yīng)用程序使用的每一個(gè)身份標(biāo)識維護(hù)一個(gè)存放ECC私鑰組或密鑰對組的密鑰對象,稱為ECC私鑰組或密鑰對組密鑰對象;所述ECC私鑰組或密鑰對組密鑰對象的ECC私鑰組或密鑰對組中存放有一系列由同一個(gè)身份標(biāo)識的一個(gè)擴(kuò)展身份標(biāo)識所生成的ECC私鑰或公鑰對;一個(gè)所述ECC私鑰組或密鑰對組及其密鑰對象與一個(gè)對應(yīng)相同身份標(biāo)識的偽公鑰和偽數(shù)字證書相對應(yīng);一個(gè)所述ECC私鑰組或密鑰對組密鑰對象作為一個(gè)密鑰對象用一個(gè)密鑰對象標(biāo)識符標(biāo)識,并通過密鑰對象標(biāo)識符被當(dāng)作對應(yīng)的偽公鑰和偽數(shù)字證書的對應(yīng)私鑰或密鑰對使用(稱為影子私鑰或影子密鑰對);
[0044]所述ECC公鑰組或ECC私鑰組或密鑰對組的密鑰對象數(shù)據(jù)中,除了保存有每個(gè)擴(kuò)展身份標(biāo)識對應(yīng)的ECC公鑰或ECC私鑰或密鑰對外,還保存有對應(yīng)的身份標(biāo)識信息以及每個(gè)ECC公鑰或ECC私鑰或密鑰對所對應(yīng)的擴(kuò)展身份標(biāo)識信息;
[0045]所述密鑰對象指各種密鑰包括公鑰、私鑰、密鑰對以及對稱密鑰在密碼模塊中的數(shù)據(jù)存在形式;所述密鑰對象包括存儲(chǔ)在永久存儲(chǔ)介質(zhì)上(如硬盤、USB Key上)的永久密鑰對象和存儲(chǔ)在臨時(shí)存儲(chǔ)介質(zhì)上(如內(nèi)存中)的臨時(shí)密鑰對象,并分別對應(yīng)有永久密鑰對象標(biāo)識符(通常是字串)和臨時(shí)密鑰對象標(biāo)識符(通常是整數(shù),即密鑰對象句柄,簡稱密鑰句柄);
[0046]所述密碼模塊和ECC密鑰生成系統(tǒng)預(yù)定或配置有身份標(biāo)識限定策略;密碼模塊處的身份標(biāo)識限定策略規(guī)定或限定了在數(shù)據(jù)加密或數(shù)字簽名時(shí)一個(gè)身份標(biāo)識所對應(yīng)的擴(kuò)展身份標(biāo)識,即規(guī)定或限定了在數(shù)據(jù)加密時(shí)所采用的ECC公鑰所對應(yīng)的擴(kuò)展身份標(biāo)識或在數(shù)字簽名時(shí)所采用的ECC私鑰所對應(yīng)的擴(kuò)展身份標(biāo)識,也即在數(shù)據(jù)加密或數(shù)字簽名時(shí)哪一個(gè)擴(kuò)展身份標(biāo)識所對應(yīng)的ECC公鑰或ECC私鑰被采用;ECC密鑰生成系統(tǒng)處的身份標(biāo)識限定策略規(guī)定或限定了在生成一個(gè)擴(kuò)展身份標(biāo)識對應(yīng)的ECC私鑰時(shí)需要滿足的必要條件;所述預(yù)定的身份標(biāo)識限定策略指已編碼在程序中的不能更改的身份標(biāo)識限定策略;所述配置的身份標(biāo)識限定策略指可修改、設(shè)定的身份標(biāo)識限定策略;
[0047]所述密碼應(yīng)用程序按使用公鑰及其對應(yīng)私鑰或密鑰對的方式使用偽公鑰及其對應(yīng)的私鑰或密鑰對;
[0048]所述密碼應(yīng)用程序按使用數(shù)字證書及其對應(yīng)私鑰或密鑰對的方式使用偽數(shù)字證書及其對應(yīng)私鑰或密鑰對(如將證書上的持有者公鑰導(dǎo)入到密碼模塊中用于數(shù)據(jù)加密或簽名驗(yàn)證,或通過證書所關(guān)聯(lián)的私鑰或密鑰對密鑰對象的密鑰對象標(biāo)識符使用證書持有者的私鑰,用于數(shù)據(jù)解密或簽名驗(yàn)證);
[0049]若密碼應(yīng)用程序不使用數(shù)字證書而是直接使用公鑰或私鑰或密鑰對進(jìn)行數(shù)據(jù)加密和解密,簽名和簽名驗(yàn)證,則所述偽數(shù)字證書、偽數(shù)字證書簽發(fā)系統(tǒng)以及偽數(shù)字證書簽發(fā)客戶端不再存在;[0050]若僅密碼應(yīng)用程序從所述偽數(shù)字證書簽發(fā)系統(tǒng)獲取偽數(shù)字證書,則所述偽數(shù)字證書簽發(fā)客戶端不再存在。
[0051]在大部分的密碼模塊實(shí)現(xiàn)中都采用了密鑰對象的概念,在不產(chǎn)生歧義的情況下,可將公鑰、私鑰、密鑰對、對稱密鑰與公鑰對象、私鑰對象、密鑰對對象、對稱密鑰對象等同。永久存儲(chǔ)介質(zhì)上的密鑰對象通常需要裝載到臨時(shí)存儲(chǔ)介質(zhì)中后通過相應(yīng)的整數(shù)密鑰標(biāo)識符訪問。
[0052]用戶通過如下方式對密碼應(yīng)用程序的密鑰或數(shù)字證書進(jìn)行配置:
[0053]對于不使用數(shù)字證書的密碼應(yīng)用程序,用戶通過如下方式進(jìn)行密鑰配置:
[0054]非身份標(biāo)識的擁有者用戶通過密碼應(yīng)用程序或其他密鑰配置工具自動(dòng)或在用戶干預(yù)的情況下,生成身份標(biāo)識對應(yīng)的偽公鑰,調(diào)用所述密碼模塊的ECC公鑰組生成接口生成身份標(biāo)識對應(yīng)的ECC公鑰組的密鑰對象,然后將生成的偽公鑰導(dǎo)入到密碼模塊中,將偽公鑰配置為密碼應(yīng)用程序所用,包括用于數(shù)據(jù)加密和簽名驗(yàn)證;
[0055]身份標(biāo)識的擁有者用戶通過密碼應(yīng)用程序或其他密鑰配置工具自動(dòng)或在用戶干預(yù)的情況下,生成身份標(biāo)識對應(yīng)的偽公鑰,調(diào)用所述密碼模塊的私鑰或密鑰對生成接口生成身份標(biāo)識對應(yīng)的ECC私鑰組或密鑰對組的密鑰對象,然后將生成的偽公鑰和ECC私鑰組或密鑰對組密鑰對象作為配對的公鑰和私鑰配置為密碼應(yīng)用程序所用,包括用于數(shù)據(jù)加密和解密,簽名和簽名驗(yàn)證;
[0056]對于使用數(shù)字證書的密碼應(yīng)用程序,用戶通過如下方式進(jìn)行數(shù)字證書配置:
[0057]非身份標(biāo)識的擁有者用戶通過偽數(shù)字證書簽發(fā)客戶端或密碼應(yīng)用程序,進(jìn)行如下密鑰及證書生成和配置操作:
[0058]操作Q:調(diào)用所述密碼模塊的ECC公鑰組生成接口,生成身份標(biāo)識對應(yīng)的ECC公鑰組的密鑰對象;
[0059]操作U:從偽數(shù)字證書簽發(fā)系統(tǒng)獲取身份標(biāo)識對應(yīng)的偽數(shù)字證書;
[0060]操作V:將生成的偽數(shù)字證書配置為密碼應(yīng)用程序所用,包括用于數(shù)據(jù)加密和簽名驗(yàn)證;
[0061]身份標(biāo)識的擁有者用戶通過偽數(shù)字證書簽發(fā)客戶端或密碼應(yīng)用程序,進(jìn)行如下密鑰及證書生成和配置操作:
[0062]操作W:調(diào)用所述密碼模塊的私鑰或密鑰對密鑰生成接口,生成身份標(biāo)識對應(yīng)的ECC私鑰組或密鑰對組的密鑰對象;
[0063]操作X:從偽數(shù)字證書簽發(fā)系統(tǒng)獲取身份標(biāo)識對應(yīng)的偽數(shù)字證書;
[0064]操作Y:將操作W得到的密鑰對象與操作X獲取的偽數(shù)字證書關(guān)聯(lián)(如何關(guān)聯(lián)取決于具體應(yīng)用的證書使用環(huán)境,通常是通過密鑰對象標(biāo)識符將一個(gè)私鑰或密鑰對密鑰對象與一張數(shù)字證書關(guān)聯(lián)),即將操作W生成的ECC私鑰組或密鑰對組密鑰對象作為操作X獲得的偽數(shù)字證書的私鑰或密鑰對密鑰對象;
[0065]操作Z:將生成的偽數(shù)字證書配置為密碼應(yīng)用程序所用,包括用于數(shù)據(jù)加密和解密,簽名和簽名驗(yàn)證。
[0066]對于偽數(shù)字證書簽發(fā)客戶端或密碼應(yīng)用程序針對公鑰或私鑰或密鑰對操作的接口調(diào)用,所述密碼模塊針對不同的接口操作調(diào)用分別按如下方式進(jìn)行處理:
[0067]操作調(diào)用A:對于生成私鑰或密鑰對的接口調(diào)用,在存儲(chǔ)介質(zhì)中創(chuàng)建一個(gè)包括一個(gè)空的ECC私鑰組或密鑰對組的密鑰對象,并將通過人機(jī)界面獲得的身份標(biāo)識信息保存在新生成的密鑰對象中,然后將返回的密鑰對象標(biāo)識符指向新生成的ECC私鑰組或密鑰對組的密鑰對象;或者生成一個(gè)偽公鑰的數(shù)據(jù)結(jié)構(gòu)所標(biāo)識的或約定的公開密鑰密碼算法的私鑰或密鑰對的密鑰對象,然后將返回的密鑰對象標(biāo)識符指向新生成的密鑰對象(如,若偽公鑰的數(shù)據(jù)結(jié)構(gòu)所標(biāo)識的或約定的算法是RSA,則生成一個(gè)RSA私鑰或密鑰對);
[0068]操作調(diào)用B:對于生成私鑰組或密鑰對組的接口調(diào)用,在存儲(chǔ)介質(zhì)中創(chuàng)建一個(gè)包括一個(gè)空的ECC私鑰組或密鑰對組的密鑰對象,并將通過調(diào)用接口或人機(jī)界面獲得的身份標(biāo)識信息保存在新生成的密鑰對象中,然后將返回的密鑰對象標(biāo)識符指向新生成的ECC私鑰組或密鑰對組的密鑰對象;
[0069]操作調(diào)用C:對于生成ECC公鑰組的接口調(diào)用,在存儲(chǔ)介質(zhì)中創(chuàng)建一個(gè)包括一個(gè)空的ECC公鑰組的密鑰對象,并將通過調(diào)用接口或人機(jī)界面獲得的身份標(biāo)識信息保存在新生成的密鑰對象中,然后將返回的密鑰對象標(biāo)識符指向新生成的ECC公鑰組的密鑰對象;
[0070]操作調(diào)用D:對于使用ECC私鑰組或密鑰對組密鑰對象的密鑰對象標(biāo)識符導(dǎo)出私鑰或密鑰對的接口調(diào)用,返回出錯(cuò);
[0071]操作調(diào)用E:對于使用ECC私鑰組或密鑰對組密鑰對象的密鑰對象標(biāo)識符導(dǎo)出ECC私鑰組或密鑰對組的接口調(diào)用,返回密鑰對象標(biāo)識符指向的密鑰對象的ECC私鑰組或密鑰對組中所有ECC私鑰或密鑰對,以及對應(yīng)的身份標(biāo)識和擴(kuò)展身份標(biāo)識信息;
[0072]操作調(diào)用F:對于使用ECC公鑰組密鑰對象的密鑰對象標(biāo)識符導(dǎo)出ECC公鑰組的接口調(diào)用,返回密鑰對象標(biāo)識符指向的密鑰對象的ECC公鑰組中所有ECC公鑰,以及對應(yīng)的身份標(biāo)識和擴(kuò)展身份標(biāo)識信息;
[0073]操作調(diào)用G:對于使用ECC私鑰組或密鑰對組密鑰對象的密鑰對象標(biāo)識符導(dǎo)出公鑰的接口調(diào)用,從密鑰對象標(biāo)識符指向的密鑰對象中獲取對應(yīng)的身份標(biāo)識,生成身份標(biāo)識對應(yīng)的偽公鑰,然后返回生成的偽公鑰;
[0074]操作調(diào)用H:對于導(dǎo)入ECC公鑰組的接口調(diào)用,在存儲(chǔ)介質(zhì)中創(chuàng)建一個(gè)ECC公鑰組的密鑰對象,并將通過調(diào)用接口輸入的要導(dǎo)入的ECC公鑰組中的所有ECC公鑰以及對應(yīng)的身份標(biāo)識和擴(kuò)展身份標(biāo)識信息加入到新創(chuàng)建的密鑰對象中,然后將返回的密鑰對象標(biāo)識符指向新生成的ECC公鑰組密鑰對象;
[0075]操作調(diào)用1:對于導(dǎo)入ECC私鑰組或密鑰對組的接口調(diào)用,在存儲(chǔ)介質(zhì)中創(chuàng)建一個(gè)ECC私鑰組或密鑰對組的密鑰對象,并將通過調(diào)用接口輸入的要導(dǎo)入的ECC私鑰組或密鑰對組中的所有ECC私鑰或密鑰對以及對應(yīng)的身份標(biāo)識和擴(kuò)展身份標(biāo)識信息加入到新創(chuàng)建的密鑰對象中,然后將返回的密鑰對象標(biāo)識符指向新生成的ECC私鑰組或密鑰對組的密鑰對象;
[0076]操作調(diào)用J:對于使用ECC私鑰組或密鑰對組的密鑰對象的密鑰對象標(biāo)識符刪除私鑰或密鑰對密鑰對象的接口調(diào)用,在存儲(chǔ)介質(zhì)中清除對象標(biāo)識符所指的密鑰對象;
[0077]操作調(diào)用K:對于使用ECC公鑰組的密鑰對象的密鑰對象標(biāo)識符刪除公鑰組的接口調(diào)用,在存儲(chǔ)介質(zhì)中清除密鑰對象標(biāo)識符所指的密鑰對象;
[0078]操作調(diào)用L:對于導(dǎo)入公鑰的接口調(diào)用,檢查導(dǎo)入的公鑰是否是偽公鑰,如果不是,則按導(dǎo)入正常的公鑰(即非偽公鑰)的方式完成導(dǎo)入公鑰的處理;否則,按如下方式處理:[0079]步驟L1:在存儲(chǔ)介質(zhì)中創(chuàng)建一個(gè)偽公鑰的密鑰對象,將要導(dǎo)入的偽公鑰保存在創(chuàng)建的偽公鑰密鑰對象中;
[0080]步驟L2:從偽公鑰中獲取身份標(biāo)識信息;
[0081]步驟L3:查看存儲(chǔ)介質(zhì)中是否已有身份標(biāo)識對應(yīng)的ECC公鑰組密鑰對象,若是,則將步驟LI創(chuàng)建的偽公鑰的密鑰對象與對應(yīng)的ECC公鑰組密鑰對象相關(guān)聯(lián)(如將ECC公鑰組密鑰對象的密鑰對象標(biāo)識符保存在創(chuàng)建的偽公鑰密鑰對象中),并將返回的密鑰對象標(biāo)識符指向創(chuàng)建的偽公鑰的密鑰對象,完成偽公鑰的導(dǎo)入處理;否則,返回出錯(cuò);
[0082]操作調(diào)用M:對于使用偽公鑰密鑰對象的密鑰對象標(biāo)識符導(dǎo)出公鑰的接口調(diào)用,導(dǎo)出密鑰對象標(biāo)識符指向的偽公鑰密鑰對象中的偽公鑰;
[0083]操作調(diào)用N:對于使用偽公鑰密鑰對象的密鑰對象標(biāo)識符刪除公鑰密鑰對象的接口調(diào)用,在存儲(chǔ)介質(zhì)中清除密鑰對象標(biāo)識符所指的偽公鑰密鑰對象;
[0084]執(zhí)行所述操作調(diào)用A是生成一個(gè)ECC私鑰組或密鑰對組的密鑰對象,還是生成一個(gè)偽公鑰的數(shù)據(jù)結(jié)構(gòu)所標(biāo)識的或約定的公開密鑰密碼算法的私鑰或密鑰對的密鑰對象,由用戶通過人機(jī)界面選擇決定,或者由所述密碼模塊的配置信息決定,或者由密碼模塊程序固定設(shè)定。
[0085]操作調(diào)用A和操作調(diào)用B是兩種不同的接口調(diào)用(操作調(diào)用A通常是標(biāo)準(zhǔn)的接口調(diào)用,而操作調(diào)用B是額外定義的接口調(diào)用);同樣地,操作調(diào)用D和操作調(diào)用F是兩種不同的接口調(diào)用(操作調(diào)用D通常是標(biāo)準(zhǔn)的接口調(diào)用,而操作調(diào)用F是額外定義的接口調(diào)用)。
[0086]以上針對密鑰的操作,或者是針對永久存儲(chǔ)介質(zhì)上的密鑰的操作,或者是針對臨時(shí)存儲(chǔ)介質(zhì)上的密鑰的操作;永久存儲(chǔ)介質(zhì)上(如硬盤)的密鑰通常需要裝載到臨時(shí)存儲(chǔ)介質(zhì)中(如內(nèi)存中)才能使用,這與具體實(shí)施有關(guān)。另外,在密碼模塊的具體實(shí)施中,除了以上所述針對公鑰、私鑰或密鑰對的操作外,還需要實(shí)施針對其他密鑰對象(如對稱密鑰)的密鑰操作。
[0087]對于密碼應(yīng)用程序使用偽公鑰密鑰對象的密鑰對象標(biāo)識符調(diào)用所述密碼模塊進(jìn)行數(shù)據(jù)加密的操作(通常是對隨機(jī)對稱密鑰加密),所述密碼模塊按如下方式進(jìn)行處理:
[0088]第I步:從密鑰對象標(biāo)識符所指的偽公鑰密鑰對象中獲取對應(yīng)的身份標(biāo)識,用獲取的身份標(biāo)識生成一個(gè)與預(yù)定或配置的身份標(biāo)識限定策略相對應(yīng)的擴(kuò)展身份標(biāo)識;
[0089]第2步:查看密鑰對象標(biāo)識符指向的偽公鑰密鑰對象所關(guān)聯(lián)的ECC公鑰組密鑰對象的ECC公鑰組中是否有第I步生成的擴(kuò)展身份標(biāo)識對應(yīng)的ECC公鑰,若沒有,轉(zhuǎn)入第3步;若有,則使用對應(yīng)的ECC公鑰對數(shù)據(jù)進(jìn)行加密,并將當(dāng)前使用的ECC公鑰對應(yīng)的擴(kuò)展身份標(biāo)識的信息作為附加數(shù)據(jù)或填充數(shù)據(jù)附加或填充到被加密的數(shù)據(jù)中,完成處理后返回結(jié)果;
[0090]第3步:使用第I步生成的擴(kuò)展身份標(biāo)識從ECC密鑰生成系統(tǒng)請求獲取擴(kuò)展身份標(biāo)識對應(yīng)的ECC公鑰;
[0091]第4步:將獲得的ECC公鑰及對應(yīng)的擴(kuò)展身份標(biāo)識及加入到當(dāng)前使用的偽公鑰密鑰對象所關(guān)聯(lián)的ECC公鑰組密鑰對象的ECC公鑰組中;
[0092]第5步:使用獲得的ECC公鑰對數(shù)據(jù)進(jìn)行加密,并將當(dāng)前使用的ECC公鑰對應(yīng)的擴(kuò)展身份標(biāo)識的信息作為附加數(shù)據(jù)或填充數(shù)據(jù)附加或填充到被加密的數(shù)據(jù)中,完成處理后返回結(jié)果;
[0093]所述第2步或第5步中將當(dāng)前使用的ECC公鑰對應(yīng)的擴(kuò)展身份標(biāo)識的信息作為附加數(shù)據(jù)或填充數(shù)據(jù)附加或填充到被加密的數(shù)據(jù)中的操作處理,是指將擴(kuò)展身份標(biāo)識信息加入到經(jīng)ECC公鑰密碼運(yùn)算后的數(shù)據(jù)本身中,而不是作為加密密鑰的密鑰標(biāo)識信息或密鑰標(biāo)識信息的一部分放入到加密數(shù)據(jù)信封的接收者信息中(如RFC5652,CryptographicMessageSyntax (CMS)的 EnvelopedData 數(shù)據(jù)信封的 RecipientInfo 中)。
[0094]實(shí)際上,通常ECC公鑰是用于加密隨機(jī)產(chǎn)生的對稱密鑰,因此,通常情況下擴(kuò)展身份標(biāo)識的信息是附加或填充入到被加密的隨機(jī)對稱密鑰數(shù)據(jù)中。
[0095]如何在一個(gè)身份標(biāo)識的基礎(chǔ)上生成一個(gè)與預(yù)定或配置的身份標(biāo)識限定策略相對應(yīng)的擴(kuò)展身份標(biāo)識,與具體的策略有關(guān),與具體的策略實(shí)施方案有關(guān)。
[0096]對于密碼應(yīng)用程序使用ECC私鑰組或密鑰對組密鑰對象的密鑰對象標(biāo)識符調(diào)用所述密碼模塊進(jìn)行數(shù)據(jù)解密的操作,所述密碼模塊按如下方式進(jìn)行處理:
[0097]第A步:通過加密數(shù)據(jù)的附加數(shù)據(jù)或填充數(shù)據(jù)獲得數(shù)據(jù)加密時(shí)所用ECC公鑰的對應(yīng)擴(kuò)展身份標(biāo)識;
[0098]第B步:查看密鑰對象標(biāo)識符指向的密鑰對象的ECC私鑰組或密鑰對組中是否有第A步獲得的擴(kuò)展身份標(biāo)識對應(yīng)的ECC私鑰或密鑰對,若沒有,轉(zhuǎn)入第C步;若有,則使用對應(yīng)的ECC私鑰或密鑰對解密加密的數(shù)據(jù),完成處理后返回結(jié)果;
[0099]第C步:使用第A步獲得的擴(kuò)展身份標(biāo)識從ECC密鑰生成系統(tǒng)請求獲取擴(kuò)展身份標(biāo)識對應(yīng)的ECC私鑰或密鑰對;
[0100]第D步:將獲得的ECC私鑰或密鑰對及對應(yīng)的擴(kuò)展身份標(biāo)識及加入到當(dāng)前使用的ECC私鑰組或密鑰對組密鑰對象的ECC私鑰組或密鑰對組中;
[0101]第E步:使用獲得的ECC私鑰或密鑰對解密加密的數(shù)據(jù),完成處理后返回結(jié)果。
[0102]對于密碼應(yīng)用程序使用ECC私鑰組或密鑰對組的密鑰對象的密鑰對象標(biāo)識符調(diào)用所述密碼模塊對數(shù)據(jù)進(jìn)行數(shù)字簽名的操作,所述密碼模塊按如下方式進(jìn)行處理:
[0103]步驟1:從密鑰對象標(biāo)識符所指的ECC私鑰組或密鑰對組密鑰對象中獲取的對應(yīng)身份標(biāo)識,用獲取的身份標(biāo)識生成一個(gè)與預(yù)定或配置的身份標(biāo)識限定策略(即對應(yīng)的ECC私鑰的限定策略)相對應(yīng)的擴(kuò)展身份標(biāo)識;
[0104]步驟2:查看密鑰對象標(biāo)識符指向的ECC私鑰組或密鑰對組密鑰對象的ECC私鑰組或密鑰對組中是否有步驟I生成的擴(kuò)展身份標(biāo)識對應(yīng)的ECC私鑰或密鑰對,若沒有,轉(zhuǎn)入步驟3 ;若有,則使用對應(yīng)的ECC私鑰或密鑰對中的私鑰對數(shù)據(jù)進(jìn)行數(shù)字簽名,并將當(dāng)前使用的ECC私鑰或密鑰對所對應(yīng)的擴(kuò)展身份標(biāo)識的信息作為附加數(shù)據(jù)或填充數(shù)據(jù)附加或填充到被簽名的數(shù)據(jù)中,完成處理后返回結(jié)果;
[0105]步驟3:使用步驟I生成的擴(kuò)展身份標(biāo)識從ECC密鑰生成系統(tǒng)請求獲取擴(kuò)展身份標(biāo)識對應(yīng)的ECC私鑰或密鑰對;
[0106]步驟4:將獲得的對應(yīng)ECC私鑰或密鑰對及對應(yīng)的擴(kuò)展身份標(biāo)識及加入到當(dāng)前使用的ECC私鑰組或密鑰對組中;
[0107]步驟5:使用獲得的ECC私鑰或密鑰對中的私鑰對數(shù)據(jù)進(jìn)行數(shù)字簽名,將當(dāng)前使用的ECC私鑰或密鑰對所對應(yīng)的擴(kuò)展身份標(biāo)識的信息作為附加數(shù)據(jù)或填充數(shù)據(jù)附加或填充到被簽名的數(shù)據(jù)中,完成處理后返回結(jié)果;
[0108]所述步驟2或步驟5中將當(dāng)前使用的ECC私鑰或密鑰對所對應(yīng)的擴(kuò)展身份標(biāo)識的信息作為附加數(shù)據(jù)或填充數(shù)據(jù)附加或填充到被簽名的數(shù)據(jù)中的操作處理,是指將擴(kuò)展身份標(biāo)識信息加入到經(jīng)ECC私鑰密碼算后的數(shù)據(jù)本身中,而不是作為簽名者密鑰標(biāo)識信息或密鑰標(biāo)識信息的一部分放入到簽名后形成的數(shù)據(jù)結(jié)構(gòu)的簽名者信息中(如CMS中的SignedData的SignertInfo中)(實(shí)際上,簽名是用ECC私鑰針對簽名數(shù)據(jù)的散列值進(jìn)行密碼運(yùn)算,因此,擴(kuò)展身份標(biāo)識的信息是附加或填充到經(jīng)ECC私鑰密碼運(yùn)算后的散列值中)。
[0109]對于密碼應(yīng)用程序使用偽公鑰密鑰對象的密鑰對象標(biāo)識符調(diào)用所述密碼模塊對簽名數(shù)據(jù)進(jìn)行簽名驗(yàn)證的操作,所述密碼模塊按如下方式進(jìn)行處理:
[0110]步驟A:通過簽名數(shù)據(jù)的附加數(shù)據(jù)或填充數(shù)據(jù)獲得簽名時(shí)所用ECC私鑰的對應(yīng)擴(kuò)展身份標(biāo)識;
[0111]步驟B:查看密鑰對象標(biāo)識符指向的偽公鑰密鑰對象所關(guān)聯(lián)的ECC公鑰組密鑰對象的ECC公鑰組中是否有步驟A中獲得的擴(kuò)展身份標(biāo)識對應(yīng)的ECC公鑰,若沒有,轉(zhuǎn)入步驟C ;若有,則使用對應(yīng)的ECC公鑰對簽名數(shù)據(jù)進(jìn)行簽名驗(yàn)證,完成處理后返回結(jié)果;
[0112]步驟C:使用步驟A獲得的擴(kuò)展身份標(biāo)識從ECC密鑰生成系統(tǒng)請求獲取擴(kuò)展身份標(biāo)識對應(yīng)的ECC公鑰;
[0113]步驟D:將獲得的對應(yīng)ECC公鑰及對應(yīng)擴(kuò)展身份標(biāo)識及加入到當(dāng)前使用的偽公鑰密鑰對象關(guān)聯(lián)的ECC公鑰組密鑰對象的ECC公鑰組中;
[0114]步驟E:使用獲得的ECC公鑰對簽名數(shù)據(jù)進(jìn)行簽名驗(yàn)證,完成處理后返回結(jié)果。
[0115]在密碼模塊的具體實(shí)施中,除了以上針對公鑰、私鑰或密鑰對密碼運(yùn)算外,還需要實(shí)施針對其他密鑰對象(如對稱密鑰)的密碼運(yùn)算。
[0116]對于用戶通過偽數(shù)字證書簽發(fā)客戶端或密碼應(yīng)用程序從所述偽數(shù)字證書簽發(fā)系統(tǒng)獲取一張身份標(biāo)識對應(yīng)的偽數(shù)字證書的請求,所述偽數(shù)字證書簽發(fā)系統(tǒng)按如下步驟進(jìn)行處理:
[0117]步驟1:查看內(nèi)存或數(shù)據(jù)庫中是否緩存或保存有請求中的擴(kuò)展身份標(biāo)識對應(yīng)的偽數(shù)字證書,若有,則返回對應(yīng)的偽數(shù)字證書;否則,轉(zhuǎn)入步驟II ;
[0118]步驟I1:偽數(shù)字證書簽發(fā)系統(tǒng)利用請求中的身份標(biāo)識信息生成對應(yīng)的偽公鑰,然后使用偽數(shù)字證書簽發(fā)CA的私鑰簽發(fā)一張證書持有者公鑰是偽公鑰的偽數(shù)字證書,,之后將簽發(fā)的偽數(shù)字證書緩存在內(nèi)存中或保存在數(shù)據(jù)庫中,最后返回簽發(fā)的偽數(shù)字證書;
[0119]所述偽數(shù)字證書簽發(fā)系統(tǒng)針對同一身份標(biāo)識所簽發(fā)的偽數(shù)字證書的簽發(fā)者名(Issuer Name)和序列號(Serial Number)相同(主題名,即Subject Name,可以同,也可以不同)。
[0120]若所述基于標(biāo)識的橢圓曲線密碼系統(tǒng)僅用于數(shù)據(jù)加密應(yīng)用,則所述偽數(shù)字證書簽發(fā)系統(tǒng)是一個(gè)獨(dú)立運(yùn)行的系統(tǒng),或者與所述偽數(shù)字證書簽發(fā)客戶端合并為一個(gè)運(yùn)行于用戶端的偽數(shù)字證書簽發(fā)工具;
[0121]若所述偽數(shù)字證書簽發(fā)系統(tǒng)與所述偽數(shù)字證書簽發(fā)客戶端合并為一個(gè)運(yùn)行于用戶端的偽數(shù)字證書簽發(fā)工具,則每個(gè)用戶或密碼應(yīng)用程序通過所述偽數(shù)字證書簽發(fā)工具獨(dú)立生成加密或解密所需的偽數(shù)字證書,包括帶私鑰和不帶私鑰的偽數(shù)字證書;不同用戶或密碼應(yīng)用程序通過所述偽數(shù)字證書簽發(fā)工具針對同一個(gè)身份標(biāo)識獨(dú)立生成的偽數(shù)字證書的簽發(fā)者名和序列號相同(主題名可以同,也可以不同);不同用戶的偽數(shù)字證書簽發(fā)工具所使用的證書簽發(fā)CA及其上級CA的CA證書的簽發(fā)者名、主題名和序列號相同,但證書簽發(fā)CA及其上級CA的CA證書的密鑰對不同。[0122]對于密碼模塊從ECC密鑰生成系統(tǒng)請求獲取一個(gè)擴(kuò)展身份標(biāo)識所對應(yīng)的ECC公鑰的請求,所述ECC密鑰生成系統(tǒng)按如下步驟處理:
[0123]步驟一:查看內(nèi)存或數(shù)據(jù)庫中是否緩存或保存有請求中的擴(kuò)展身份標(biāo)識對應(yīng)ECC公鑰,若有,則返回對應(yīng)的ECC公鑰;否則,轉(zhuǎn)入步驟二 ;
[0124]步驟二:將請求中的擴(kuò)展身份標(biāo)識與ECC密鑰生成系統(tǒng)的種子數(shù)據(jù)通過運(yùn)算生成擴(kuò)展身份標(biāo)識對應(yīng)的ECC私鑰(d),并進(jìn)而計(jì)算得到對應(yīng)的ECC公鑰(dG),然后將計(jì)算得到的ECC公鑰緩存在內(nèi)存中或保存在數(shù)據(jù)庫中,最后返回計(jì)算得到的對應(yīng)的ECC公鑰。
[0125]對于密碼模塊從ECC密鑰生成系統(tǒng)請求獲取一個(gè)擴(kuò)展身份標(biāo)識所對應(yīng)的ECC私鑰或密鑰對的請求,所述ECC密鑰生成系統(tǒng)按如下步驟處理:
[0126]第I步:驗(yàn)證和確認(rèn)請求方的用戶就是擴(kuò)展身份標(biāo)識對應(yīng)的身份標(biāo)識的擁有者,若驗(yàn)證通過,則轉(zhuǎn)入第II步;否則,返回拒絕,并給出拒絕的原因;
[0127]第II步:根據(jù)請求中的擴(kuò)展身份標(biāo)識中的限定策略確定當(dāng)前是否符合為用戶生成擴(kuò)展身份標(biāo)識對應(yīng)私鑰的條件,若是,則轉(zhuǎn)入第III步;否則,返回拒絕,并給出拒絕的原因;
[0128]第III步:將請求中的擴(kuò)展身份標(biāo)識與ECC密鑰生成系統(tǒng)的種子數(shù)據(jù)通過運(yùn)算生成擴(kuò)展身份標(biāo)識對應(yīng)的ECC私鑰(d),并返回生成的ECC私鑰;
[0129]若請求是生成ECC密鑰對,則由ECC密鑰生成系統(tǒng)利用生成的ECC私鑰(d)計(jì)算得到對應(yīng)的ECC公鑰(dG)并返回生成和計(jì)算得到的ECC私鑰和公鑰(即ECC密鑰對),或者僅返回生成的ECC私鑰,由調(diào)用方的密碼模塊利用獲得的ECC私鑰計(jì)算得到對應(yīng)的ECC公鑰。
[0130]如何根據(jù)請求中的擴(kuò)展身份標(biāo)識的限定策略確定當(dāng)前是否符合為用戶生成擴(kuò)展身份標(biāo)識對應(yīng)私鑰的條件,與具體的策略有關(guān),與具體的策略實(shí)施方案有關(guān)。
[0131]若所述基于標(biāo)識的橢圓曲線密碼系統(tǒng)采用分割方式生成ECC密鑰,則由兩個(gè)或兩個(gè)以上的采用相同ECC系統(tǒng)參數(shù)的ECC密鑰生成系統(tǒng)分別生成一個(gè)擴(kuò)展身份標(biāo)識對應(yīng)的ECC私鑰,然后以分別生成的ECC私鑰的代數(shù)和作為最終的ECC私鑰;以每個(gè)ECC密鑰生成系統(tǒng)分別生成的擴(kuò)展身份標(biāo)識對應(yīng)的ECC公鑰的橢圓曲線群和(橢圓曲線上的點(diǎn)構(gòu)成的群的點(diǎn)加和)作為最終的ECC公鑰;每個(gè)ECC密鑰生成系統(tǒng)用于ECC私鑰計(jì)算的種子數(shù)據(jù)各不相同。對不同ECC密鑰生成系統(tǒng)分別生成的ECC私鑰求代數(shù)和以及對不同ECC密鑰生成系統(tǒng)分別生成的ECC公鑰求橢圓曲線群和的運(yùn)算由密碼模塊完成。
[0132]本發(fā)明的基于標(biāo)識的橢圓曲線密碼系統(tǒng),通過將對應(yīng)于一個(gè)身份標(biāo)識的偽公鑰與對應(yīng)同一身份標(biāo)識的ECC公鑰組和ECC私鑰組(或ECC密鑰對組)相對應(yīng),從而將使用偽公鑰進(jìn)行數(shù)據(jù)加密或簽名驗(yàn)證的密碼運(yùn)算自動(dòng)轉(zhuǎn)化成使用對應(yīng)ECC公鑰組中相應(yīng)ECC公鑰的運(yùn)算;將使用偽公鑰所對應(yīng)的私鑰(一個(gè)實(shí)際上不存在的影子私鑰)進(jìn)行數(shù)據(jù)解密或簽名的運(yùn)算自動(dòng)轉(zhuǎn)化成使用對應(yīng)ECC私鑰組(或ECC密鑰對組)中對應(yīng)私鑰的運(yùn)算;并且,在沒有對應(yīng)ECC公鑰或私鑰(密鑰對)時(shí),由密碼模塊自動(dòng)獲取對應(yīng)的ECC公鑰或私鑰(密鑰對)。這樣的基于標(biāo)識的橢圓曲線密碼系統(tǒng)不但具有IBC密碼系統(tǒng)的部分特點(diǎn),包括將一個(gè)密鑰對與一個(gè)(擴(kuò)展)身份標(biāo)識相對應(yīng),通過限定策略對身份標(biāo)識對應(yīng)密鑰對的使用進(jìn)行限定,由密鑰生成系統(tǒng)根據(jù)用戶的(擴(kuò)展)身份標(biāo)識計(jì)算生成或恢復(fù)對應(yīng)的私鑰或密鑰對,無需集中存儲(chǔ)用戶數(shù)字證書和對應(yīng)私鑰等(從而大大降低了密鑰管理和服務(wù)系統(tǒng)的復(fù)雜性),而且,密碼算法比IBC簡單,易于得到客戶端密碼硬件的支持,并通過密碼模塊自動(dòng)獲取或更新密鑰,減少了密鑰更新過程中用戶的干預(yù),給用戶帶來方便。
【專利附圖】
【附圖說明】
[0133]圖1為本發(fā)明的密碼系統(tǒng)的結(jié)構(gòu)框圖。
[0134]圖2為本發(fā)明的密碼模塊中ECC密鑰組(包括ECC公鑰組、ECC私鑰組或密鑰對組)的實(shí)施示意圖。
【具體實(shí)施方式】
[0135]下面結(jié)合附圖和實(shí)施例對本發(fā)明作進(jìn)一步的描述。
[0136]采用本發(fā)明的密碼系統(tǒng)的結(jié)構(gòu)框圖如圖1所示。
[0137]本發(fā)明的實(shí)施首先需要確定偽公鑰的實(shí)施方案。本發(fā)明的偽公鑰可以基于RSA公鑰實(shí)施(偽RSA公鑰),也可以基于ECC公鑰實(shí)施(偽ECC公鑰),或基于其他公開密鑰密碼算法的公鑰實(shí)施。無論采用RSA公鑰實(shí)施還是采用ECC公鑰實(shí)施(或其他算法的公鑰實(shí)施),都可以參考本發(fā)明專利申請的 申請人:在其專利“一種基于偽RSA密鑰的新近公開密鑰加密算法的應(yīng)用實(shí)現(xiàn)方法”(專利號:201110248050.8)中所述的偽RSA密鑰(針對公鑰部分)的實(shí)施方案。這時(shí),偽RSA公鑰數(shù)據(jù)或偽ECC公鑰數(shù)據(jù)中存放的身份標(biāo)識信息是(基本)身份標(biāo)識的散列數(shù)值(若存原始值,則有可能太長),以及ECC系統(tǒng)參數(shù)(包括橢圓曲線具體格式、域、系數(shù)和基點(diǎn))的指示信息(通過版本號或URL),而不是橢圓曲線的具體格式、域、系數(shù)和基點(diǎn)數(shù)據(jù)本身。
[0138]在偽公鑰的基礎(chǔ)上可實(shí)施偽數(shù)字證書(如偽RSA數(shù)字證書或偽ECC數(shù)字證書)。實(shí)現(xiàn)所有偽數(shù)字證書的簽發(fā)者名相同是很容易做到的,只要證書簽發(fā)CA的CA證書的主題名不變或相同即可;為了保證針對同一個(gè)身份標(biāo)識所生成簽發(fā)的偽數(shù)字證書的序列號相同,可以用身份標(biāo)識的散列值作為證書序列號。
[0139]證書主題名如何設(shè)置與具體密碼應(yīng)用有關(guān),通常情況下根據(jù)密碼應(yīng)用的需要,身份標(biāo)識需要作為主題名的一部分出現(xiàn)在主題名中,比如,如果身份標(biāo)識是電子郵箱地址,則身份標(biāo)識(即電子郵箱地址)要作為主題名(主題甄別名)的電子郵件字段(E字段)的值出現(xiàn)在主題名中。
[0140]偽數(shù)字證書的有效期可以設(shè)置得很長,比如50年,100年,且可將其起始、終止時(shí)間固定。
[0141]若偽數(shù)字證書簽發(fā)系統(tǒng)是一個(gè)運(yùn)行于用戶端的偽數(shù)字證書簽發(fā)工具,要做到不同用戶的偽數(shù)字證書簽發(fā)工具所使用的證書簽發(fā)CA及其上級CA的CA證書的簽發(fā)者名、主題名和序列號相同,而證書簽發(fā)CA及其上級CA的CA證書的密鑰對不同,不是一件困難的事情,只要每個(gè)用戶端的偽數(shù)字證書簽發(fā)工具各自獨(dú)立地生成證書簽發(fā)CA及其上級CA的CA證書(包括根CA證書)的密鑰對,且使得各自生成的CA證書使用預(yù)先約定的簽發(fā)者名、主題名和序列號即可。
[0142]由于目前的絕大部分密碼應(yīng)用程序和標(biāo)準(zhǔn)密碼模塊接口都支持RSA算法和RSA數(shù)字證書,而很多密碼應(yīng)用程序或標(biāo)準(zhǔn)密碼模塊接口尚不支持ECC算法和ECC數(shù)字證書,故現(xiàn)階段最好采用RSA實(shí)施偽公鑰和偽RSA數(shù)字證書。[0143]需要指出的是,如果基于RSA公鑰實(shí)施本發(fā)明的用于ECC密鑰操作和密碼運(yùn)算的偽公鑰和偽數(shù)字證書,則實(shí)施得到的偽公鑰和偽數(shù)字證書與發(fā)明“一種基于偽RSA密鑰的新近公開密鑰加密算法的應(yīng)用實(shí)現(xiàn)方法”(專利號:201110248050.8)中針對ECC算法實(shí)施得到的偽RSA公鑰和偽RSA數(shù)字證書是完全不同的,這是因?yàn)?,本發(fā)明的偽公鑰數(shù)據(jù)包括偽數(shù)字證書上的偽公鑰數(shù)據(jù)中并沒有包含真正的ECC公鑰,而是身份標(biāo)識及其他信息,而發(fā)明201110248050.8中針對ECC算法實(shí)施得到的偽RSA公鑰數(shù)據(jù)包括偽RSA數(shù)字證書上的偽公鑰數(shù)據(jù)中包含有真正的ECC公鑰。
[0144]確定了偽公鑰和偽數(shù)字證書的實(shí)施方案后,基于現(xiàn)有的信息系統(tǒng)開發(fā)技術(shù),如C/C++、Java、C#.NET等,開發(fā)一個(gè)實(shí)現(xiàn)本發(fā)明所述功能的偽數(shù)字證書簽發(fā)系統(tǒng)不是一件困難的事情。偽數(shù)字證書簽發(fā)系統(tǒng)與偽數(shù)字證書簽發(fā)客戶端之間的協(xié)議可以自定義。
[0145]實(shí)施ECC密鑰生成系統(tǒng)的關(guān)鍵是計(jì)算一個(gè)擴(kuò)展身份標(biāo)識對應(yīng)的ECC密鑰對的ECC私鑰,并由此得到對應(yīng)的ECC公鑰或密鑰對。對于一個(gè)擴(kuò)展身份標(biāo)識對應(yīng)的ECC私鑰,可以采用如下散列值計(jì)算方案獲得:
[0146]HASH (<擴(kuò)展身份標(biāo)識> I I <種子數(shù)據(jù)>),
[0147]即將擴(kuò)展身份標(biāo)識與種子數(shù)據(jù)合并后計(jì)算散列值,然后從計(jì)算得到的散列值得到需要的ECC私鑰,比如,若散列值是160位,而ECC私鑰要求是128位,則可取散列值的前128位作為ECC私鑰;若散列值是160位,而ECC私鑰要求是160位,則可將散列值作為ECC私鑰。采用的散列算法可以是SHA-1、MD5或其他散列算法。如果所采用的散列算法的散列值的長度小于期望的ECC私鑰的長度(比如散列值是160位,ECC私鑰的長度是192位),則可以用兩個(gè)種子數(shù)據(jù)計(jì)算散列值,然后從兩個(gè)散列值合并后的數(shù)據(jù)中導(dǎo)出ECC私鑰?;蛘卟捎闷渌軌?qū)⒁粋€(gè)擴(kuò)展身份標(biāo)識唯一映射到一個(gè)ECC私鑰的算法。
[0148]實(shí)施密碼模塊是實(shí)施本發(fā)明的系統(tǒng)的關(guān)鍵。在實(shí)施時(shí)有一點(diǎn)需要注意,對于公開密鑰密碼算法而言,私鑰數(shù)據(jù)通常包含有公鑰,或者可以通過私鑰直接計(jì)算得到公鑰,因此,針對私鑰的操作和運(yùn)算與針對密鑰對的操作與運(yùn)算是等同的。
[0149]實(shí)施密碼模塊的一種方案是自定義密碼調(diào)用接口,并實(shí)現(xiàn)本發(fā)明所述功能以及其他需要的功能,包括涉及對稱密鑰、散列計(jì)算的功能。但是,采用這種方案的缺點(diǎn)是大部分的密碼應(yīng)用程序?qū)o法使用實(shí)施的密碼模塊進(jìn)行數(shù)據(jù)加密、解密,簽名、簽名驗(yàn)證,這是因?yàn)榇蟛糠值拿艽a應(yīng)用程序是通過標(biāo)準(zhǔn)密碼接口,如Windows CSP的CryptoSP1、PKCS#11等,來實(shí)現(xiàn)密碼功能調(diào)用(Windows實(shí)際上是通過CryptoAPI調(diào)用CSPjS CSP需實(shí)現(xiàn)CryptoSPI)。為了使得這些密碼應(yīng)用程序能使用本發(fā)明的密碼系統(tǒng),故需要基于這些標(biāo)準(zhǔn)密碼接口實(shí)施本發(fā)明的密碼模塊。下面以Windows CSP的CryptoSPI為例來說明,基于PKCS#11或其他標(biāo)準(zhǔn)密碼接口的實(shí)施方式類似。
[0150]Windows CSP是Windows操作系統(tǒng)中的提供密碼服務(wù)功能的模塊,全稱是Cryptographic Services Provider (密碼服務(wù)提供者),它采用的密碼接口為CryptoSPI??紤]到Windows的CSP架構(gòu)目前還不能很好地支持ECC算法,故可以采用RSA CSP來實(shí)施本發(fā)明的內(nèi)容,即所述偽公鑰是偽RSA公鑰,所述偽數(shù)字證書是偽RSA數(shù)字證書,而所述密碼模塊是一個(gè)支持RSA密碼接口的CSP。
[0151]采用基于RSA密碼接口的CSP實(shí)施本發(fā)明的密碼模塊時(shí),所有與RSA密鑰對有的密碼調(diào)用需要根據(jù)本發(fā)明的內(nèi)容作相應(yīng)的改變和實(shí)施,實(shí)施要點(diǎn)如下:[0152]I )RSA CSP中的RSA密鑰對密鑰對象(或密鑰容器)對應(yīng)于本發(fā)明的ECC密鑰組密鑰對象;
[0153]2)RSA CSP中的RSA公鑰密鑰對象對應(yīng)于本發(fā)明中的偽公鑰密鑰對象及其關(guān)聯(lián)的ECC公鑰組密鑰對象;
[0154]3 )本發(fā)明中的密鑰對象標(biāo)識符或者對應(yīng)于RSA CSP中的永久密鑰對象的永久密鑰對象標(biāo)識符,或者對應(yīng)于RSA CSP中的臨時(shí)密鑰對象的臨時(shí)密鑰對象標(biāo)識符,即密鑰句柄;相應(yīng)地,針對密鑰對象的操作或者是針對永久密鑰對象,或者是針對臨時(shí)密鑰對象,取決于對應(yīng)的RSA CSP調(diào)用接口采用的對象標(biāo)識符和對應(yīng)的密鑰對象;
[0155]4) RSA CSP中初始化一個(gè)RSA密鑰對的密鑰容器的接口調(diào)用,對應(yīng)的實(shí)施是在臨時(shí)存儲(chǔ)介質(zhì)(內(nèi)存)中創(chuàng)建一個(gè)臨時(shí)的ECC私鑰組或密鑰對組密鑰對象,包括將一個(gè)永久ECC私鑰組或密鑰對組密鑰對象通過創(chuàng)建臨時(shí)密鑰對象的方式裝載到臨時(shí)存儲(chǔ)介質(zhì)中(供使用);
[0156]5)操作調(diào)用A對應(yīng)于RSA CSP中創(chuàng)建一個(gè)RSA密鑰對密鑰對象的接口調(diào)用;
[0157]6)操作調(diào)用D對應(yīng)于RSA CSP中導(dǎo)出一個(gè)RSA密鑰對密鑰對象(密鑰容器中)的RSA密鑰對的接口調(diào)用;
[0158]7)操作調(diào)用G對應(yīng)于RSA CSP中從一個(gè)RSA密鑰對密鑰對象(密鑰容器中)導(dǎo)出公鑰的接口調(diào)用;
[0159]8)操作調(diào)用J對應(yīng)于RSA CSP中刪除永久存儲(chǔ)介質(zhì)上的一個(gè)RSA密鑰對密鑰對象或刪除(釋放)臨時(shí)存儲(chǔ)介質(zhì)上(內(nèi)存中)的一個(gè)RSA密鑰對密鑰對象的接口調(diào)用(取決于對應(yīng)的RSA CSP接口調(diào)用);
[0160]9)操作調(diào)用L對應(yīng)于RSA CSP中導(dǎo)入公鑰的接口調(diào)用;
[0161]10)操作調(diào)用M對應(yīng)于RSA CSP中針對RSA公鑰密鑰對象導(dǎo)出公鑰的接口調(diào)用;
[0162]11)操作調(diào)用N對應(yīng)于RSA CSP中刪除RSA公鑰密鑰對象的接口調(diào)用;
[0163]12)操作調(diào)用B、操作調(diào)用C、操作調(diào)用E、操作調(diào)用F、操作調(diào)用H、操作調(diào)用1、操作調(diào)用K在RSA CSP中沒有對應(yīng)的接口調(diào)用,需要通過標(biāo)準(zhǔn)接口之外額外定義的接口實(shí)現(xiàn);
[0164]13)其他與RSA密鑰對有關(guān)的密鑰操作調(diào)用,包括密鑰參數(shù)查詢,若無法實(shí)施,可以直接返回出錯(cuò)。
[0165]RSA CSP中所有與使用RSA公鑰、私鑰進(jìn)行密碼運(yùn)算的操作,包括加密、解密,簽名、簽名驗(yàn)證,按本發(fā)明給出的相應(yīng)方案實(shí)施。除此之外,還需要實(shí)施本發(fā)明中未描述但應(yīng)用過程中需要的其他密碼功能,包括與對稱密鑰、散列運(yùn)算有關(guān)的密鑰操作與密碼運(yùn)算功倉泛。
[0166]身份標(biāo)識限定策略的實(shí)施,與具體的限定策略有關(guān)。最常用的身份標(biāo)識限定策略是時(shí)間策略,通常是規(guī)定或限定擴(kuò)展身份標(biāo)識及其私鑰每間隔一段就進(jìn)行更新,這樣在數(shù)據(jù)加密或數(shù)字簽名時(shí)所用的擴(kuò)展身份標(biāo)識應(yīng)該是覆蓋當(dāng)前時(shí)刻的擴(kuò)展身份標(biāo)識,對應(yīng)的ECC公鑰或私鑰是覆蓋當(dāng)前時(shí)刻的擴(kuò)展身份標(biāo)識所對應(yīng)的ECC公鑰或私鑰;而在生成擴(kuò)展身份標(biāo)識對應(yīng)的ECC私鑰時(shí),當(dāng)前時(shí)刻必須不早于擴(kuò)展身份標(biāo)識中的起始時(shí)刻(起始時(shí)間)。因此,對于時(shí)間策略,生成一個(gè)身份標(biāo)識的與(預(yù)定或配置的)時(shí)間限定策略相對應(yīng)的擴(kuò)展身份標(biāo)識,即用覆蓋當(dāng)前時(shí)刻的時(shí)間段形成對應(yīng)的擴(kuò)展身份標(biāo)識;從ECC私鑰生成系統(tǒng)獲取ECC私鑰時(shí),ECC私鑰生成系統(tǒng)根據(jù)當(dāng)前時(shí)刻是否在擴(kuò)展身份標(biāo)識中的時(shí)間限定策略的起始時(shí)刻(起始時(shí)間)之后,來判斷當(dāng)前是否符合為用戶生成擴(kuò)展身份標(biāo)識對應(yīng)私鑰的條件。
[0167]如果預(yù)定或配置有角色策略,則生成一個(gè)身份標(biāo)識的與預(yù)定或配置的角色限定策略相對應(yīng)的擴(kuò)展身份標(biāo)識即把對應(yīng)的角色策略加入到生成的擴(kuò)展身份標(biāo)識中(以字串的形式);從ECC私鑰生成系統(tǒng)獲取ECC私鑰時(shí),ECC私鑰生成系統(tǒng)根據(jù)當(dāng)前用戶是否擁有對應(yīng)的角色來判斷當(dāng)前是否符合為用戶生成擴(kuò)展身份標(biāo)識對應(yīng)私鑰的條件。
[0168]通過分析,可以發(fā)現(xiàn),根據(jù)限定策略的取值,限定策略可分為兩類:動(dòng)態(tài)策略,靜態(tài)策略;前者出現(xiàn)在擴(kuò)展身份標(biāo)識中的數(shù)據(jù)值是可變的(如時(shí)間策略),或者根據(jù)情況可出現(xiàn)或者不出現(xiàn),后者是固定不變的(如角色)。故此,在生成一個(gè)身份標(biāo)識與預(yù)定或配置的限定策略相對應(yīng)的擴(kuò)展身份標(biāo)識的時(shí)候,需要根據(jù)當(dāng)前的情況確定動(dòng)態(tài)策略是否需要出現(xiàn),或者當(dāng)前出現(xiàn)的策略數(shù)據(jù)值是什么(如時(shí)間段的值),然后將需要出現(xiàn)的動(dòng)態(tài)策略及其數(shù)據(jù)值按事先約定順序的加入到擴(kuò)展身份標(biāo)識;對于靜態(tài)策略總是將其按事先約定順序的加入到擴(kuò)展身份標(biāo)識中;從ECC私鑰生成系統(tǒng)獲取ECC私鑰時(shí),ECC私鑰生成系統(tǒng)根據(jù)當(dāng)前情況判斷擴(kuò)展身份標(biāo)識中出現(xiàn)的動(dòng)態(tài)策略和靜態(tài)策略的約束要求是否得到滿足,從而判斷當(dāng)前是否符合為用戶生成擴(kuò)展身份標(biāo)識對應(yīng)私鑰的條件(實(shí)施者可根據(jù)具體實(shí)施的限定策略的類型,以及自身的需要,確定如何根據(jù)當(dāng)前情況判斷擴(kuò)展身份標(biāo)識中出現(xiàn)的動(dòng)態(tài)策略和靜態(tài)策略的約束要求是否得到滿足)。
[0169]關(guān)于通過策略對身份標(biāo)識及其密鑰的使用可參考其他文獻(xiàn)。
[0170]對于將擴(kuò)展 身份標(biāo)識的信息作為附加數(shù)據(jù)或填充數(shù)據(jù)附加或填充到被加密的數(shù)據(jù)或被簽名的數(shù)據(jù)中的實(shí)施方案描述如下。
[0171]若偽公鑰和偽數(shù)字證書是基于RSA算法實(shí)現(xiàn),則由于經(jīng)RSA密鑰密碼運(yùn)算后的數(shù)據(jù),如RSA公鑰加密后的對稱密鑰(加密數(shù)據(jù)),RSA私鑰密碼運(yùn)算(簽名)后的散列值(簽名數(shù)據(jù)),比經(jīng)ECC密鑰密碼運(yùn)算后的對應(yīng)數(shù)據(jù)要長很多,故可以采用將擴(kuò)展身份標(biāo)識的信息作為填充數(shù)據(jù)附加在經(jīng)ECC密鑰密碼運(yùn)算后的數(shù)據(jù)之后,使得填充后的經(jīng)ECC密鑰密碼運(yùn)算后的數(shù)據(jù)的長度與經(jīng)RSA密鑰密碼運(yùn)算后的數(shù)據(jù)具有同樣的長度(邊界對齊)。由于,密碼應(yīng)用程序通常是不會(huì)檢查經(jīng)RSA密鑰密碼運(yùn)算后的數(shù)據(jù)的長度的(即是否具有固定),因此,可以將擴(kuò)展身份標(biāo)識的信息作為附加數(shù)據(jù)附加在經(jīng)ECC密鑰密碼運(yùn)算后的數(shù)據(jù)之后,而不用考慮長度或邊界對齊的問題(若要考慮長度或邊界對齊則是填充數(shù)據(jù))。
[0172]若偽公鑰和偽數(shù)字證書是基于ECC算法實(shí)現(xiàn),則可將擴(kuò)展身份標(biāo)識的信息作為附加數(shù)據(jù)附加在經(jīng)ECC密鑰密碼運(yùn)算后的數(shù)據(jù)之后。
[0173]附加或填充到被加密的數(shù)據(jù)或被簽名的數(shù)據(jù)中的擴(kuò)展身份標(biāo)識的信息,必須包括限定策略的原始信息(如時(shí)間區(qū)間),或者能夠恢復(fù)限定策略原始信息的指示信息(如用數(shù)字0、1、3…代表不同的角色等);擴(kuò)展身份標(biāo)識對應(yīng)的身份標(biāo)識本身由于具有不固定的長度且可能很長,故擴(kuò)展身份標(biāo)識對應(yīng)的身份標(biāo)識本身是不放在被加密的數(shù)據(jù)或被簽名的數(shù)據(jù)中的,可將其散列值放入其中。實(shí)際上,身份標(biāo)識的散列值也可不放在被加密的數(shù)據(jù)或被簽名的數(shù)據(jù)中,因?yàn)椋瑪?shù)據(jù)解密方或簽名驗(yàn)證方的密碼應(yīng)用程序可通過加密數(shù)據(jù)信封中或簽名數(shù)據(jù)結(jié)構(gòu)中的密鑰標(biāo)識信息(即數(shù)字證書的簽發(fā)者名、證書序列號)找到對應(yīng)的ECC私鑰組(或密鑰對組)密鑰對象或者ECC公鑰組密鑰對象。
[0174]確定了偽公鑰、偽數(shù)字證書、偽數(shù)字證書簽發(fā)系統(tǒng)及協(xié)議、ECC密鑰生成系統(tǒng)、密碼模塊的實(shí)施方案后,實(shí)施偽數(shù)字證書簽發(fā)系統(tǒng)不是意見困難的事情,可以基于成熟的桌面軟件開發(fā)技術(shù),如c/C++、C#.NET。
[0175]對于技術(shù)實(shí)現(xiàn)的其他方面,對于相關(guān)領(lǐng)域的技術(shù)開發(fā)者而言是不言自明的。
【權(quán)利要求】
1.一種基于標(biāo)識的橢圓曲線密碼系統(tǒng),所述密碼系統(tǒng)包括如下組件或數(shù)據(jù): 偽公鑰:一種公鑰數(shù)據(jù)結(jié)構(gòu),存放的不是數(shù)據(jù)結(jié)構(gòu)標(biāo)識的或約定的公開密鑰密碼算法的公鑰數(shù)據(jù),而是身份標(biāo)識信息及ECC系統(tǒng)參數(shù)信息;所述身份標(biāo)識信息指身份標(biāo)識字串本身或其散列值,所述ECC系統(tǒng)參數(shù)信息包括ECC密碼運(yùn)算所采用的橢圓曲線格式、域、系數(shù)以及基點(diǎn)的指示信息,即ECC系統(tǒng)參數(shù)的指示信息;一個(gè)所述偽公鑰對應(yīng)一個(gè)身份標(biāo)識及其所有擴(kuò)展身份標(biāo)識; 偽數(shù)字證書:一種X509格式的數(shù)字證書,數(shù)字證書上的證書持有者的公鑰不是數(shù)字證書上所指示的公開密鑰密碼算法的公鑰,而是證書持有者的身份標(biāo)識所對應(yīng)的偽公鑰;一張偽數(shù)字證書及其偽公鑰與證書持有者的身份標(biāo)識及其所有擴(kuò)展的身份標(biāo)識相對應(yīng);所述偽數(shù)字證書的有效期長度及起始、終止時(shí)間的設(shè)定沒有限定要求,只要超過偽數(shù)字證書所對應(yīng)的身份標(biāo)識的所有擴(kuò)展身份標(biāo)識所對應(yīng)的ECC私鑰或密鑰對的使用期限即可; ECC密鑰生成系統(tǒng):通過計(jì)算得到一個(gè)擴(kuò)展身份標(biāo)識對應(yīng)的ECC公鑰、ECC私鑰或ECC密鑰對的系統(tǒng);所述ECC密鑰生成系統(tǒng)設(shè)置有隨機(jī)生成的用于ECC私鑰生成計(jì)算的種子數(shù)據(jù); 偽數(shù)字證書簽發(fā)系統(tǒng):生成并簽發(fā)一個(gè)身份標(biāo)識所對應(yīng)的偽數(shù)字證書的系統(tǒng); 偽數(shù)字證書簽發(fā)客戶端:供用戶使用,用于從偽數(shù)字證書簽發(fā)系統(tǒng)獲取用戶身份標(biāo)識所對應(yīng)的偽數(shù)字證書的用戶端軟件程序; 密碼模塊:提供密鑰操作與密碼運(yùn)算功能的軟件組件或軟硬件組合,所述密鑰操作包括密鑰生成、導(dǎo)入、導(dǎo)出和刪除,所述密碼運(yùn)算包括加密和解密,簽名和簽名驗(yàn)證;所述密碼模塊通過密碼接口對外提供密鑰操作與密碼運(yùn)算功能的調(diào)用; 密碼應(yīng)用程序:調(diào)用密碼模塊進(jìn)行密鑰操作,包括生成、導(dǎo)出、導(dǎo)入和刪除,以及調(diào)用密碼模塊使用公鑰或私鑰進(jìn)行加密或解密,簽名驗(yàn)證或數(shù)字簽名密碼運(yùn)算的軟件程序; 所述密碼模塊在存儲(chǔ)介質(zhì)中為`用戶或密碼應(yīng)用程序使用的每一個(gè)身份標(biāo)識維護(hù)一個(gè)存放ECC公鑰組的密鑰對象,稱為ECC公鑰組密鑰對象;所述ECC公鑰組密鑰對象的ECC公鑰組中存放有一系列由同一個(gè)身份標(biāo)識的擴(kuò)展身份標(biāo)識所生成的ECC公鑰;一個(gè)所述ECC公鑰組及其密鑰對象與一個(gè)對應(yīng)相同身份標(biāo)識的偽公鑰和偽數(shù)字證書相對應(yīng);所述ECC公鑰組密鑰對象作為一個(gè)密鑰對象用一個(gè)密鑰對象標(biāo)識符標(biāo)識; 當(dāng)所述密碼模塊在存儲(chǔ)介質(zhì)中創(chuàng)建一個(gè)偽公鑰的密鑰對象時(shí),將所創(chuàng)建的偽公鑰密鑰對象關(guān)聯(lián)到對應(yīng)的具有相同身份標(biāo)識的ECC公鑰組的密鑰對象;密碼應(yīng)用程序通過使用偽公鑰的密鑰對象使用偽公鑰對應(yīng)的ECC公鑰組密鑰對象的ECC公鑰組中的ECC公鑰進(jìn)行密碼運(yùn)算,包括數(shù)據(jù)加密和簽名驗(yàn)證;所述密碼模塊所創(chuàng)建的偽公鑰的密鑰對象稱為偽公鑰密鑰對象; 所述密碼模塊在存儲(chǔ)介質(zhì)中為用戶或密碼應(yīng)用程序使用的每一個(gè)身份標(biāo)識維護(hù)一個(gè)存放ECC私鑰組或密鑰對組的密鑰對象,稱為ECC私鑰組或密鑰對組密鑰對象;所述ECC私鑰組或密鑰對組密鑰對象的ECC私鑰組或密鑰對組中存放有一系列由同一個(gè)身份標(biāo)識的一個(gè)擴(kuò)展身份標(biāo)識所生成的ECC私鑰或公鑰對;一個(gè)所述ECC私鑰組或密鑰對組及其密鑰對象與一個(gè)對應(yīng)相同身份標(biāo)識的偽公鑰和偽數(shù)字證書相對應(yīng);一個(gè)所述ECC私鑰組或密鑰對組密鑰對象作為一個(gè)密鑰對象用一個(gè)密鑰對象標(biāo)識符標(biāo)識,并通過密鑰對象標(biāo)識符被當(dāng)作對應(yīng)的偽公鑰和偽數(shù)字證書的對應(yīng)私鑰或密鑰對使用;所述ECC公鑰組或ECC私鑰組或密鑰對組的密鑰對象數(shù)據(jù)中,除了保存有每個(gè)擴(kuò)展身份標(biāo)識對應(yīng)的ECC公鑰或ECC私鑰或密鑰對外,還保存有對應(yīng)的身份標(biāo)識信息以及每個(gè)ECC公鑰或ECC私鑰或密鑰對所對應(yīng)的擴(kuò)展身份標(biāo)識信息; 所述密鑰對象指各種密鑰包括公鑰、私鑰、密鑰對以及對稱密鑰在密碼模塊中的數(shù)據(jù)存在形式;所述密鑰對象包括存儲(chǔ)在永久存儲(chǔ)介質(zhì)上的永久密鑰對象和存儲(chǔ)在臨時(shí)存儲(chǔ)介質(zhì)上的臨時(shí)密鑰對象,并分別對應(yīng)有永久密鑰對象標(biāo)識符和臨時(shí)密鑰對象標(biāo)識符; 所述密碼模塊和ECC密鑰生成系統(tǒng)預(yù)定或配置有身份標(biāo)識限定策略;密碼模塊處的身份標(biāo)識限定策略規(guī)定或限定了在數(shù)據(jù)加密或數(shù)字簽名時(shí)一個(gè)身份標(biāo)識所對應(yīng)的擴(kuò)展身份標(biāo)識,即規(guī)定或限定了在數(shù)據(jù)加密時(shí)所采用的ECC公鑰所對應(yīng)的擴(kuò)展身份標(biāo)識或在數(shù)字簽名時(shí)所采用的ECC私鑰所對應(yīng)的擴(kuò)展身份標(biāo)識,也即在數(shù)據(jù)加密或數(shù)字簽名時(shí)哪一個(gè)擴(kuò)展身份標(biāo)識所對應(yīng)的ECC公鑰或ECC私鑰被采用;ECC密鑰生成系統(tǒng)處的身份標(biāo)識限定策略規(guī)定或限定了在生成一個(gè)擴(kuò)展身份標(biāo)識對應(yīng)的ECC私鑰時(shí)需要滿足的必要條件;所述預(yù)定的身份標(biāo)識限定策略指已編碼在程序中的不能更改的身份標(biāo)識限定策略;所述配置的身份標(biāo)識限定策略指可修改、設(shè)定的身份標(biāo)識限定策略; 所述密碼應(yīng)用程序按使用公鑰及其對應(yīng)私鑰或密鑰對的方式使用偽公鑰及其對應(yīng)的私鑰或密鑰對,包括使用偽公鑰及其對應(yīng)私鑰或密鑰對的密鑰對象; 所述密碼應(yīng)用程序按使用 數(shù)字證書及其對應(yīng)私鑰或密鑰對的方式使用偽數(shù)字證書及其對應(yīng)私鑰或密鑰對,包括使用偽數(shù)字證書對應(yīng)私鑰或密鑰對的密鑰對象; 若密碼應(yīng)用程序不使用數(shù)字證書而是直接使用公鑰或私鑰或密鑰對進(jìn)行數(shù)據(jù)加密和解密,簽名和簽名驗(yàn)證,則所述偽數(shù)字證書、偽數(shù)字證書簽發(fā)系統(tǒng)以及偽數(shù)字證書簽發(fā)客戶端不再存在; 若僅密碼應(yīng)用程序從所述偽數(shù)字證書簽發(fā)系統(tǒng)獲取偽數(shù)字證書,則所述偽數(shù)字證書簽發(fā)客戶端不再存在。
2.根據(jù)權(quán)利要求1所述的基于標(biāo)識的橢圓曲線密碼系統(tǒng),其特征是: 當(dāng)所述偽數(shù)字證書簽發(fā)客戶端或密碼應(yīng)用程序調(diào)用所述密碼模塊的密鑰操作接口進(jìn)行針對公鑰或私鑰或密鑰對的密鑰操作時(shí),所述密碼模塊針對不同的密鑰操作接口調(diào)用分別按如下方式進(jìn)行處理: 操作調(diào)用A:對于生成私鑰或密鑰對的接口調(diào)用,在存儲(chǔ)介質(zhì)中創(chuàng)建一個(gè)包括一個(gè)空的ECC私鑰組或密鑰對組的密鑰對象,并將通過人機(jī)界面獲得的身份標(biāo)識信息保存在新生成的密鑰對象中,然后將返回的密鑰對象標(biāo)識符指向新生成的ECC私鑰組或密鑰對組的密鑰對象;或者生成一個(gè)所述偽公鑰的數(shù)據(jù)結(jié)構(gòu)所標(biāo)識的或約定的公開密鑰密碼算法的私鑰或密鑰對的密鑰對象,然后將返回的密鑰對象標(biāo)識符指向新生成的密鑰對象;所述操作調(diào)用是生成一個(gè)ECC私鑰組或密鑰對組的密鑰對象,還是生成一個(gè)所述偽公鑰的數(shù)據(jù)結(jié)構(gòu)所標(biāo)識的或約定的公開密鑰密碼算法的私鑰或密鑰對的密鑰對象,由用戶通過人機(jī)界面選擇決定,或者由所述密碼模塊的配置信息決定,或者由密碼模塊程序固定設(shè)定; 操作調(diào)用B:對于生成私鑰組或密鑰對組的接口調(diào)用,在存儲(chǔ)介質(zhì)中創(chuàng)建一個(gè)包括一個(gè)空的ECC私鑰組或密鑰對組的密鑰對象,并將通過調(diào)用接口或人機(jī)界面獲得的身份標(biāo)識信息保存在新生成的密鑰對象中,然后將返回的密鑰對象標(biāo)識符指向新生成的ECC私鑰組或密鑰對組的密鑰對象;操作調(diào)用C:對于生成ECC公鑰組的接口調(diào)用,在存儲(chǔ)介質(zhì)中創(chuàng)建一個(gè)包括一個(gè)空的ECC公鑰組的密鑰對象,并將通過調(diào)用接口或人機(jī)界面獲得的身份標(biāo)識信息保存在新生成的密鑰對象中,然后將返回的密鑰對象標(biāo)識符指向新生成的ECC公鑰組的密鑰對象; 操作調(diào)用D:對于使用ECC私鑰組或密鑰對組密鑰對象的密鑰對象標(biāo)識符導(dǎo)出私鑰或密鑰對的接口調(diào)用,返回出錯(cuò); 操作調(diào)用E:對于使用ECC私鑰組或密鑰對組密鑰對象的密鑰對象標(biāo)識符導(dǎo)出ECC私鑰組或密鑰對組的接口調(diào)用,返回密鑰對象標(biāo)識符指向的密鑰對象的ECC私鑰組或密鑰對組中所有ECC私鑰或密鑰對,以及對應(yīng)的身份標(biāo)識和擴(kuò)展身份標(biāo)識信息; 操作調(diào)用F:對于使用ECC公鑰組密鑰對象的密鑰對象標(biāo)識符導(dǎo)出ECC公鑰組的接口調(diào)用,返回密鑰對象標(biāo)識符指向的密鑰對象的ECC公鑰組中所有ECC公鑰,以及對應(yīng)的身份標(biāo)識和擴(kuò)展身份標(biāo)識信息; 操作調(diào)用G:對于使用ECC私鑰組或密鑰對組密鑰對象的密鑰對象標(biāo)識符導(dǎo)出公鑰的接口調(diào)用,從密鑰對象標(biāo)識符指向的密鑰對象中獲取對應(yīng)的身份標(biāo)識,生成身份標(biāo)識對應(yīng)的偽公鑰,然后返回生成的偽公鑰; 操作調(diào)用H:對于導(dǎo)入ECC公鑰組的接口調(diào)用,在存儲(chǔ)介質(zhì)中創(chuàng)建一個(gè)ECC公鑰組的密鑰對象,并將通過調(diào)用接口輸入的要導(dǎo)入的ECC公鑰組中的所有ECC公鑰以及對應(yīng)的身份標(biāo)識和擴(kuò)展身份標(biāo)識信息加入到新創(chuàng)建的密鑰對象中,然后將返回的密鑰對象標(biāo)識符指向新生成的ECC公鑰組密鑰對象; 操作調(diào)用1:對于導(dǎo)入ECC私鑰組或密鑰對組的接口調(diào)用,在存儲(chǔ)介質(zhì)中創(chuàng)建一個(gè)ECC私鑰組或密鑰對組的密鑰對象,并將通過調(diào)用接口輸入的要導(dǎo)入的ECC私鑰組或密鑰對組中的所有ECC私鑰或密鑰對以及對應(yīng)的身份標(biāo)識和擴(kuò)展身份標(biāo)識信息加入到新創(chuàng)建的密鑰對象中,然后將返回的密鑰對象標(biāo)識符指向新生成的ECC私鑰組或密鑰對組的密鑰對象;` 操作調(diào)用J:對于使用ECC私鑰組或密鑰對組的密鑰對象的密鑰對象標(biāo)識符刪除私鑰或密鑰對密鑰對象的接口調(diào)用,在存儲(chǔ)介質(zhì)中清除對象標(biāo)識符所指的密鑰對象; 操作調(diào)用K:對于使用ECC公鑰組的密鑰對象的密鑰對象標(biāo)識符刪除公鑰組的接口調(diào)用,在存儲(chǔ)介質(zhì)中清除密鑰對象標(biāo)識符所指的密鑰對象; 操作調(diào)用L:對于導(dǎo)入公鑰的接口調(diào)用,檢查導(dǎo)入的公鑰是否是偽公鑰,如果不是,則按導(dǎo)入正常的公鑰的方式完成導(dǎo)入公鑰的處理;否則,按如下方式處理: 步驟L1:在存儲(chǔ)介質(zhì)中創(chuàng)建一個(gè)偽公鑰的密鑰對象,將要導(dǎo)入的偽公鑰保存在創(chuàng)建的偽公鑰密鑰對象中; 步驟L2:從偽公鑰中獲取身份標(biāo)識信息; 步驟L3:查看存儲(chǔ)介質(zhì)中是否已有身份標(biāo)識對應(yīng)的ECC公鑰組密鑰對象,若是,則將步驟LI創(chuàng)建的偽公鑰的密鑰對象與對應(yīng)的ECC公鑰組密鑰對象相關(guān)聯(lián),并將返回的密鑰對象標(biāo)識符指向創(chuàng)建的偽公鑰的密鑰對象,完成偽公鑰的導(dǎo)入處理;否則,返回出錯(cuò); 操作調(diào)用M:對于使用偽公鑰密鑰對象的密鑰對象標(biāo)識符導(dǎo)出公鑰的接口調(diào)用,導(dǎo)出密鑰對象標(biāo)識符指向的偽公鑰密鑰對象中的偽公鑰; 操作調(diào)用N:對于使用偽公鑰密鑰對象的密鑰對象標(biāo)識符刪除公鑰密鑰對象的接口調(diào)用,在存儲(chǔ)介質(zhì)中清除密鑰對象標(biāo)識符所指的偽公鑰密鑰對象。
3.根據(jù)權(quán)利要求1所述的基于標(biāo)識的橢圓曲線密碼系統(tǒng),其特征是: 當(dāng)所述密碼應(yīng)用程序使用偽公鑰密鑰對象的密鑰對象標(biāo)識符調(diào)用所述密碼模塊進(jìn)行數(shù)據(jù)加密操作時(shí),所述密碼模塊按如下方式進(jìn)行處理: 第I步:從密鑰對象標(biāo)識符所指的偽公鑰密鑰對象中獲取對應(yīng)的身份標(biāo)識,用獲取的身份標(biāo)識生成一個(gè)與預(yù)定或配置的身份標(biāo)識限定策略相對應(yīng)的擴(kuò)展身份標(biāo)識; 第2步:查看密鑰對象標(biāo)識符指向的偽公鑰密鑰對象所關(guān)聯(lián)的ECC公鑰組密鑰對象的ECC公鑰組中是否有所述第I步生成的擴(kuò)展身份標(biāo)識對應(yīng)的ECC公鑰,若沒有,轉(zhuǎn)入第3步;若有,則從所關(guān)聯(lián)的ECC公鑰組密鑰對象的ECC公鑰組中獲得對應(yīng)的ECC公鑰,然后轉(zhuǎn)入第5步; 第3步:使用所述第I步生成的擴(kuò)展身份標(biāo)識從ECC密鑰生成系統(tǒng)請求獲取擴(kuò)展身份標(biāo)識對應(yīng)的ECC公鑰; 第4步:將獲得的ECC公鑰及對應(yīng)的擴(kuò)展身份標(biāo)識及加入到當(dāng)前使用的偽公鑰密鑰對象所關(guān)聯(lián)的ECC公鑰組密鑰對象的ECC公鑰組中; 第5步:使用獲得的ECC公鑰對數(shù)據(jù)進(jìn)行加密,并將當(dāng)前使用的ECC公鑰對應(yīng)的擴(kuò)展身份標(biāo)識的信息作為附加數(shù)據(jù)或填充數(shù)據(jù)附加或填充到被加密的數(shù)據(jù)中,完成處理后返回結(jié)果; 所述第5步中將當(dāng)前使用的ECC公鑰對應(yīng)的擴(kuò)展身份標(biāo)識的信息作為附加數(shù)據(jù)或填充數(shù)據(jù)附加或填充到被加密的數(shù)據(jù)中的操作處理,是指將擴(kuò)展身份標(biāo)識信息加入到經(jīng)ECC公鑰密碼運(yùn)算后的數(shù)據(jù)本身中,而不是作為加密密鑰的密鑰標(biāo)識信息或密鑰標(biāo)識信息的一部分放入到加密數(shù)據(jù)信封的接收者信息中。
4.根據(jù)權(quán)利要求1所述的基于標(biāo)識的橢圓曲線密碼系統(tǒng),其特征是: 當(dāng)所述密碼應(yīng)用程序使用ECC私鑰組或密鑰對組密鑰對象的密鑰對象標(biāo)識符調(diào)用所述密碼模塊進(jìn)行數(shù)據(jù)解密操作時(shí),所述密碼模塊按如下方式進(jìn)行處理: 第A步:通過加密數(shù)據(jù)的附加數(shù)據(jù)或填充數(shù)據(jù)獲得數(shù)據(jù)加密時(shí)所用ECC公鑰的對應(yīng)擴(kuò)展身份標(biāo)識; 第B步:查看密鑰對象標(biāo)識符指向的密鑰對象的ECC私鑰組或密鑰對組中是否有所述第A步獲得的擴(kuò)展身份標(biāo)識對應(yīng)的ECC私鑰或密鑰對,若沒有,轉(zhuǎn)入第C步;若有,則從密鑰對象標(biāo)識符指向的密鑰對象的ECC私鑰組或密鑰對組中獲得對應(yīng)的ECC私鑰或密鑰對,然后轉(zhuǎn)入第E步; 第C步:使用所述第A步獲得的擴(kuò)展身份標(biāo)識從ECC密鑰生成系統(tǒng)請求獲取擴(kuò)展身份標(biāo)識對應(yīng)的ECC私鑰或密鑰對; 第D步:將獲得的ECC私鑰或密鑰對及對應(yīng)的擴(kuò)展身份標(biāo)識及加入到當(dāng)前使用的ECC私鑰組或密鑰對組密鑰對象的ECC私鑰組或密鑰對組中; 第E步:使用獲得的ECC私鑰或密鑰對中的私鑰解密加密的數(shù)據(jù),完成處理后返回結(jié)果O
5.根據(jù)權(quán)利要求1所述的基于標(biāo)識的橢圓曲線密碼系統(tǒng),其特征是: 當(dāng)所述密碼應(yīng)用程序使用ECC私鑰組或密鑰對組的密鑰對象的密鑰對象標(biāo)識符調(diào)用所述密碼模塊對數(shù)據(jù)進(jìn)行數(shù)字簽名操作時(shí),所述密碼模塊按如下方式進(jìn)行處理: 步驟1:從密鑰對象標(biāo)識符所指的ECC私鑰組或密鑰對組密鑰對象中獲取的對應(yīng)身份標(biāo)識,用獲取的身份標(biāo)識生成一個(gè)與預(yù)定或配置的身份標(biāo)識限定策略相對應(yīng)的擴(kuò)展身份標(biāo)識; 步驟2:查看密鑰對象標(biāo)識符指向的ECC私鑰組或密鑰對組密鑰對象的ECC私鑰組或密鑰對組中是否有所述步驟I生成的擴(kuò)展身份標(biāo)識對應(yīng)的ECC私鑰或密鑰對,若沒有,轉(zhuǎn)入步驟3 ;若有,則從密鑰對象標(biāo)識符指向的ECC私鑰組或密鑰對組密鑰對象的ECC私鑰組或密鑰對組中獲得對應(yīng)的ECC私鑰或密鑰對,然后轉(zhuǎn)入步驟5 ; 步驟3:使用所述步驟I生成的擴(kuò)展身份標(biāo)識從ECC密鑰生成系統(tǒng)請求獲取擴(kuò)展身份標(biāo)識對應(yīng)的ECC私鑰或密鑰對; 步驟4:將獲得的對應(yīng)ECC私鑰或密鑰對及對應(yīng)的擴(kuò)展身份標(biāo)識及加入到當(dāng)前使用的ECC私鑰組或密鑰對組中; 步驟5:使用獲得的ECC私鑰或密鑰對中的私鑰對數(shù)據(jù)進(jìn)行數(shù)字簽名,將當(dāng)前使用的ECC私鑰或密鑰對所對應(yīng)的擴(kuò)展身份標(biāo)識的信息作為附加數(shù)據(jù)或填充數(shù)據(jù)附加或填充到被簽名的數(shù)據(jù)中,完成處理后返回結(jié)果; 所述步驟5中將當(dāng)前使用的ECC私鑰或密鑰對所對應(yīng)的擴(kuò)展身份標(biāo)識的信息作為附加數(shù)據(jù)或填充數(shù)據(jù)附加或填充到被簽名的數(shù)據(jù)中的操作處理,是指將擴(kuò)展身份標(biāo)識信息加入到經(jīng)ECC私鑰密碼算后的數(shù)據(jù)本身中,而不是作為簽名者密鑰標(biāo)識信息或密鑰標(biāo)識信息的一部分放入到簽名后形成的數(shù)據(jù)結(jié)構(gòu)的簽名者信息中。
6.根據(jù)權(quán)利要求1所述的基于標(biāo)識的橢圓曲線密碼系統(tǒng),其特征是: 當(dāng)所述密碼應(yīng)用程序使用偽公鑰密鑰對象的密鑰對象標(biāo)識符調(diào)用所述密碼模塊對簽名數(shù)據(jù)進(jìn)行簽名驗(yàn)證操作時(shí),所述密碼模塊按如下方式進(jìn)行處理: 步驟A:通過簽名數(shù)據(jù)的附加數(shù)據(jù)或填充數(shù)據(jù)獲得簽名時(shí)所用ECC私鑰的對應(yīng)擴(kuò)展身份標(biāo)識; 步驟B:查看密鑰對象標(biāo)識符指向的偽公鑰密鑰對象所關(guān)聯(lián)的ECC公鑰組密鑰對象的ECC公鑰組中是否有所述步驟A中獲得的擴(kuò)展身份標(biāo)識對應(yīng)的ECC公鑰,若沒有,轉(zhuǎn)入步驟C ;若有,則從所關(guān)聯(lián)的ECC公鑰組密鑰對象的ECC公鑰組中獲得對應(yīng)的ECC公鑰,然后轉(zhuǎn)入步驟E ; 步驟C:使用所述步驟A獲得的擴(kuò)展身份標(biāo)識從ECC密鑰生成系統(tǒng)請求獲取擴(kuò)展身份標(biāo)識對應(yīng)的ECC公鑰; 步驟D:將獲得的對應(yīng)ECC公鑰及對應(yīng)擴(kuò)展身份標(biāo)識及加入到當(dāng)前使用的偽公鑰密鑰對象關(guān)聯(lián)的ECC公鑰組密鑰對象的ECC公鑰組中; 步驟E:使用獲得的ECC公鑰對簽名數(shù)據(jù)進(jìn)行簽名驗(yàn)證,完成處理后返回結(jié)果。
7.根據(jù)權(quán)利要求1所述的基于標(biāo)識的橢圓曲線密碼系統(tǒng),其特征是: 當(dāng)用戶通過所述偽數(shù)字證書簽發(fā)客戶端或密碼應(yīng)用程序從所述偽數(shù)字證書簽發(fā)系統(tǒng)請求獲取一張身份標(biāo)識對應(yīng)的偽數(shù)字證書時(shí),所述偽數(shù)字證書簽發(fā)系統(tǒng)按如下步驟進(jìn)行處理: 步驟1:查看內(nèi)存或數(shù)據(jù)庫中是否緩存有或保存有請求中的擴(kuò)展身份標(biāo)識對應(yīng)的偽數(shù)字證書,若有,則返回對應(yīng)的偽數(shù)字證書;否則,轉(zhuǎn)入步驟II ; 步驟I1:利用請求中的身份標(biāo)識信息生成對應(yīng)的偽公鑰,然后使用偽數(shù)字證書簽發(fā)CA的私鑰簽發(fā)一張證書持有者公鑰是偽公鑰的偽數(shù)字證書,之后將簽發(fā)的偽數(shù)字證書緩存在內(nèi)存中或保存在數(shù)據(jù)庫中,最后返回簽發(fā)的偽數(shù)字證書; 所述偽數(shù)字證書簽發(fā)系統(tǒng)針對同一身份標(biāo)識所簽發(fā)的偽數(shù)字證書的簽發(fā)者名和序列號相同。
8.根據(jù)權(quán)利要求1所述的基于標(biāo)識的橢圓曲線密碼系統(tǒng),其特征是: 若所述基于標(biāo)識的橢圓曲線密碼系統(tǒng)僅用于數(shù)據(jù)加密應(yīng)用,則所述偽數(shù)字證書簽發(fā)系統(tǒng)是一個(gè)獨(dú)立運(yùn)行的系統(tǒng),或者與所述偽數(shù)字證書簽發(fā)客戶端合并為一個(gè)運(yùn)行于用戶端的偽數(shù)字證書簽發(fā)工具; 若所述偽數(shù)字證書簽發(fā)系統(tǒng)與所述偽數(shù)字證書簽發(fā)客戶端合并為一個(gè)運(yùn)行于用戶端的偽數(shù)字證書簽發(fā)工具,則每個(gè)用戶或密碼應(yīng)用程序通過所述偽數(shù)字證書簽發(fā)工具獨(dú)立生成加密或解密所需的偽數(shù)字證書,包括帶私鑰和不帶私鑰的偽數(shù)字證書;不同用戶或密碼應(yīng)用程序通過所述偽數(shù)字證書簽發(fā)工具針對同一個(gè)身份標(biāo)識獨(dú)立生成的偽數(shù)字證書的簽發(fā)者名和序列號相同;不同用戶的偽數(shù)字證書簽發(fā)工具所使用的證書簽發(fā)CA及其上級CA的CA證書的簽發(fā)者名、主題名和序列號相同,但證書簽發(fā)CA及其上級CA的CA證書的密鑰對不同。
9.根據(jù)權(quán)利要求1所述的基于標(biāo)識的橢圓曲線密碼系統(tǒng),其特征是: 當(dāng)所述密碼模塊從ECC密鑰生成系統(tǒng)請求獲取一個(gè)擴(kuò)展身份標(biāo)識所對應(yīng)的ECC公鑰時(shí),所述ECC密鑰生成系統(tǒng)按如下步驟處理: 步驟一:查看內(nèi)存或數(shù) 據(jù)庫中是否緩存或保存有請求中的擴(kuò)展身份標(biāo)識對應(yīng)ECC公鑰,若有,則返回對應(yīng)的ECC公鑰;否則,轉(zhuǎn)入步驟二 ; 步驟二:將請求中的擴(kuò)展身份標(biāo)識與ECC密鑰生成系統(tǒng)的種子數(shù)據(jù)通過運(yùn)算生成擴(kuò)展身份標(biāo)識對應(yīng)的ECC私鑰,并進(jìn)而計(jì)算得到對應(yīng)的ECC公鑰,然后將計(jì)算得到的ECC公鑰緩存在內(nèi)存中或保存在數(shù)據(jù)庫中,最后返回計(jì)算得到的對應(yīng)的ECC公鑰; 若所述基于標(biāo)識的橢圓曲線密碼系統(tǒng)采用由兩個(gè)或兩個(gè)以上的使用相同ECC系統(tǒng)參數(shù)和不同種子數(shù)據(jù)的ECC密鑰生成系統(tǒng)通過分割方式生成ECC公鑰,則每個(gè)ECC密鑰生成系統(tǒng)生成的擴(kuò)展身份標(biāo)識對應(yīng)的ECC公鑰的橢圓曲線群和是最終的ECC公鑰。
10.根據(jù)權(quán)利要求1所述的基于標(biāo)識的橢圓曲線密碼系統(tǒng),其特征是: 當(dāng)所述密碼模塊從ECC密鑰生成系統(tǒng)請求獲取一個(gè)擴(kuò)展身份標(biāo)識所對應(yīng)的ECC私鑰或密鑰對時(shí),所述ECC密鑰生成系統(tǒng)按如下步驟處理: 第I步:驗(yàn)證和確認(rèn)請求方的用戶就是擴(kuò)展身份標(biāo)識對應(yīng)的身份標(biāo)識的擁有者,若驗(yàn)證通過,則轉(zhuǎn)入下一步;否則,返回拒絕,并給出拒絕的原因; 第II步:根據(jù)請求中的擴(kuò)展身份標(biāo)識中的限定策略確定當(dāng)前是否符合為用戶生成擴(kuò)展身份標(biāo)識對應(yīng)私鑰的條件,若是,則轉(zhuǎn)入下一步;否則,返回拒絕,并給出拒絕的原因; 第III步:將請求中的擴(kuò)展身份標(biāo)識與ECC密鑰生成系統(tǒng)的種子數(shù)據(jù)通過運(yùn)算生成擴(kuò)展身份標(biāo)識對應(yīng)的ECC私鑰,并返回生成的ECC私鑰; 若請求是生成ECC密鑰對,則由ECC密鑰生成系統(tǒng)利用生成的ECC私鑰計(jì)算得到對應(yīng)的ECC公鑰并返回生成和計(jì)算得到的ECC私鑰和公鑰,或者僅返回生成的ECC私鑰,由調(diào)用方的密碼模塊利用獲得的ECC私鑰計(jì)算得到對應(yīng)的ECC公鑰; 若所述基于標(biāo)識的橢圓曲線密碼系統(tǒng)采用由兩個(gè)或兩個(gè)以上的使用相同ECC系統(tǒng)參數(shù)和不同種子數(shù)據(jù)的ECC密鑰生成系統(tǒng)通過分割方式生成ECC私鑰,則每個(gè)ECC密鑰生成系統(tǒng)生成的擴(kuò)展身份標(biāo)識對應(yīng)的EC`C私鑰的代數(shù)和是最終ECC私鑰的ECC私鑰。
【文檔編號】H04L9/30GK103560882SQ201310520985
【公開日】2014年2月5日 申請日期:2013年10月29日 優(yōu)先權(quán)日:2013年10月29日
【發(fā)明者】龍毅宏 申請人:武漢理工大學(xué)