欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種基于標識的橢圓曲線密碼系統(tǒng)的制作方法

文檔序號:7774907閱讀:323來源:國知局
一種基于標識的橢圓曲線密碼系統(tǒng)的制作方法
【專利摘要】本發(fā)明涉及一種基于標識的橢圓曲線密碼系統(tǒng),所述系統(tǒng)包括偽公鑰、偽數(shù)字證書、ECC密鑰生成系統(tǒng)、偽數(shù)字證書簽發(fā)系統(tǒng)、偽數(shù)字證書簽發(fā)客戶端、密碼模塊、密碼應用程序。所述密碼系統(tǒng)通過將對應一個身份標識的偽公鑰與密碼模塊中對應同一身份標識的ECC公鑰組和ECC私鑰組相對應,從而將使用偽公鑰的密碼運算自動轉(zhuǎn)化成使用對應ECC公鑰組中相應公鑰的運算;將使用偽公鑰對應私鑰的密碼運算自動轉(zhuǎn)化成使用對應ECC私鑰組中對應私鑰的運算;且在沒有對應ECC公鑰或私鑰時,由密碼模塊自動獲取對應的ECC公鑰或私鑰。本發(fā)明的系統(tǒng)具有IBC的部分特點,但密碼算法比IBC簡單,且易于得到客戶端密碼硬件的支持,并能減少密鑰更新過程中用戶的干預。
【專利說明】—種基于標識的橢圓曲線密碼系統(tǒng)【技術領域】
[0001]本發(fā)明屬于信息安全【技術領域】,是一種具有IBCXIdentity Based Cryptography)部分特點的基于標識的的橢圓曲線密碼系統(tǒng)。
【背景技術】
[0002]在非對稱密鑰密碼體制(Asymmetric Key Cryptography)中,采用兩個不同但相互關聯(lián)的密鑰(密鑰對),其中一個可公開,稱為公鑰(Public Key),用于數(shù)據(jù)加密或簽名驗證,另一不公開,稱為私鑰(Private Key),用于數(shù)據(jù)解密或數(shù)字簽名,私鑰須由密鑰對的擁有者安全保管。由于一個密鑰可公開,因此,非對稱密鑰密碼體制又稱為公開密鑰密碼體制(Public Key Cryptography),其中的密鑰對又稱為公開密鑰對。相應地,非對稱密鑰密碼體制中的密碼算法稱為非對稱密鑰密碼算法或公開密鑰密碼算法。目前獲得廣泛應用的公開密鑰密碼算法包括以三個發(fā)明人Rivest, Shamir和Adleman命名的RSA算法,以及DSA(Digital Signature Algorithm)算法等;而 ECC (Elliptic CurveCryptography)捕圓曲線密碼算法也是最近幾年獲得重視并逐步獲得應用的公開密鑰密碼算法。
[0003]相對于數(shù)據(jù)加密方和解密方使用同一個密鑰的對稱密鑰密碼體制,公開密鑰密碼算法具有密鑰分發(fā)容易(公鑰可公開發(fā)布)的優(yōu)點,但其也存在算法實現(xiàn)較復雜、運算速度較慢的缺點。故此,在數(shù)據(jù)加密應用中,通常將二者結合起來使用:使用隨機生成的對稱密鑰和對稱密鑰密碼算法對數(shù)據(jù)加密,然后使用數(shù)據(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ù)。為了解決這一問題,人們提出了公開密鑰基礎設施(Public Key Infrastructure, PKI)安全技術體系。在PKI體系中,由一個數(shù)字證書認證中心(Certification Authority,CA)作為可信的第三方簽發(fā)數(shù)字證書(Digital Certificate)來進行用戶(實體)公鑰的發(fā)布(如通過LDAP 目錄服務,Lightweight Directory Access Protocol)。CA簽發(fā)的數(shù)字證書除了包含證書持有人的公鑰外,還包含有證書持有人的其他身份信息,如姓名、所屬組織、電子郵件地址等。這樣,在PKI體系中,一方要向另一方發(fā)送加密數(shù)據(jù),發(fā)送者需先通過一定的途徑,如從CA的公開證書目錄服務(LDAP),獲取接收者的(加密)數(shù)字證書,然后從數(shù)字證書中提取接收者的公鑰。
`[0005]在PKI體系中,要發(fā)送加密數(shù)據(jù),必須事先獲取接收方的(加密)數(shù)字證書,這對于許多普通用戶來說不是一件容易的事,這也是PKI技術體系在實際應用中存在的一個比較突出的問題,為了解決這一問題,人們提出了基于身份標識的密碼體制(Identity BasedCryptography, IBC)(也稱基于標識的密碼體制)。在IBC中,一個實體(如人)的一個身份標識就構成了一個公鑰(IBC公鑰),用于數(shù)據(jù)加密或簽名驗證,并對應一個私鑰(IBC私鑰),用于數(shù)據(jù)解密或數(shù)字簽名。身份標識對應的私鑰是由一個稱為私鑰生成器(Private KeyGenerator, PKG)的一個IBE密鑰服務器產(chǎn)生的。嚴格地說,IBC公鑰是由一個身份標識和一組IBC公開參數(shù)所組成,而IBC私鑰是由一個身份標識對應的私密數(shù)據(jù)和一組IBC公開參數(shù)所組成。IBC用于數(shù)據(jù)加密稱為IBE (Identity Based Cryptography,基于身份標識的加密);IBC用于數(shù)字簽名稱為IBS (Identity Based Signature)。但是,有時候人們把IBE與IBC等同(IBE同時包括加密與簽名,因為簽名、簽名驗證同樣可看作一種加密、解密運算)。
[0006]使用IBC進行數(shù)據(jù)加密時,數(shù)據(jù)加密方無需事先獲得數(shù)據(jù)解密方的數(shù)字證書或公鑰,只需事先知道唯一標識對方身份的一個標識(如身份證號、電子郵件地址等),然后基于這個身份識別結合一組公開參數(shù)就可以進行數(shù)據(jù)加密(通常是先用隨機產(chǎn)生的對稱密鑰加密數(shù)據(jù),然后用IBE公鑰加密隨機產(chǎn)生的對稱密鑰)。由于無需事先獲得數(shù)據(jù)解密方的數(shù)字證書或公鑰,這就大大提供了數(shù)據(jù)加密的易用性、方便性。進一步,除了易用性外,與PKI/CA相比,IBC具有如下有點:
[0007]I)密鑰管理與服務系統(tǒng)要簡單很多,只需一個用戶和標識管理系統(tǒng)加上一個PKG即可;
[0008]2)由于用戶的IBC私鑰是由PKG動態(tài)計算出來的,在用戶私鑰丟失時可方便地為用戶(在線)恢復私鑰,不像PKI/CA需要一個復雜的KMC (Key Management Center)系統(tǒng)為所有用戶生成、保存并恢復加密數(shù)字證書的私鑰(密鑰對),其中保存大量的用戶私鑰增加了系統(tǒng)的復雜性,以及增加了對系統(tǒng)安全性、可靠性的要求。
[0009]IBC還可以與各種身份標識或密鑰限定策略結合使用,形成各種基于策略(PolicyBased)的數(shù)據(jù)加密(或簽名),其中最常用的是將一個身份標識與一個時間段限定策略結合(時間策略),形成一個如下所示的擴展身份標識:
[0010]〈身份標識>I〈時間段〉,
[0011]這里,< 身份標識 > 指身份標識對應的字串,< 時間段 > 指相應時間段信息的字串(如用2013-8-28:2013-9-28,表示時間段2013年8月28日到2013年9月28,但這種表示不是唯一的,可根據(jù)需要約定),“ I I”表示身份標識字串和時間段字串的組合(可以是簡單的字串連接、合并,或者其他約定的組合方式,只要能唯一區(qū)分、表示擴展身份標識即可),時間段既可以是一個時間區(qū)間,也可以是一個時刻(起止時間相同)。擴展身份標識被當作一個通常的身份標識對應有一個IBC私鑰,并用于密碼運算。增加了時間段的擴展身份標識及其對應的私鑰僅在一段時間內(nèi)使用,這相當于用時間段對身份標識及其私鑰的使用進行了限定(限定身份標識和/或其私鑰僅在對應的時間段使用和有效)。通過時間段限定的擴展身份標識所對應的私鑰一旦被泄露,則僅會對相應時間段內(nèi)的密碼數(shù)據(jù)造成影響。時間段的長短可根據(jù)安全要求結合使用方便性綜合考慮,如可以按年、月、周、日更新。
[0012]除了采用時間段對身份標識的使用進行限定外,還可以增加其他的限定策略對標識的使用加以限定,如,
[0013]<身份標識> 11〈角色> 11〈時間段>,
[0014]這里,〈角色 > 是角色的字串表示,即限定只有擁有對應角色的用戶才能使用擴展身份標識對應的私鑰對加密數(shù)據(jù)進行解密,或者對數(shù)據(jù)進行數(shù)字簽名。[0015]需指出的是,在IBC的實際密碼運算中,并不是使用身份標識字串本身參與運算,而是使用身份標識的散列值=HASH (〈身份標識 >),這里HASH (…)表示散列值計算。
[0016]加了限定策略后,參與密碼運算的是擴展身份標識,這時,參與運算的散列值有兩種計算方式,一是采用如下的先拼接擴展身份標識,再計算散列值的方式:
[0017]HASH (<身份標識> I I〈時間段 >),或者,
[0018]HASH (<身份標識> I I〈角色> I I〈時間段? ;
[0019]二是采用如下先計算散列值,然后拼接,再計算散列值的方式:
[0020]HASH (HASH (< 身份標識 >)| HASH (< 時間段 >)),或者,
[0021]HASH (HASH (〈身份標識 >)I HASH (〈角色 >)| HASH (〈時間段 >))。
[0022]IBC有很多獨特的優(yōu)點,其中最突出的是改善用戶公鑰數(shù)據(jù)加密的易用性、方便性,但IBC應用也存在一定的問題,具體如下:
[0023]I)目前缺少統(tǒng)一的 密碼算法國際標準,導致缺少統(tǒng)一的IBC密碼產(chǎn)品認證標準,這樣妨礙了密碼設備的研制生產(chǎn)、銷售和使用;
[0024]2)沒有應用層的統(tǒng)一的標準(國際或工業(yè)標準),導致缺少應用支持,目前幾乎所有的主流標準應用都不支持IBC ;
[0025]3)由于相對普通的公開密鑰密碼算法,IBC的密碼運算多了復雜的配對運算,密碼運算量比較大,若在密碼硬件中進行密碼運算,則對密碼硬件的要求比較高,因此,目前還沒有像RSA、ECC那樣的進行客戶端密碼運算的合適的客戶端密碼硬件(如USB Key),目前的IBC USB Key基本上是不進行密碼運算的密鑰存儲Key。
[0026]ECC (Elliptic Curve Cryptography)橢圓曲線密碼算法是最近幾年獲得重視并逐步獲得應用的公開密鑰密碼算法,與目前仍然廣泛使用的RSA密碼算法相比,ECC具有密鑰長度短、運算量小等特點,已有相應的國際、國家、工業(yè)標準以及相應密碼產(chǎn)品認證規(guī)范,以及客戶端密碼硬件(如支持ECC的USB KeyXECC密碼算法是基于有限域(finite field)上的橢圓曲線的點所構成的加法群(Group)來實現(xiàn)密碼運算。在ECC中,首先選定一條橢圓曲線,包括曲線格式、域(field)和曲線系數(shù),并選定橢圓曲線上的一個稱為基點(basepoint)的公共點計算G,選定的橢圓曲線的格式、域、系數(shù)以及基點G構成了 ECC的系統(tǒng)參數(shù)(System Parameters), ECC系統(tǒng)參數(shù)是可公開的(也稱為ECC公開參數(shù));在選定了 ECC系統(tǒng)參數(shù)后,一個用戶ECC私鑰是一個隨機生成的整數(shù)d,其中d小于G的階(Order) (G的階是一個大素數(shù));d對應的公鑰是P=dG,其中dG是橢圓曲線上的點構成的加法群(group)中的倍乘(即d個G的累加和);(d,P)即構成了用戶的ECC密鑰對。
[0027]實際上,在ECC密碼體制中,也可以通過將一個擴展身份標識與一個ECC私鑰或密鑰對相對應,使之具有IBC的部分性質(zhì),有關方案如下:
[0028]由一個密鑰生成系統(tǒng)通過一個秘密的種子數(shù)據(jù)(如隨機字串)與一個擴展身份標識通過運算(如合并后的散列運算)得到一個ECC私鑰,并進而得到一個擴展身份標識對應的ECC公鑰或密鑰對;擴展身份標識中的限定策略用于限定ECC私鑰的生成、使用;
[0029]一個身份標識的擁有者可從密鑰生成系統(tǒng)獲取其擴展身份標識對應的ECC私鑰或密鑰對;一個ECC公鑰的信賴方,可從密鑰生成系統(tǒng)獲取其他個用戶擴展身份標識對應的ECC公鑰。
[0030]本發(fā)明的基于標識的橢圓曲線密碼系統(tǒng)是在以上方案的基礎上實現(xiàn)的。
【發(fā)明內(nèi)容】

[0031]本發(fā)明的目的是主要針對企業(yè)、機構內(nèi)部的應用,提出一種采用ECC橢圓曲線密碼算法,具有IBC密碼系統(tǒng)的部分特點,包括將一個ECC密鑰對與一個(擴展)身份標識相對應,通過限定策略限定對應ECC密鑰對的使用,由密碼服務系統(tǒng)根據(jù)用戶(擴展)身份標識計算生成或恢復對應的ECC私鑰或密鑰對,以及無需集中存儲用戶私鑰等特點的基于標識的橢圓曲線密碼系統(tǒng)。
[0032]為了實現(xiàn)上述目的,本發(fā)明所采用的技術方案是:
[0033]一種基于標識的橢圓曲線密碼系統(tǒng),所述密碼系統(tǒng)包括如下組件或數(shù)據(jù):
[0034]偽公鑰:一種公鑰數(shù)據(jù)結構,存放的不是數(shù)據(jù)結構標識的或約定的公開密鑰密碼算法的公鑰數(shù)據(jù),而是身份標識信息及ECC系統(tǒng)參數(shù)信息;所述身份標識信息指身份標識字串本身或其散列值,所述ECC系統(tǒng)參數(shù)信息包括ECC密碼運算所采用的橢圓曲線格式、域、系數(shù)及基點的指示信息(如通過一個URL或版本號指示),即ECC系統(tǒng)參數(shù)的指示信息;一個所述偽公鑰對應一個身份標識及其所有擴展身份標識;(比如一個公鑰數(shù)據(jù)結構原本標識或約定是用來存放RSA或ECC公鑰數(shù)據(jù)的,但實際上存放的不是RSA或ECC公鑰的密鑰數(shù)據(jù),而是身份標識信息及ECC系統(tǒng)參數(shù)信息)
[0035]偽數(shù)字證書:一種X509格式的數(shù)字證書,數(shù)字證書上的證書持有者(主題名對應的實體)的公鑰不是數(shù)字證書上所指示的公開密鑰密碼算法(如RSA或ECC)的公鑰,而是證書持有者的身份標識所對應的偽公鑰;一張偽數(shù)字證書及其偽公鑰與證書持有者的身份標識及其所有擴展的身份標識相對應;所述偽數(shù)字證書的有效期長度及起始、終止時間的設定沒有限定要求,只要超過偽數(shù)字證書所對應的身份標識的所有擴展身份標識所對應的ECC私鑰或密鑰對的使用期限即可(通常將有效期設置得很長,如50年,而將起始、終止時間固定);
[0036]ECC密鑰生成系統(tǒng):通過計算得到一個擴展身份標識對應的ECC公鑰、ECC私鑰或ECC密鑰對的系統(tǒng);所述ECC密鑰生成系統(tǒng)設置有隨機生成的用于ECC私鑰生成計算的種子數(shù)據(jù);
[0037]偽數(shù)字證書簽發(fā)系統(tǒng):生成并簽發(fā)一個身份標識所對應的偽數(shù)字證書的系統(tǒng);
[0038]偽數(shù)字證書簽發(fā)客戶端:供用戶使用,用于從偽數(shù)字證書簽發(fā)系統(tǒng)獲取用戶身份標識所對應的偽數(shù)字證書的用戶端軟件程序;
[0039]密碼模塊:提供密鑰操作與密碼運算功能的軟件組件或軟硬件組合,所述密鑰操作包括密鑰生成、導入、導出和刪除,所述密碼運算包括加密和解密,簽名和簽名驗證;所述密碼模塊通過密碼接口對外提供密鑰操作與密碼運算功能的調(diào)用;
[0040]密碼應用程序:調(diào)用密碼模塊進行密鑰操作(包括公鑰、私鑰或密鑰對的密鑰操作),包括生成、導出、導入和刪除,以及調(diào)用密碼模塊使用公鑰或私鑰進行加密或解密,簽名驗證或數(shù)字簽名密碼運算的軟件程序;
[0041]所述密碼模塊在存儲介質(zhì)中為用戶或密碼應用程序使用的每一個身份標識維護一個存放ECC公鑰組的密鑰對象,稱為ECC公鑰組密鑰對象;所述ECC公鑰組密鑰對象的ECC公鑰組中存放有一系列由同一個身份標識的擴展身份標識所生成的ECC公鑰;一個所述ECC公鑰組及其密鑰對象與一個對應相同身份標識的偽公鑰和偽數(shù)字證書相對應;所述ECC公鑰組密鑰對象作為一個密鑰對象用一個密鑰對象標識符(Key Object Identifier)標識;
[0042]當所述密碼模塊在存儲介質(zhì)中創(chuàng)建一個偽公鑰的密鑰對象時,將所創(chuàng)建的偽公鑰密鑰對象關聯(lián)到對應的具有相同身份標識的ECC公鑰組的密鑰對象;密碼應用程序通過使用偽公鑰的密鑰對象使用偽公鑰對應的ECC公鑰組密鑰對象的ECC公鑰組中的ECC公鑰進行密碼運算,包括數(shù)據(jù)加密和簽名驗證;所述密碼模塊所創(chuàng)建的偽公鑰的密鑰對象稱為偽公鑰密鑰對象;
[0043]所述密碼模塊在存儲介質(zhì)中為用戶或密碼應用程序使用的每一個身份標識維護一個存放ECC私鑰組或密鑰對組的密鑰對象,稱為ECC私鑰組或密鑰對組密鑰對象;所述ECC私鑰組或密鑰對組密鑰對象的ECC私鑰組或密鑰對組中存放有一系列由同一個身份標識的一個擴展身份標識所生成的ECC私鑰或公鑰對;一個所述ECC私鑰組或密鑰對組及其密鑰對象與一個對應相同身份標識的偽公鑰和偽數(shù)字證書相對應;一個所述ECC私鑰組或密鑰對組密鑰對象作為一個密鑰對象用一個密鑰對象標識符標識,并通過密鑰對象標識符被當作對應的偽公鑰和偽數(shù)字證書的對應私鑰或密鑰對使用(稱為影子私鑰或影子密鑰對);
[0044]所述ECC公鑰組或ECC私鑰組或密鑰對組的密鑰對象數(shù)據(jù)中,除了保存有每個擴展身份標識對應的ECC公鑰或ECC私鑰或密鑰對外,還保存有對應的身份標識信息以及每個ECC公鑰或ECC私鑰或密鑰對所對應的擴展身份標識信息;
[0045]所述密鑰對象指各種密鑰包括公鑰、私鑰、密鑰對以及對稱密鑰在密碼模塊中的數(shù)據(jù)存在形式;所述密鑰對象包括存儲在永久存儲介質(zhì)上(如硬盤、USB Key上)的永久密鑰對象和存儲在臨時存儲介質(zhì)上(如內(nèi)存中)的臨時密鑰對象,并分別對應有永久密鑰對象標識符(通常是字串)和臨時密鑰對象標識符(通常是整數(shù),即密鑰對象句柄,簡稱密鑰句柄);
[0046]所述密碼模塊和ECC密鑰生成系統(tǒng)預定或配置有身份標識限定策略;密碼模塊處的身份標識限定策略規(guī)定或限定了在數(shù)據(jù)加密或數(shù)字簽名時一個身份標識所對應的擴展身份標識,即規(guī)定或限定了在數(shù)據(jù)加密時所采用的ECC公鑰所對應的擴展身份標識或在數(shù)字簽名時所采用的ECC私鑰所對應的擴展身份標識,也即在數(shù)據(jù)加密或數(shù)字簽名時哪一個擴展身份標識所對應的ECC公鑰或ECC私鑰被采用;ECC密鑰生成系統(tǒng)處的身份標識限定策略規(guī)定或限定了在生成一個擴展身份標識對應的ECC私鑰時需要滿足的必要條件;所述預定的身份標識限定策略指已編碼在程序中的不能更改的身份標識限定策略;所述配置的身份標識限定策略指可修改、設定的身份標識限定策略;
[0047]所述密碼應用程序按使用公鑰及其對應私鑰或密鑰對的方式使用偽公鑰及其對應的私鑰或密鑰對;
[0048]所述密碼應用程序按使用數(shù)字證書及其對應私鑰或密鑰對的方式使用偽數(shù)字證書及其對應私鑰或密鑰對(如將證書上的持有者公鑰導入到密碼模塊中用于數(shù)據(jù)加密或簽名驗證,或通過證書所關聯(lián)的私鑰或密鑰對密鑰對象的密鑰對象標識符使用證書持有者的私鑰,用于數(shù)據(jù)解密或簽名驗證);
[0049]若密碼應用程序不使用數(shù)字證書而是直接使用公鑰或私鑰或密鑰對進行數(shù)據(jù)加密和解密,簽名和簽名驗證,則所述偽數(shù)字證書、偽數(shù)字證書簽發(fā)系統(tǒng)以及偽數(shù)字證書簽發(fā)客戶端不再存在;[0050]若僅密碼應用程序從所述偽數(shù)字證書簽發(fā)系統(tǒng)獲取偽數(shù)字證書,則所述偽數(shù)字證書簽發(fā)客戶端不再存在。
[0051]在大部分的密碼模塊實現(xiàn)中都采用了密鑰對象的概念,在不產(chǎn)生歧義的情況下,可將公鑰、私鑰、密鑰對、對稱密鑰與公鑰對象、私鑰對象、密鑰對對象、對稱密鑰對象等同。永久存儲介質(zhì)上的密鑰對象通常需要裝載到臨時存儲介質(zhì)中后通過相應的整數(shù)密鑰標識符訪問。
[0052]用戶通過如下方式對密碼應用程序的密鑰或數(shù)字證書進行配置:
[0053]對于不使用數(shù)字證書的密碼應用程序,用戶通過如下方式進行密鑰配置:
[0054]非身份標識的擁有者用戶通過密碼應用程序或其他密鑰配置工具自動或在用戶干預的情況下,生成身份標識對應的偽公鑰,調(diào)用所述密碼模塊的ECC公鑰組生成接口生成身份標識對應的ECC公鑰組的密鑰對象,然后將生成的偽公鑰導入到密碼模塊中,將偽公鑰配置為密碼應用程序所用,包括用于數(shù)據(jù)加密和簽名驗證;
[0055]身份標識的擁有者用戶通過密碼應用程序或其他密鑰配置工具自動或在用戶干預的情況下,生成身份標識對應的偽公鑰,調(diào)用所述密碼模塊的私鑰或密鑰對生成接口生成身份標識對應的ECC私鑰組或密鑰對組的密鑰對象,然后將生成的偽公鑰和ECC私鑰組或密鑰對組密鑰對象作為配對的公鑰和私鑰配置為密碼應用程序所用,包括用于數(shù)據(jù)加密和解密,簽名和簽名驗證;
[0056]對于使用數(shù)字證書的密碼應用程序,用戶通過如下方式進行數(shù)字證書配置:
[0057]非身份標識的擁有者用戶通過偽數(shù)字證書簽發(fā)客戶端或密碼應用程序,進行如下密鑰及證書生成和配置操作:
[0058]操作Q:調(diào)用所述密碼模塊的ECC公鑰組生成接口,生成身份標識對應的ECC公鑰組的密鑰對象;
[0059]操作U:從偽數(shù)字證書簽發(fā)系統(tǒng)獲取身份標識對應的偽數(shù)字證書;
[0060]操作V:將生成的偽數(shù)字證書配置為密碼應用程序所用,包括用于數(shù)據(jù)加密和簽名驗證;
[0061]身份標識的擁有者用戶通過偽數(shù)字證書簽發(fā)客戶端或密碼應用程序,進行如下密鑰及證書生成和配置操作:
[0062]操作W:調(diào)用所述密碼模塊的私鑰或密鑰對密鑰生成接口,生成身份標識對應的ECC私鑰組或密鑰對組的密鑰對象;
[0063]操作X:從偽數(shù)字證書簽發(fā)系統(tǒng)獲取身份標識對應的偽數(shù)字證書;
[0064]操作Y:將操作W得到的密鑰對象與操作X獲取的偽數(shù)字證書關聯(lián)(如何關聯(lián)取決于具體應用的證書使用環(huán)境,通常是通過密鑰對象標識符將一個私鑰或密鑰對密鑰對象與一張數(shù)字證書關聯(lián)),即將操作W生成的ECC私鑰組或密鑰對組密鑰對象作為操作X獲得的偽數(shù)字證書的私鑰或密鑰對密鑰對象;
[0065]操作Z:將生成的偽數(shù)字證書配置為密碼應用程序所用,包括用于數(shù)據(jù)加密和解密,簽名和簽名驗證。
[0066]對于偽數(shù)字證書簽發(fā)客戶端或密碼應用程序針對公鑰或私鑰或密鑰對操作的接口調(diào)用,所述密碼模塊針對不同的接口操作調(diào)用分別按如下方式進行處理:
[0067]操作調(diào)用A:對于生成私鑰或密鑰對的接口調(diào)用,在存儲介質(zhì)中創(chuàng)建一個包括一個空的ECC私鑰組或密鑰對組的密鑰對象,并將通過人機界面獲得的身份標識信息保存在新生成的密鑰對象中,然后將返回的密鑰對象標識符指向新生成的ECC私鑰組或密鑰對組的密鑰對象;或者生成一個偽公鑰的數(shù)據(jù)結構所標識的或約定的公開密鑰密碼算法的私鑰或密鑰對的密鑰對象,然后將返回的密鑰對象標識符指向新生成的密鑰對象(如,若偽公鑰的數(shù)據(jù)結構所標識的或約定的算法是RSA,則生成一個RSA私鑰或密鑰對);
[0068]操作調(diào)用B:對于生成私鑰組或密鑰對組的接口調(diào)用,在存儲介質(zhì)中創(chuàng)建一個包括一個空的ECC私鑰組或密鑰對組的密鑰對象,并將通過調(diào)用接口或人機界面獲得的身份標識信息保存在新生成的密鑰對象中,然后將返回的密鑰對象標識符指向新生成的ECC私鑰組或密鑰對組的密鑰對象;
[0069]操作調(diào)用C:對于生成ECC公鑰組的接口調(diào)用,在存儲介質(zhì)中創(chuàng)建一個包括一個空的ECC公鑰組的密鑰對象,并將通過調(diào)用接口或人機界面獲得的身份標識信息保存在新生成的密鑰對象中,然后將返回的密鑰對象標識符指向新生成的ECC公鑰組的密鑰對象;
[0070]操作調(diào)用D:對于使用ECC私鑰組或密鑰對組密鑰對象的密鑰對象標識符導出私鑰或密鑰對的接口調(diào)用,返回出錯;
[0071]操作調(diào)用E:對于使用ECC私鑰組或密鑰對組密鑰對象的密鑰對象標識符導出ECC私鑰組或密鑰對組的接口調(diào)用,返回密鑰對象標識符指向的密鑰對象的ECC私鑰組或密鑰對組中所有ECC私鑰或密鑰對,以及對應的身份標識和擴展身份標識信息;
[0072]操作調(diào)用F:對于使用ECC公鑰組密鑰對象的密鑰對象標識符導出ECC公鑰組的接口調(diào)用,返回密鑰對象標識符指向的密鑰對象的ECC公鑰組中所有ECC公鑰,以及對應的身份標識和擴展身份標識信息;
[0073]操作調(diào)用G:對于使用ECC私鑰組或密鑰對組密鑰對象的密鑰對象標識符導出公鑰的接口調(diào)用,從密鑰對象標識符指向的密鑰對象中獲取對應的身份標識,生成身份標識對應的偽公鑰,然后返回生成的偽公鑰;
[0074]操作調(diào)用H:對于導入ECC公鑰組的接口調(diào)用,在存儲介質(zhì)中創(chuàng)建一個ECC公鑰組的密鑰對象,并將通過調(diào)用接口輸入的要導入的ECC公鑰組中的所有ECC公鑰以及對應的身份標識和擴展身份標識信息加入到新創(chuàng)建的密鑰對象中,然后將返回的密鑰對象標識符指向新生成的ECC公鑰組密鑰對象;
[0075]操作調(diào)用1:對于導入ECC私鑰組或密鑰對組的接口調(diào)用,在存儲介質(zhì)中創(chuàng)建一個ECC私鑰組或密鑰對組的密鑰對象,并將通過調(diào)用接口輸入的要導入的ECC私鑰組或密鑰對組中的所有ECC私鑰或密鑰對以及對應的身份標識和擴展身份標識信息加入到新創(chuàng)建的密鑰對象中,然后將返回的密鑰對象標識符指向新生成的ECC私鑰組或密鑰對組的密鑰對象;
[0076]操作調(diào)用J:對于使用ECC私鑰組或密鑰對組的密鑰對象的密鑰對象標識符刪除私鑰或密鑰對密鑰對象的接口調(diào)用,在存儲介質(zhì)中清除對象標識符所指的密鑰對象;
[0077]操作調(diào)用K:對于使用ECC公鑰組的密鑰對象的密鑰對象標識符刪除公鑰組的接口調(diào)用,在存儲介質(zhì)中清除密鑰對象標識符所指的密鑰對象;
[0078]操作調(diào)用L:對于導入公鑰的接口調(diào)用,檢查導入的公鑰是否是偽公鑰,如果不是,則按導入正常的公鑰(即非偽公鑰)的方式完成導入公鑰的處理;否則,按如下方式處理:[0079]步驟L1:在存儲介質(zhì)中創(chuàng)建一個偽公鑰的密鑰對象,將要導入的偽公鑰保存在創(chuàng)建的偽公鑰密鑰對象中;
[0080]步驟L2:從偽公鑰中獲取身份標識信息;
[0081]步驟L3:查看存儲介質(zhì)中是否已有身份標識對應的ECC公鑰組密鑰對象,若是,則將步驟LI創(chuàng)建的偽公鑰的密鑰對象與對應的ECC公鑰組密鑰對象相關聯(lián)(如將ECC公鑰組密鑰對象的密鑰對象標識符保存在創(chuàng)建的偽公鑰密鑰對象中),并將返回的密鑰對象標識符指向創(chuàng)建的偽公鑰的密鑰對象,完成偽公鑰的導入處理;否則,返回出錯;
[0082]操作調(diào)用M:對于使用偽公鑰密鑰對象的密鑰對象標識符導出公鑰的接口調(diào)用,導出密鑰對象標識符指向的偽公鑰密鑰對象中的偽公鑰;
[0083]操作調(diào)用N:對于使用偽公鑰密鑰對象的密鑰對象標識符刪除公鑰密鑰對象的接口調(diào)用,在存儲介質(zhì)中清除密鑰對象標識符所指的偽公鑰密鑰對象;
[0084]執(zhí)行所述操作調(diào)用A是生成一個ECC私鑰組或密鑰對組的密鑰對象,還是生成一個偽公鑰的數(shù)據(jù)結構所標識的或約定的公開密鑰密碼算法的私鑰或密鑰對的密鑰對象,由用戶通過人機界面選擇決定,或者由所述密碼模塊的配置信息決定,或者由密碼模塊程序固定設定。
[0085]操作調(diào)用A和操作調(diào)用B是兩種不同的接口調(diào)用(操作調(diào)用A通常是標準的接口調(diào)用,而操作調(diào)用B是額外定義的接口調(diào)用);同樣地,操作調(diào)用D和操作調(diào)用F是兩種不同的接口調(diào)用(操作調(diào)用D通常是標準的接口調(diào)用,而操作調(diào)用F是額外定義的接口調(diào)用)。
[0086]以上針對密鑰的操作,或者是針對永久存儲介質(zhì)上的密鑰的操作,或者是針對臨時存儲介質(zhì)上的密鑰的操作;永久存儲介質(zhì)上(如硬盤)的密鑰通常需要裝載到臨時存儲介質(zhì)中(如內(nèi)存中)才能使用,這與具體實施有關。另外,在密碼模塊的具體實施中,除了以上所述針對公鑰、私鑰或密鑰對的操作外,還需要實施針對其他密鑰對象(如對稱密鑰)的密鑰操作。
[0087]對于密碼應用程序使用偽公鑰密鑰對象的密鑰對象標識符調(diào)用所述密碼模塊進行數(shù)據(jù)加密的操作(通常是對隨機對稱密鑰加密),所述密碼模塊按如下方式進行處理:
[0088]第I步:從密鑰對象標識符所指的偽公鑰密鑰對象中獲取對應的身份標識,用獲取的身份標識生成一個與預定或配置的身份標識限定策略相對應的擴展身份標識;
[0089]第2步:查看密鑰對象標識符指向的偽公鑰密鑰對象所關聯(lián)的ECC公鑰組密鑰對象的ECC公鑰組中是否有第I步生成的擴展身份標識對應的ECC公鑰,若沒有,轉(zhuǎn)入第3步;若有,則使用對應的ECC公鑰對數(shù)據(jù)進行加密,并將當前使用的ECC公鑰對應的擴展身份標識的信息作為附加數(shù)據(jù)或填充數(shù)據(jù)附加或填充到被加密的數(shù)據(jù)中,完成處理后返回結果;
[0090]第3步:使用第I步生成的擴展身份標識從ECC密鑰生成系統(tǒng)請求獲取擴展身份標識對應的ECC公鑰;
[0091]第4步:將獲得的ECC公鑰及對應的擴展身份標識及加入到當前使用的偽公鑰密鑰對象所關聯(lián)的ECC公鑰組密鑰對象的ECC公鑰組中;
[0092]第5步:使用獲得的ECC公鑰對數(shù)據(jù)進行加密,并將當前使用的ECC公鑰對應的擴展身份標識的信息作為附加數(shù)據(jù)或填充數(shù)據(jù)附加或填充到被加密的數(shù)據(jù)中,完成處理后返回結果;
[0093]所述第2步或第5步中將當前使用的ECC公鑰對應的擴展身份標識的信息作為附加數(shù)據(jù)或填充數(shù)據(jù)附加或填充到被加密的數(shù)據(jù)中的操作處理,是指將擴展身份標識信息加入到經(jīng)ECC公鑰密碼運算后的數(shù)據(jù)本身中,而不是作為加密密鑰的密鑰標識信息或密鑰標識信息的一部分放入到加密數(shù)據(jù)信封的接收者信息中(如RFC5652,CryptographicMessageSyntax (CMS)的 EnvelopedData 數(shù)據(jù)信封的 RecipientInfo 中)。
[0094]實際上,通常ECC公鑰是用于加密隨機產(chǎn)生的對稱密鑰,因此,通常情況下擴展身份標識的信息是附加或填充入到被加密的隨機對稱密鑰數(shù)據(jù)中。
[0095]如何在一個身份標識的基礎上生成一個與預定或配置的身份標識限定策略相對應的擴展身份標識,與具體的策略有關,與具體的策略實施方案有關。
[0096]對于密碼應用程序使用ECC私鑰組或密鑰對組密鑰對象的密鑰對象標識符調(diào)用所述密碼模塊進行數(shù)據(jù)解密的操作,所述密碼模塊按如下方式進行處理:
[0097]第A步:通過加密數(shù)據(jù)的附加數(shù)據(jù)或填充數(shù)據(jù)獲得數(shù)據(jù)加密時所用ECC公鑰的對應擴展身份標識;
[0098]第B步:查看密鑰對象標識符指向的密鑰對象的ECC私鑰組或密鑰對組中是否有第A步獲得的擴展身份標識對應的ECC私鑰或密鑰對,若沒有,轉(zhuǎn)入第C步;若有,則使用對應的ECC私鑰或密鑰對解密加密的數(shù)據(jù),完成處理后返回結果;
[0099]第C步:使用第A步獲得的擴展身份標識從ECC密鑰生成系統(tǒng)請求獲取擴展身份標識對應的ECC私鑰或密鑰對;
[0100]第D步:將獲得的ECC私鑰或密鑰對及對應的擴展身份標識及加入到當前使用的ECC私鑰組或密鑰對組密鑰對象的ECC私鑰組或密鑰對組中;
[0101]第E步:使用獲得的ECC私鑰或密鑰對解密加密的數(shù)據(jù),完成處理后返回結果。
[0102]對于密碼應用程序使用ECC私鑰組或密鑰對組的密鑰對象的密鑰對象標識符調(diào)用所述密碼模塊對數(shù)據(jù)進行數(shù)字簽名的操作,所述密碼模塊按如下方式進行處理:
[0103]步驟1:從密鑰對象標識符所指的ECC私鑰組或密鑰對組密鑰對象中獲取的對應身份標識,用獲取的身份標識生成一個與預定或配置的身份標識限定策略(即對應的ECC私鑰的限定策略)相對應的擴展身份標識;
[0104]步驟2:查看密鑰對象標識符指向的ECC私鑰組或密鑰對組密鑰對象的ECC私鑰組或密鑰對組中是否有步驟I生成的擴展身份標識對應的ECC私鑰或密鑰對,若沒有,轉(zhuǎn)入步驟3 ;若有,則使用對應的ECC私鑰或密鑰對中的私鑰對數(shù)據(jù)進行數(shù)字簽名,并將當前使用的ECC私鑰或密鑰對所對應的擴展身份標識的信息作為附加數(shù)據(jù)或填充數(shù)據(jù)附加或填充到被簽名的數(shù)據(jù)中,完成處理后返回結果;
[0105]步驟3:使用步驟I生成的擴展身份標識從ECC密鑰生成系統(tǒng)請求獲取擴展身份標識對應的ECC私鑰或密鑰對;
[0106]步驟4:將獲得的對應ECC私鑰或密鑰對及對應的擴展身份標識及加入到當前使用的ECC私鑰組或密鑰對組中;
[0107]步驟5:使用獲得的ECC私鑰或密鑰對中的私鑰對數(shù)據(jù)進行數(shù)字簽名,將當前使用的ECC私鑰或密鑰對所對應的擴展身份標識的信息作為附加數(shù)據(jù)或填充數(shù)據(jù)附加或填充到被簽名的數(shù)據(jù)中,完成處理后返回結果;
[0108]所述步驟2或步驟5中將當前使用的ECC私鑰或密鑰對所對應的擴展身份標識的信息作為附加數(shù)據(jù)或填充數(shù)據(jù)附加或填充到被簽名的數(shù)據(jù)中的操作處理,是指將擴展身份標識信息加入到經(jīng)ECC私鑰密碼算后的數(shù)據(jù)本身中,而不是作為簽名者密鑰標識信息或密鑰標識信息的一部分放入到簽名后形成的數(shù)據(jù)結構的簽名者信息中(如CMS中的SignedData的SignertInfo中)(實際上,簽名是用ECC私鑰針對簽名數(shù)據(jù)的散列值進行密碼運算,因此,擴展身份標識的信息是附加或填充到經(jīng)ECC私鑰密碼運算后的散列值中)。
[0109]對于密碼應用程序使用偽公鑰密鑰對象的密鑰對象標識符調(diào)用所述密碼模塊對簽名數(shù)據(jù)進行簽名驗證的操作,所述密碼模塊按如下方式進行處理:
[0110]步驟A:通過簽名數(shù)據(jù)的附加數(shù)據(jù)或填充數(shù)據(jù)獲得簽名時所用ECC私鑰的對應擴展身份標識;
[0111]步驟B:查看密鑰對象標識符指向的偽公鑰密鑰對象所關聯(lián)的ECC公鑰組密鑰對象的ECC公鑰組中是否有步驟A中獲得的擴展身份標識對應的ECC公鑰,若沒有,轉(zhuǎn)入步驟C ;若有,則使用對應的ECC公鑰對簽名數(shù)據(jù)進行簽名驗證,完成處理后返回結果;
[0112]步驟C:使用步驟A獲得的擴展身份標識從ECC密鑰生成系統(tǒng)請求獲取擴展身份標識對應的ECC公鑰;
[0113]步驟D:將獲得的對應ECC公鑰及對應擴展身份標識及加入到當前使用的偽公鑰密鑰對象關聯(lián)的ECC公鑰組密鑰對象的ECC公鑰組中;
[0114]步驟E:使用獲得的ECC公鑰對簽名數(shù)據(jù)進行簽名驗證,完成處理后返回結果。
[0115]在密碼模塊的具體實施中,除了以上針對公鑰、私鑰或密鑰對密碼運算外,還需要實施針對其他密鑰對象(如對稱密鑰)的密碼運算。
[0116]對于用戶通過偽數(shù)字證書簽發(fā)客戶端或密碼應用程序從所述偽數(shù)字證書簽發(fā)系統(tǒng)獲取一張身份標識對應的偽數(shù)字證書的請求,所述偽數(shù)字證書簽發(fā)系統(tǒng)按如下步驟進行處理:
[0117]步驟1:查看內(nèi)存或數(shù)據(jù)庫中是否緩存或保存有請求中的擴展身份標識對應的偽數(shù)字證書,若有,則返回對應的偽數(shù)字證書;否則,轉(zhuǎn)入步驟II ;
[0118]步驟I1:偽數(shù)字證書簽發(fā)系統(tǒng)利用請求中的身份標識信息生成對應的偽公鑰,然后使用偽數(shù)字證書簽發(fā)CA的私鑰簽發(fā)一張證書持有者公鑰是偽公鑰的偽數(shù)字證書,,之后將簽發(fā)的偽數(shù)字證書緩存在內(nèi)存中或保存在數(shù)據(jù)庫中,最后返回簽發(fā)的偽數(shù)字證書;
[0119]所述偽數(shù)字證書簽發(fā)系統(tǒng)針對同一身份標識所簽發(fā)的偽數(shù)字證書的簽發(fā)者名(Issuer Name)和序列號(Serial Number)相同(主題名,即Subject Name,可以同,也可以不同)。
[0120]若所述基于標識的橢圓曲線密碼系統(tǒng)僅用于數(shù)據(jù)加密應用,則所述偽數(shù)字證書簽發(fā)系統(tǒng)是一個獨立運行的系統(tǒng),或者與所述偽數(shù)字證書簽發(fā)客戶端合并為一個運行于用戶端的偽數(shù)字證書簽發(fā)工具;
[0121]若所述偽數(shù)字證書簽發(fā)系統(tǒng)與所述偽數(shù)字證書簽發(fā)客戶端合并為一個運行于用戶端的偽數(shù)字證書簽發(fā)工具,則每個用戶或密碼應用程序通過所述偽數(shù)字證書簽發(fā)工具獨立生成加密或解密所需的偽數(shù)字證書,包括帶私鑰和不帶私鑰的偽數(shù)字證書;不同用戶或密碼應用程序通過所述偽數(shù)字證書簽發(fā)工具針對同一個身份標識獨立生成的偽數(shù)字證書的簽發(fā)者名和序列號相同(主題名可以同,也可以不同);不同用戶的偽數(shù)字證書簽發(fā)工具所使用的證書簽發(fā)CA及其上級CA的CA證書的簽發(fā)者名、主題名和序列號相同,但證書簽發(fā)CA及其上級CA的CA證書的密鑰對不同。[0122]對于密碼模塊從ECC密鑰生成系統(tǒng)請求獲取一個擴展身份標識所對應的ECC公鑰的請求,所述ECC密鑰生成系統(tǒng)按如下步驟處理:
[0123]步驟一:查看內(nèi)存或數(shù)據(jù)庫中是否緩存或保存有請求中的擴展身份標識對應ECC公鑰,若有,則返回對應的ECC公鑰;否則,轉(zhuǎn)入步驟二 ;
[0124]步驟二:將請求中的擴展身份標識與ECC密鑰生成系統(tǒng)的種子數(shù)據(jù)通過運算生成擴展身份標識對應的ECC私鑰(d),并進而計算得到對應的ECC公鑰(dG),然后將計算得到的ECC公鑰緩存在內(nèi)存中或保存在數(shù)據(jù)庫中,最后返回計算得到的對應的ECC公鑰。
[0125]對于密碼模塊從ECC密鑰生成系統(tǒng)請求獲取一個擴展身份標識所對應的ECC私鑰或密鑰對的請求,所述ECC密鑰生成系統(tǒng)按如下步驟處理:
[0126]第I步:驗證和確認請求方的用戶就是擴展身份標識對應的身份標識的擁有者,若驗證通過,則轉(zhuǎn)入第II步;否則,返回拒絕,并給出拒絕的原因;
[0127]第II步:根據(jù)請求中的擴展身份標識中的限定策略確定當前是否符合為用戶生成擴展身份標識對應私鑰的條件,若是,則轉(zhuǎn)入第III步;否則,返回拒絕,并給出拒絕的原因;
[0128]第III步:將請求中的擴展身份標識與ECC密鑰生成系統(tǒng)的種子數(shù)據(jù)通過運算生成擴展身份標識對應的ECC私鑰(d),并返回生成的ECC私鑰;
[0129]若請求是生成ECC密鑰對,則由ECC密鑰生成系統(tǒng)利用生成的ECC私鑰(d)計算得到對應的ECC公鑰(dG)并返回生成和計算得到的ECC私鑰和公鑰(即ECC密鑰對),或者僅返回生成的ECC私鑰,由調(diào)用方的密碼模塊利用獲得的ECC私鑰計算得到對應的ECC公鑰。
[0130]如何根據(jù)請求中的擴展身份標識的限定策略確定當前是否符合為用戶生成擴展身份標識對應私鑰的條件,與具體的策略有關,與具體的策略實施方案有關。
[0131]若所述基于標識的橢圓曲線密碼系統(tǒng)采用分割方式生成ECC密鑰,則由兩個或兩個以上的采用相同ECC系統(tǒng)參數(shù)的ECC密鑰生成系統(tǒng)分別生成一個擴展身份標識對應的ECC私鑰,然后以分別生成的ECC私鑰的代數(shù)和作為最終的ECC私鑰;以每個ECC密鑰生成系統(tǒng)分別生成的擴展身份標識對應的ECC公鑰的橢圓曲線群和(橢圓曲線上的點構成的群的點加和)作為最終的ECC公鑰;每個ECC密鑰生成系統(tǒng)用于ECC私鑰計算的種子數(shù)據(jù)各不相同。對不同ECC密鑰生成系統(tǒng)分別生成的ECC私鑰求代數(shù)和以及對不同ECC密鑰生成系統(tǒng)分別生成的ECC公鑰求橢圓曲線群和的運算由密碼模塊完成。
[0132]本發(fā)明的基于標識的橢圓曲線密碼系統(tǒng),通過將對應于一個身份標識的偽公鑰與對應同一身份標識的ECC公鑰組和ECC私鑰組(或ECC密鑰對組)相對應,從而將使用偽公鑰進行數(shù)據(jù)加密或簽名驗證的密碼運算自動轉(zhuǎn)化成使用對應ECC公鑰組中相應ECC公鑰的運算;將使用偽公鑰所對應的私鑰(一個實際上不存在的影子私鑰)進行數(shù)據(jù)解密或簽名的運算自動轉(zhuǎn)化成使用對應ECC私鑰組(或ECC密鑰對組)中對應私鑰的運算;并且,在沒有對應ECC公鑰或私鑰(密鑰對)時,由密碼模塊自動獲取對應的ECC公鑰或私鑰(密鑰對)。這樣的基于標識的橢圓曲線密碼系統(tǒng)不但具有IBC密碼系統(tǒng)的部分特點,包括將一個密鑰對與一個(擴展)身份標識相對應,通過限定策略對身份標識對應密鑰對的使用進行限定,由密鑰生成系統(tǒng)根據(jù)用戶的(擴展)身份標識計算生成或恢復對應的私鑰或密鑰對,無需集中存儲用戶數(shù)字證書和對應私鑰等(從而大大降低了密鑰管理和服務系統(tǒng)的復雜性),而且,密碼算法比IBC簡單,易于得到客戶端密碼硬件的支持,并通過密碼模塊自動獲取或更新密鑰,減少了密鑰更新過程中用戶的干預,給用戶帶來方便。
【專利附圖】

【附圖說明】
[0133]圖1為本發(fā)明的密碼系統(tǒng)的結構框圖。
[0134]圖2為本發(fā)明的密碼模塊中ECC密鑰組(包括ECC公鑰組、ECC私鑰組或密鑰對組)的實施示意圖。
【具體實施方式】
[0135]下面結合附圖和實施例對本發(fā)明作進一步的描述。
[0136]采用本發(fā)明的密碼系統(tǒng)的結構框圖如圖1所示。
[0137]本發(fā)明的實施首先需要確定偽公鑰的實施方案。本發(fā)明的偽公鑰可以基于RSA公鑰實施(偽RSA公鑰),也可以基于ECC公鑰實施(偽ECC公鑰),或基于其他公開密鑰密碼算法的公鑰實施。無論采用RSA公鑰實施還是采用ECC公鑰實施(或其他算法的公鑰實施),都可以參考本發(fā)明專利申請的 申請人:在其專利“一種基于偽RSA密鑰的新近公開密鑰加密算法的應用實現(xiàn)方法”(專利號:201110248050.8)中所述的偽RSA密鑰(針對公鑰部分)的實施方案。這時,偽RSA公鑰數(shù)據(jù)或偽ECC公鑰數(shù)據(jù)中存放的身份標識信息是(基本)身份標識的散列數(shù)值(若存原始值,則有可能太長),以及ECC系統(tǒng)參數(shù)(包括橢圓曲線具體格式、域、系數(shù)和基點)的指示信息(通過版本號或URL),而不是橢圓曲線的具體格式、域、系數(shù)和基點數(shù)據(jù)本身。
[0138]在偽公鑰的基礎上可實施偽數(shù)字證書(如偽RSA數(shù)字證書或偽ECC數(shù)字證書)。實現(xiàn)所有偽數(shù)字證書的簽發(fā)者名相同是很容易做到的,只要證書簽發(fā)CA的CA證書的主題名不變或相同即可;為了保證針對同一個身份標識所生成簽發(fā)的偽數(shù)字證書的序列號相同,可以用身份標識的散列值作為證書序列號。
[0139]證書主題名如何設置與具體密碼應用有關,通常情況下根據(jù)密碼應用的需要,身份標識需要作為主題名的一部分出現(xiàn)在主題名中,比如,如果身份標識是電子郵箱地址,則身份標識(即電子郵箱地址)要作為主題名(主題甄別名)的電子郵件字段(E字段)的值出現(xiàn)在主題名中。
[0140]偽數(shù)字證書的有效期可以設置得很長,比如50年,100年,且可將其起始、終止時間固定。
[0141]若偽數(shù)字證書簽發(fā)系統(tǒng)是一個運行于用戶端的偽數(shù)字證書簽發(fā)工具,要做到不同用戶的偽數(shù)字證書簽發(fā)工具所使用的證書簽發(fā)CA及其上級CA的CA證書的簽發(fā)者名、主題名和序列號相同,而證書簽發(fā)CA及其上級CA的CA證書的密鑰對不同,不是一件困難的事情,只要每個用戶端的偽數(shù)字證書簽發(fā)工具各自獨立地生成證書簽發(fā)CA及其上級CA的CA證書(包括根CA證書)的密鑰對,且使得各自生成的CA證書使用預先約定的簽發(fā)者名、主題名和序列號即可。
[0142]由于目前的絕大部分密碼應用程序和標準密碼模塊接口都支持RSA算法和RSA數(shù)字證書,而很多密碼應用程序或標準密碼模塊接口尚不支持ECC算法和ECC數(shù)字證書,故現(xiàn)階段最好采用RSA實施偽公鑰和偽RSA數(shù)字證書。[0143]需要指出的是,如果基于RSA公鑰實施本發(fā)明的用于ECC密鑰操作和密碼運算的偽公鑰和偽數(shù)字證書,則實施得到的偽公鑰和偽數(shù)字證書與發(fā)明“一種基于偽RSA密鑰的新近公開密鑰加密算法的應用實現(xiàn)方法”(專利號:201110248050.8)中針對ECC算法實施得到的偽RSA公鑰和偽RSA數(shù)字證書是完全不同的,這是因為,本發(fā)明的偽公鑰數(shù)據(jù)包括偽數(shù)字證書上的偽公鑰數(shù)據(jù)中并沒有包含真正的ECC公鑰,而是身份標識及其他信息,而發(fā)明201110248050.8中針對ECC算法實施得到的偽RSA公鑰數(shù)據(jù)包括偽RSA數(shù)字證書上的偽公鑰數(shù)據(jù)中包含有真正的ECC公鑰。
[0144]確定了偽公鑰和偽數(shù)字證書的實施方案后,基于現(xiàn)有的信息系統(tǒng)開發(fā)技術,如C/C++、Java、C#.NET等,開發(fā)一個實現(xiàn)本發(fā)明所述功能的偽數(shù)字證書簽發(fā)系統(tǒng)不是一件困難的事情。偽數(shù)字證書簽發(fā)系統(tǒng)與偽數(shù)字證書簽發(fā)客戶端之間的協(xié)議可以自定義。
[0145]實施ECC密鑰生成系統(tǒng)的關鍵是計算一個擴展身份標識對應的ECC密鑰對的ECC私鑰,并由此得到對應的ECC公鑰或密鑰對。對于一個擴展身份標識對應的ECC私鑰,可以采用如下散列值計算方案獲得:
[0146]HASH (<擴展身份標識> I I <種子數(shù)據(jù)>),
[0147]即將擴展身份標識與種子數(shù)據(jù)合并后計算散列值,然后從計算得到的散列值得到需要的ECC私鑰,比如,若散列值是160位,而ECC私鑰要求是128位,則可取散列值的前128位作為ECC私鑰;若散列值是160位,而ECC私鑰要求是160位,則可將散列值作為ECC私鑰。采用的散列算法可以是SHA-1、MD5或其他散列算法。如果所采用的散列算法的散列值的長度小于期望的ECC私鑰的長度(比如散列值是160位,ECC私鑰的長度是192位),則可以用兩個種子數(shù)據(jù)計算散列值,然后從兩個散列值合并后的數(shù)據(jù)中導出ECC私鑰?;蛘卟捎闷渌軌?qū)⒁粋€擴展身份標識唯一映射到一個ECC私鑰的算法。
[0148]實施密碼模塊是實施本發(fā)明的系統(tǒng)的關鍵。在實施時有一點需要注意,對于公開密鑰密碼算法而言,私鑰數(shù)據(jù)通常包含有公鑰,或者可以通過私鑰直接計算得到公鑰,因此,針對私鑰的操作和運算與針對密鑰對的操作與運算是等同的。
[0149]實施密碼模塊的一種方案是自定義密碼調(diào)用接口,并實現(xiàn)本發(fā)明所述功能以及其他需要的功能,包括涉及對稱密鑰、散列計算的功能。但是,采用這種方案的缺點是大部分的密碼應用程序?qū)o法使用實施的密碼模塊進行數(shù)據(jù)加密、解密,簽名、簽名驗證,這是因為大部分的密碼應用程序是通過標準密碼接口,如Windows CSP的CryptoSP1、PKCS#11等,來實現(xiàn)密碼功能調(diào)用(Windows實際上是通過CryptoAPI調(diào)用CSPjS CSP需實現(xiàn)CryptoSPI)。為了使得這些密碼應用程序能使用本發(fā)明的密碼系統(tǒng),故需要基于這些標準密碼接口實施本發(fā)明的密碼模塊。下面以Windows CSP的CryptoSPI為例來說明,基于PKCS#11或其他標準密碼接口的實施方式類似。
[0150]Windows CSP是Windows操作系統(tǒng)中的提供密碼服務功能的模塊,全稱是Cryptographic Services Provider (密碼服務提供者),它采用的密碼接口為CryptoSPI??紤]到Windows的CSP架構目前還不能很好地支持ECC算法,故可以采用RSA CSP來實施本發(fā)明的內(nèi)容,即所述偽公鑰是偽RSA公鑰,所述偽數(shù)字證書是偽RSA數(shù)字證書,而所述密碼模塊是一個支持RSA密碼接口的CSP。
[0151]采用基于RSA密碼接口的CSP實施本發(fā)明的密碼模塊時,所有與RSA密鑰對有的密碼調(diào)用需要根據(jù)本發(fā)明的內(nèi)容作相應的改變和實施,實施要點如下:[0152]I )RSA CSP中的RSA密鑰對密鑰對象(或密鑰容器)對應于本發(fā)明的ECC密鑰組密鑰對象;
[0153]2)RSA CSP中的RSA公鑰密鑰對象對應于本發(fā)明中的偽公鑰密鑰對象及其關聯(lián)的ECC公鑰組密鑰對象;
[0154]3 )本發(fā)明中的密鑰對象標識符或者對應于RSA CSP中的永久密鑰對象的永久密鑰對象標識符,或者對應于RSA CSP中的臨時密鑰對象的臨時密鑰對象標識符,即密鑰句柄;相應地,針對密鑰對象的操作或者是針對永久密鑰對象,或者是針對臨時密鑰對象,取決于對應的RSA CSP調(diào)用接口采用的對象標識符和對應的密鑰對象;
[0155]4) RSA CSP中初始化一個RSA密鑰對的密鑰容器的接口調(diào)用,對應的實施是在臨時存儲介質(zhì)(內(nèi)存)中創(chuàng)建一個臨時的ECC私鑰組或密鑰對組密鑰對象,包括將一個永久ECC私鑰組或密鑰對組密鑰對象通過創(chuàng)建臨時密鑰對象的方式裝載到臨時存儲介質(zhì)中(供使用);
[0156]5)操作調(diào)用A對應于RSA CSP中創(chuàng)建一個RSA密鑰對密鑰對象的接口調(diào)用;
[0157]6)操作調(diào)用D對應于RSA CSP中導出一個RSA密鑰對密鑰對象(密鑰容器中)的RSA密鑰對的接口調(diào)用;
[0158]7)操作調(diào)用G對應于RSA CSP中從一個RSA密鑰對密鑰對象(密鑰容器中)導出公鑰的接口調(diào)用;
[0159]8)操作調(diào)用J對應于RSA CSP中刪除永久存儲介質(zhì)上的一個RSA密鑰對密鑰對象或刪除(釋放)臨時存儲介質(zhì)上(內(nèi)存中)的一個RSA密鑰對密鑰對象的接口調(diào)用(取決于對應的RSA CSP接口調(diào)用);
[0160]9)操作調(diào)用L對應于RSA CSP中導入公鑰的接口調(diào)用;
[0161]10)操作調(diào)用M對應于RSA CSP中針對RSA公鑰密鑰對象導出公鑰的接口調(diào)用;
[0162]11)操作調(diào)用N對應于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中沒有對應的接口調(diào)用,需要通過標準接口之外額外定義的接口實現(xiàn);
[0164]13)其他與RSA密鑰對有關的密鑰操作調(diào)用,包括密鑰參數(shù)查詢,若無法實施,可以直接返回出錯。
[0165]RSA CSP中所有與使用RSA公鑰、私鑰進行密碼運算的操作,包括加密、解密,簽名、簽名驗證,按本發(fā)明給出的相應方案實施。除此之外,還需要實施本發(fā)明中未描述但應用過程中需要的其他密碼功能,包括與對稱密鑰、散列運算有關的密鑰操作與密碼運算功倉泛。
[0166]身份標識限定策略的實施,與具體的限定策略有關。最常用的身份標識限定策略是時間策略,通常是規(guī)定或限定擴展身份標識及其私鑰每間隔一段就進行更新,這樣在數(shù)據(jù)加密或數(shù)字簽名時所用的擴展身份標識應該是覆蓋當前時刻的擴展身份標識,對應的ECC公鑰或私鑰是覆蓋當前時刻的擴展身份標識所對應的ECC公鑰或私鑰;而在生成擴展身份標識對應的ECC私鑰時,當前時刻必須不早于擴展身份標識中的起始時刻(起始時間)。因此,對于時間策略,生成一個身份標識的與(預定或配置的)時間限定策略相對應的擴展身份標識,即用覆蓋當前時刻的時間段形成對應的擴展身份標識;從ECC私鑰生成系統(tǒng)獲取ECC私鑰時,ECC私鑰生成系統(tǒng)根據(jù)當前時刻是否在擴展身份標識中的時間限定策略的起始時刻(起始時間)之后,來判斷當前是否符合為用戶生成擴展身份標識對應私鑰的條件。
[0167]如果預定或配置有角色策略,則生成一個身份標識的與預定或配置的角色限定策略相對應的擴展身份標識即把對應的角色策略加入到生成的擴展身份標識中(以字串的形式);從ECC私鑰生成系統(tǒng)獲取ECC私鑰時,ECC私鑰生成系統(tǒng)根據(jù)當前用戶是否擁有對應的角色來判斷當前是否符合為用戶生成擴展身份標識對應私鑰的條件。
[0168]通過分析,可以發(fā)現(xiàn),根據(jù)限定策略的取值,限定策略可分為兩類:動態(tài)策略,靜態(tài)策略;前者出現(xiàn)在擴展身份標識中的數(shù)據(jù)值是可變的(如時間策略),或者根據(jù)情況可出現(xiàn)或者不出現(xiàn),后者是固定不變的(如角色)。故此,在生成一個身份標識與預定或配置的限定策略相對應的擴展身份標識的時候,需要根據(jù)當前的情況確定動態(tài)策略是否需要出現(xiàn),或者當前出現(xiàn)的策略數(shù)據(jù)值是什么(如時間段的值),然后將需要出現(xiàn)的動態(tài)策略及其數(shù)據(jù)值按事先約定順序的加入到擴展身份標識;對于靜態(tài)策略總是將其按事先約定順序的加入到擴展身份標識中;從ECC私鑰生成系統(tǒng)獲取ECC私鑰時,ECC私鑰生成系統(tǒng)根據(jù)當前情況判斷擴展身份標識中出現(xiàn)的動態(tài)策略和靜態(tài)策略的約束要求是否得到滿足,從而判斷當前是否符合為用戶生成擴展身份標識對應私鑰的條件(實施者可根據(jù)具體實施的限定策略的類型,以及自身的需要,確定如何根據(jù)當前情況判斷擴展身份標識中出現(xiàn)的動態(tài)策略和靜態(tài)策略的約束要求是否得到滿足)。
[0169]關于通過策略對身份標識及其密鑰的使用可參考其他文獻。
[0170]對于將擴展 身份標識的信息作為附加數(shù)據(jù)或填充數(shù)據(jù)附加或填充到被加密的數(shù)據(jù)或被簽名的數(shù)據(jù)中的實施方案描述如下。
[0171]若偽公鑰和偽數(shù)字證書是基于RSA算法實現(xiàn),則由于經(jīng)RSA密鑰密碼運算后的數(shù)據(jù),如RSA公鑰加密后的對稱密鑰(加密數(shù)據(jù)),RSA私鑰密碼運算(簽名)后的散列值(簽名數(shù)據(jù)),比經(jīng)ECC密鑰密碼運算后的對應數(shù)據(jù)要長很多,故可以采用將擴展身份標識的信息作為填充數(shù)據(jù)附加在經(jīng)ECC密鑰密碼運算后的數(shù)據(jù)之后,使得填充后的經(jīng)ECC密鑰密碼運算后的數(shù)據(jù)的長度與經(jīng)RSA密鑰密碼運算后的數(shù)據(jù)具有同樣的長度(邊界對齊)。由于,密碼應用程序通常是不會檢查經(jīng)RSA密鑰密碼運算后的數(shù)據(jù)的長度的(即是否具有固定),因此,可以將擴展身份標識的信息作為附加數(shù)據(jù)附加在經(jīng)ECC密鑰密碼運算后的數(shù)據(jù)之后,而不用考慮長度或邊界對齊的問題(若要考慮長度或邊界對齊則是填充數(shù)據(jù))。
[0172]若偽公鑰和偽數(shù)字證書是基于ECC算法實現(xiàn),則可將擴展身份標識的信息作為附加數(shù)據(jù)附加在經(jīng)ECC密鑰密碼運算后的數(shù)據(jù)之后。
[0173]附加或填充到被加密的數(shù)據(jù)或被簽名的數(shù)據(jù)中的擴展身份標識的信息,必須包括限定策略的原始信息(如時間區(qū)間),或者能夠恢復限定策略原始信息的指示信息(如用數(shù)字0、1、3…代表不同的角色等);擴展身份標識對應的身份標識本身由于具有不固定的長度且可能很長,故擴展身份標識對應的身份標識本身是不放在被加密的數(shù)據(jù)或被簽名的數(shù)據(jù)中的,可將其散列值放入其中。實際上,身份標識的散列值也可不放在被加密的數(shù)據(jù)或被簽名的數(shù)據(jù)中,因為,數(shù)據(jù)解密方或簽名驗證方的密碼應用程序可通過加密數(shù)據(jù)信封中或簽名數(shù)據(jù)結構中的密鑰標識信息(即數(shù)字證書的簽發(fā)者名、證書序列號)找到對應的ECC私鑰組(或密鑰對組)密鑰對象或者ECC公鑰組密鑰對象。
[0174]確定了偽公鑰、偽數(shù)字證書、偽數(shù)字證書簽發(fā)系統(tǒng)及協(xié)議、ECC密鑰生成系統(tǒng)、密碼模塊的實施方案后,實施偽數(shù)字證書簽發(fā)系統(tǒng)不是意見困難的事情,可以基于成熟的桌面軟件開發(fā)技術,如c/C++、C#.NET。
[0175]對于技術實現(xiàn)的其他方面,對于相關領域的技術開發(fā)者而言是不言自明的。
【權利要求】
1.一種基于標識的橢圓曲線密碼系統(tǒng),所述密碼系統(tǒng)包括如下組件或數(shù)據(jù): 偽公鑰:一種公鑰數(shù)據(jù)結構,存放的不是數(shù)據(jù)結構標識的或約定的公開密鑰密碼算法的公鑰數(shù)據(jù),而是身份標識信息及ECC系統(tǒng)參數(shù)信息;所述身份標識信息指身份標識字串本身或其散列值,所述ECC系統(tǒng)參數(shù)信息包括ECC密碼運算所采用的橢圓曲線格式、域、系數(shù)以及基點的指示信息,即ECC系統(tǒng)參數(shù)的指示信息;一個所述偽公鑰對應一個身份標識及其所有擴展身份標識; 偽數(shù)字證書:一種X509格式的數(shù)字證書,數(shù)字證書上的證書持有者的公鑰不是數(shù)字證書上所指示的公開密鑰密碼算法的公鑰,而是證書持有者的身份標識所對應的偽公鑰;一張偽數(shù)字證書及其偽公鑰與證書持有者的身份標識及其所有擴展的身份標識相對應;所述偽數(shù)字證書的有效期長度及起始、終止時間的設定沒有限定要求,只要超過偽數(shù)字證書所對應的身份標識的所有擴展身份標識所對應的ECC私鑰或密鑰對的使用期限即可; ECC密鑰生成系統(tǒng):通過計算得到一個擴展身份標識對應的ECC公鑰、ECC私鑰或ECC密鑰對的系統(tǒng);所述ECC密鑰生成系統(tǒng)設置有隨機生成的用于ECC私鑰生成計算的種子數(shù)據(jù); 偽數(shù)字證書簽發(fā)系統(tǒng):生成并簽發(fā)一個身份標識所對應的偽數(shù)字證書的系統(tǒng); 偽數(shù)字證書簽發(fā)客戶端:供用戶使用,用于從偽數(shù)字證書簽發(fā)系統(tǒng)獲取用戶身份標識所對應的偽數(shù)字證書的用戶端軟件程序; 密碼模塊:提供密鑰操作與密碼運算功能的軟件組件或軟硬件組合,所述密鑰操作包括密鑰生成、導入、導出和刪除,所述密碼運算包括加密和解密,簽名和簽名驗證;所述密碼模塊通過密碼接口對外提供密鑰操作與密碼運算功能的調(diào)用; 密碼應用程序:調(diào)用密碼模塊進行密鑰操作,包括生成、導出、導入和刪除,以及調(diào)用密碼模塊使用公鑰或私鑰進行加密或解密,簽名驗證或數(shù)字簽名密碼運算的軟件程序; 所述密碼模塊在存儲介質(zhì)中為`用戶或密碼應用程序使用的每一個身份標識維護一個存放ECC公鑰組的密鑰對象,稱為ECC公鑰組密鑰對象;所述ECC公鑰組密鑰對象的ECC公鑰組中存放有一系列由同一個身份標識的擴展身份標識所生成的ECC公鑰;一個所述ECC公鑰組及其密鑰對象與一個對應相同身份標識的偽公鑰和偽數(shù)字證書相對應;所述ECC公鑰組密鑰對象作為一個密鑰對象用一個密鑰對象標識符標識; 當所述密碼模塊在存儲介質(zhì)中創(chuàng)建一個偽公鑰的密鑰對象時,將所創(chuàng)建的偽公鑰密鑰對象關聯(lián)到對應的具有相同身份標識的ECC公鑰組的密鑰對象;密碼應用程序通過使用偽公鑰的密鑰對象使用偽公鑰對應的ECC公鑰組密鑰對象的ECC公鑰組中的ECC公鑰進行密碼運算,包括數(shù)據(jù)加密和簽名驗證;所述密碼模塊所創(chuàng)建的偽公鑰的密鑰對象稱為偽公鑰密鑰對象; 所述密碼模塊在存儲介質(zhì)中為用戶或密碼應用程序使用的每一個身份標識維護一個存放ECC私鑰組或密鑰對組的密鑰對象,稱為ECC私鑰組或密鑰對組密鑰對象;所述ECC私鑰組或密鑰對組密鑰對象的ECC私鑰組或密鑰對組中存放有一系列由同一個身份標識的一個擴展身份標識所生成的ECC私鑰或公鑰對;一個所述ECC私鑰組或密鑰對組及其密鑰對象與一個對應相同身份標識的偽公鑰和偽數(shù)字證書相對應;一個所述ECC私鑰組或密鑰對組密鑰對象作為一個密鑰對象用一個密鑰對象標識符標識,并通過密鑰對象標識符被當作對應的偽公鑰和偽數(shù)字證書的對應私鑰或密鑰對使用;所述ECC公鑰組或ECC私鑰組或密鑰對組的密鑰對象數(shù)據(jù)中,除了保存有每個擴展身份標識對應的ECC公鑰或ECC私鑰或密鑰對外,還保存有對應的身份標識信息以及每個ECC公鑰或ECC私鑰或密鑰對所對應的擴展身份標識信息; 所述密鑰對象指各種密鑰包括公鑰、私鑰、密鑰對以及對稱密鑰在密碼模塊中的數(shù)據(jù)存在形式;所述密鑰對象包括存儲在永久存儲介質(zhì)上的永久密鑰對象和存儲在臨時存儲介質(zhì)上的臨時密鑰對象,并分別對應有永久密鑰對象標識符和臨時密鑰對象標識符; 所述密碼模塊和ECC密鑰生成系統(tǒng)預定或配置有身份標識限定策略;密碼模塊處的身份標識限定策略規(guī)定或限定了在數(shù)據(jù)加密或數(shù)字簽名時一個身份標識所對應的擴展身份標識,即規(guī)定或限定了在數(shù)據(jù)加密時所采用的ECC公鑰所對應的擴展身份標識或在數(shù)字簽名時所采用的ECC私鑰所對應的擴展身份標識,也即在數(shù)據(jù)加密或數(shù)字簽名時哪一個擴展身份標識所對應的ECC公鑰或ECC私鑰被采用;ECC密鑰生成系統(tǒng)處的身份標識限定策略規(guī)定或限定了在生成一個擴展身份標識對應的ECC私鑰時需要滿足的必要條件;所述預定的身份標識限定策略指已編碼在程序中的不能更改的身份標識限定策略;所述配置的身份標識限定策略指可修改、設定的身份標識限定策略; 所述密碼應用程序按使用公鑰及其對應私鑰或密鑰對的方式使用偽公鑰及其對應的私鑰或密鑰對,包括使用偽公鑰及其對應私鑰或密鑰對的密鑰對象; 所述密碼應用程序按使用 數(shù)字證書及其對應私鑰或密鑰對的方式使用偽數(shù)字證書及其對應私鑰或密鑰對,包括使用偽數(shù)字證書對應私鑰或密鑰對的密鑰對象; 若密碼應用程序不使用數(shù)字證書而是直接使用公鑰或私鑰或密鑰對進行數(shù)據(jù)加密和解密,簽名和簽名驗證,則所述偽數(shù)字證書、偽數(shù)字證書簽發(fā)系統(tǒng)以及偽數(shù)字證書簽發(fā)客戶端不再存在; 若僅密碼應用程序從所述偽數(shù)字證書簽發(fā)系統(tǒng)獲取偽數(shù)字證書,則所述偽數(shù)字證書簽發(fā)客戶端不再存在。
2.根據(jù)權利要求1所述的基于標識的橢圓曲線密碼系統(tǒng),其特征是: 當所述偽數(shù)字證書簽發(fā)客戶端或密碼應用程序調(diào)用所述密碼模塊的密鑰操作接口進行針對公鑰或私鑰或密鑰對的密鑰操作時,所述密碼模塊針對不同的密鑰操作接口調(diào)用分別按如下方式進行處理: 操作調(diào)用A:對于生成私鑰或密鑰對的接口調(diào)用,在存儲介質(zhì)中創(chuàng)建一個包括一個空的ECC私鑰組或密鑰對組的密鑰對象,并將通過人機界面獲得的身份標識信息保存在新生成的密鑰對象中,然后將返回的密鑰對象標識符指向新生成的ECC私鑰組或密鑰對組的密鑰對象;或者生成一個所述偽公鑰的數(shù)據(jù)結構所標識的或約定的公開密鑰密碼算法的私鑰或密鑰對的密鑰對象,然后將返回的密鑰對象標識符指向新生成的密鑰對象;所述操作調(diào)用是生成一個ECC私鑰組或密鑰對組的密鑰對象,還是生成一個所述偽公鑰的數(shù)據(jù)結構所標識的或約定的公開密鑰密碼算法的私鑰或密鑰對的密鑰對象,由用戶通過人機界面選擇決定,或者由所述密碼模塊的配置信息決定,或者由密碼模塊程序固定設定; 操作調(diào)用B:對于生成私鑰組或密鑰對組的接口調(diào)用,在存儲介質(zhì)中創(chuàng)建一個包括一個空的ECC私鑰組或密鑰對組的密鑰對象,并將通過調(diào)用接口或人機界面獲得的身份標識信息保存在新生成的密鑰對象中,然后將返回的密鑰對象標識符指向新生成的ECC私鑰組或密鑰對組的密鑰對象;操作調(diào)用C:對于生成ECC公鑰組的接口調(diào)用,在存儲介質(zhì)中創(chuàng)建一個包括一個空的ECC公鑰組的密鑰對象,并將通過調(diào)用接口或人機界面獲得的身份標識信息保存在新生成的密鑰對象中,然后將返回的密鑰對象標識符指向新生成的ECC公鑰組的密鑰對象; 操作調(diào)用D:對于使用ECC私鑰組或密鑰對組密鑰對象的密鑰對象標識符導出私鑰或密鑰對的接口調(diào)用,返回出錯; 操作調(diào)用E:對于使用ECC私鑰組或密鑰對組密鑰對象的密鑰對象標識符導出ECC私鑰組或密鑰對組的接口調(diào)用,返回密鑰對象標識符指向的密鑰對象的ECC私鑰組或密鑰對組中所有ECC私鑰或密鑰對,以及對應的身份標識和擴展身份標識信息; 操作調(diào)用F:對于使用ECC公鑰組密鑰對象的密鑰對象標識符導出ECC公鑰組的接口調(diào)用,返回密鑰對象標識符指向的密鑰對象的ECC公鑰組中所有ECC公鑰,以及對應的身份標識和擴展身份標識信息; 操作調(diào)用G:對于使用ECC私鑰組或密鑰對組密鑰對象的密鑰對象標識符導出公鑰的接口調(diào)用,從密鑰對象標識符指向的密鑰對象中獲取對應的身份標識,生成身份標識對應的偽公鑰,然后返回生成的偽公鑰; 操作調(diào)用H:對于導入ECC公鑰組的接口調(diào)用,在存儲介質(zhì)中創(chuàng)建一個ECC公鑰組的密鑰對象,并將通過調(diào)用接口輸入的要導入的ECC公鑰組中的所有ECC公鑰以及對應的身份標識和擴展身份標識信息加入到新創(chuàng)建的密鑰對象中,然后將返回的密鑰對象標識符指向新生成的ECC公鑰組密鑰對象; 操作調(diào)用1:對于導入ECC私鑰組或密鑰對組的接口調(diào)用,在存儲介質(zhì)中創(chuàng)建一個ECC私鑰組或密鑰對組的密鑰對象,并將通過調(diào)用接口輸入的要導入的ECC私鑰組或密鑰對組中的所有ECC私鑰或密鑰對以及對應的身份標識和擴展身份標識信息加入到新創(chuàng)建的密鑰對象中,然后將返回的密鑰對象標識符指向新生成的ECC私鑰組或密鑰對組的密鑰對象;` 操作調(diào)用J:對于使用ECC私鑰組或密鑰對組的密鑰對象的密鑰對象標識符刪除私鑰或密鑰對密鑰對象的接口調(diào)用,在存儲介質(zhì)中清除對象標識符所指的密鑰對象; 操作調(diào)用K:對于使用ECC公鑰組的密鑰對象的密鑰對象標識符刪除公鑰組的接口調(diào)用,在存儲介質(zhì)中清除密鑰對象標識符所指的密鑰對象; 操作調(diào)用L:對于導入公鑰的接口調(diào)用,檢查導入的公鑰是否是偽公鑰,如果不是,則按導入正常的公鑰的方式完成導入公鑰的處理;否則,按如下方式處理: 步驟L1:在存儲介質(zhì)中創(chuàng)建一個偽公鑰的密鑰對象,將要導入的偽公鑰保存在創(chuàng)建的偽公鑰密鑰對象中; 步驟L2:從偽公鑰中獲取身份標識信息; 步驟L3:查看存儲介質(zhì)中是否已有身份標識對應的ECC公鑰組密鑰對象,若是,則將步驟LI創(chuàng)建的偽公鑰的密鑰對象與對應的ECC公鑰組密鑰對象相關聯(lián),并將返回的密鑰對象標識符指向創(chuàng)建的偽公鑰的密鑰對象,完成偽公鑰的導入處理;否則,返回出錯; 操作調(diào)用M:對于使用偽公鑰密鑰對象的密鑰對象標識符導出公鑰的接口調(diào)用,導出密鑰對象標識符指向的偽公鑰密鑰對象中的偽公鑰; 操作調(diào)用N:對于使用偽公鑰密鑰對象的密鑰對象標識符刪除公鑰密鑰對象的接口調(diào)用,在存儲介質(zhì)中清除密鑰對象標識符所指的偽公鑰密鑰對象。
3.根據(jù)權利要求1所述的基于標識的橢圓曲線密碼系統(tǒng),其特征是: 當所述密碼應用程序使用偽公鑰密鑰對象的密鑰對象標識符調(diào)用所述密碼模塊進行數(shù)據(jù)加密操作時,所述密碼模塊按如下方式進行處理: 第I步:從密鑰對象標識符所指的偽公鑰密鑰對象中獲取對應的身份標識,用獲取的身份標識生成一個與預定或配置的身份標識限定策略相對應的擴展身份標識; 第2步:查看密鑰對象標識符指向的偽公鑰密鑰對象所關聯(lián)的ECC公鑰組密鑰對象的ECC公鑰組中是否有所述第I步生成的擴展身份標識對應的ECC公鑰,若沒有,轉(zhuǎn)入第3步;若有,則從所關聯(lián)的ECC公鑰組密鑰對象的ECC公鑰組中獲得對應的ECC公鑰,然后轉(zhuǎn)入第5步; 第3步:使用所述第I步生成的擴展身份標識從ECC密鑰生成系統(tǒng)請求獲取擴展身份標識對應的ECC公鑰; 第4步:將獲得的ECC公鑰及對應的擴展身份標識及加入到當前使用的偽公鑰密鑰對象所關聯(lián)的ECC公鑰組密鑰對象的ECC公鑰組中; 第5步:使用獲得的ECC公鑰對數(shù)據(jù)進行加密,并將當前使用的ECC公鑰對應的擴展身份標識的信息作為附加數(shù)據(jù)或填充數(shù)據(jù)附加或填充到被加密的數(shù)據(jù)中,完成處理后返回結果; 所述第5步中將當前使用的ECC公鑰對應的擴展身份標識的信息作為附加數(shù)據(jù)或填充數(shù)據(jù)附加或填充到被加密的數(shù)據(jù)中的操作處理,是指將擴展身份標識信息加入到經(jīng)ECC公鑰密碼運算后的數(shù)據(jù)本身中,而不是作為加密密鑰的密鑰標識信息或密鑰標識信息的一部分放入到加密數(shù)據(jù)信封的接收者信息中。
4.根據(jù)權利要求1所述的基于標識的橢圓曲線密碼系統(tǒng),其特征是: 當所述密碼應用程序使用ECC私鑰組或密鑰對組密鑰對象的密鑰對象標識符調(diào)用所述密碼模塊進行數(shù)據(jù)解密操作時,所述密碼模塊按如下方式進行處理: 第A步:通過加密數(shù)據(jù)的附加數(shù)據(jù)或填充數(shù)據(jù)獲得數(shù)據(jù)加密時所用ECC公鑰的對應擴展身份標識; 第B步:查看密鑰對象標識符指向的密鑰對象的ECC私鑰組或密鑰對組中是否有所述第A步獲得的擴展身份標識對應的ECC私鑰或密鑰對,若沒有,轉(zhuǎn)入第C步;若有,則從密鑰對象標識符指向的密鑰對象的ECC私鑰組或密鑰對組中獲得對應的ECC私鑰或密鑰對,然后轉(zhuǎn)入第E步; 第C步:使用所述第A步獲得的擴展身份標識從ECC密鑰生成系統(tǒng)請求獲取擴展身份標識對應的ECC私鑰或密鑰對; 第D步:將獲得的ECC私鑰或密鑰對及對應的擴展身份標識及加入到當前使用的ECC私鑰組或密鑰對組密鑰對象的ECC私鑰組或密鑰對組中; 第E步:使用獲得的ECC私鑰或密鑰對中的私鑰解密加密的數(shù)據(jù),完成處理后返回結果O
5.根據(jù)權利要求1所述的基于標識的橢圓曲線密碼系統(tǒng),其特征是: 當所述密碼應用程序使用ECC私鑰組或密鑰對組的密鑰對象的密鑰對象標識符調(diào)用所述密碼模塊對數(shù)據(jù)進行數(shù)字簽名操作時,所述密碼模塊按如下方式進行處理: 步驟1:從密鑰對象標識符所指的ECC私鑰組或密鑰對組密鑰對象中獲取的對應身份標識,用獲取的身份標識生成一個與預定或配置的身份標識限定策略相對應的擴展身份標識; 步驟2:查看密鑰對象標識符指向的ECC私鑰組或密鑰對組密鑰對象的ECC私鑰組或密鑰對組中是否有所述步驟I生成的擴展身份標識對應的ECC私鑰或密鑰對,若沒有,轉(zhuǎn)入步驟3 ;若有,則從密鑰對象標識符指向的ECC私鑰組或密鑰對組密鑰對象的ECC私鑰組或密鑰對組中獲得對應的ECC私鑰或密鑰對,然后轉(zhuǎn)入步驟5 ; 步驟3:使用所述步驟I生成的擴展身份標識從ECC密鑰生成系統(tǒng)請求獲取擴展身份標識對應的ECC私鑰或密鑰對; 步驟4:將獲得的對應ECC私鑰或密鑰對及對應的擴展身份標識及加入到當前使用的ECC私鑰組或密鑰對組中; 步驟5:使用獲得的ECC私鑰或密鑰對中的私鑰對數(shù)據(jù)進行數(shù)字簽名,將當前使用的ECC私鑰或密鑰對所對應的擴展身份標識的信息作為附加數(shù)據(jù)或填充數(shù)據(jù)附加或填充到被簽名的數(shù)據(jù)中,完成處理后返回結果; 所述步驟5中將當前使用的ECC私鑰或密鑰對所對應的擴展身份標識的信息作為附加數(shù)據(jù)或填充數(shù)據(jù)附加或填充到被簽名的數(shù)據(jù)中的操作處理,是指將擴展身份標識信息加入到經(jīng)ECC私鑰密碼算后的數(shù)據(jù)本身中,而不是作為簽名者密鑰標識信息或密鑰標識信息的一部分放入到簽名后形成的數(shù)據(jù)結構的簽名者信息中。
6.根據(jù)權利要求1所述的基于標識的橢圓曲線密碼系統(tǒng),其特征是: 當所述密碼應用程序使用偽公鑰密鑰對象的密鑰對象標識符調(diào)用所述密碼模塊對簽名數(shù)據(jù)進行簽名驗證操作時,所述密碼模塊按如下方式進行處理: 步驟A:通過簽名數(shù)據(jù)的附加數(shù)據(jù)或填充數(shù)據(jù)獲得簽名時所用ECC私鑰的對應擴展身份標識; 步驟B:查看密鑰對象標識符指向的偽公鑰密鑰對象所關聯(lián)的ECC公鑰組密鑰對象的ECC公鑰組中是否有所述步驟A中獲得的擴展身份標識對應的ECC公鑰,若沒有,轉(zhuǎn)入步驟C ;若有,則從所關聯(lián)的ECC公鑰組密鑰對象的ECC公鑰組中獲得對應的ECC公鑰,然后轉(zhuǎn)入步驟E ; 步驟C:使用所述步驟A獲得的擴展身份標識從ECC密鑰生成系統(tǒng)請求獲取擴展身份標識對應的ECC公鑰; 步驟D:將獲得的對應ECC公鑰及對應擴展身份標識及加入到當前使用的偽公鑰密鑰對象關聯(lián)的ECC公鑰組密鑰對象的ECC公鑰組中; 步驟E:使用獲得的ECC公鑰對簽名數(shù)據(jù)進行簽名驗證,完成處理后返回結果。
7.根據(jù)權利要求1所述的基于標識的橢圓曲線密碼系統(tǒng),其特征是: 當用戶通過所述偽數(shù)字證書簽發(fā)客戶端或密碼應用程序從所述偽數(shù)字證書簽發(fā)系統(tǒng)請求獲取一張身份標識對應的偽數(shù)字證書時,所述偽數(shù)字證書簽發(fā)系統(tǒng)按如下步驟進行處理: 步驟1:查看內(nèi)存或數(shù)據(jù)庫中是否緩存有或保存有請求中的擴展身份標識對應的偽數(shù)字證書,若有,則返回對應的偽數(shù)字證書;否則,轉(zhuǎn)入步驟II ; 步驟I1:利用請求中的身份標識信息生成對應的偽公鑰,然后使用偽數(shù)字證書簽發(fā)CA的私鑰簽發(fā)一張證書持有者公鑰是偽公鑰的偽數(shù)字證書,之后將簽發(fā)的偽數(shù)字證書緩存在內(nèi)存中或保存在數(shù)據(jù)庫中,最后返回簽發(fā)的偽數(shù)字證書; 所述偽數(shù)字證書簽發(fā)系統(tǒng)針對同一身份標識所簽發(fā)的偽數(shù)字證書的簽發(fā)者名和序列號相同。
8.根據(jù)權利要求1所述的基于標識的橢圓曲線密碼系統(tǒng),其特征是: 若所述基于標識的橢圓曲線密碼系統(tǒng)僅用于數(shù)據(jù)加密應用,則所述偽數(shù)字證書簽發(fā)系統(tǒng)是一個獨立運行的系統(tǒng),或者與所述偽數(shù)字證書簽發(fā)客戶端合并為一個運行于用戶端的偽數(shù)字證書簽發(fā)工具; 若所述偽數(shù)字證書簽發(fā)系統(tǒng)與所述偽數(shù)字證書簽發(fā)客戶端合并為一個運行于用戶端的偽數(shù)字證書簽發(fā)工具,則每個用戶或密碼應用程序通過所述偽數(shù)字證書簽發(fā)工具獨立生成加密或解密所需的偽數(shù)字證書,包括帶私鑰和不帶私鑰的偽數(shù)字證書;不同用戶或密碼應用程序通過所述偽數(shù)字證書簽發(fā)工具針對同一個身份標識獨立生成的偽數(shù)字證書的簽發(fā)者名和序列號相同;不同用戶的偽數(shù)字證書簽發(fā)工具所使用的證書簽發(fā)CA及其上級CA的CA證書的簽發(fā)者名、主題名和序列號相同,但證書簽發(fā)CA及其上級CA的CA證書的密鑰對不同。
9.根據(jù)權利要求1所述的基于標識的橢圓曲線密碼系統(tǒng),其特征是: 當所述密碼模塊從ECC密鑰生成系統(tǒng)請求獲取一個擴展身份標識所對應的ECC公鑰時,所述ECC密鑰生成系統(tǒng)按如下步驟處理: 步驟一:查看內(nèi)存或數(shù) 據(jù)庫中是否緩存或保存有請求中的擴展身份標識對應ECC公鑰,若有,則返回對應的ECC公鑰;否則,轉(zhuǎn)入步驟二 ; 步驟二:將請求中的擴展身份標識與ECC密鑰生成系統(tǒng)的種子數(shù)據(jù)通過運算生成擴展身份標識對應的ECC私鑰,并進而計算得到對應的ECC公鑰,然后將計算得到的ECC公鑰緩存在內(nèi)存中或保存在數(shù)據(jù)庫中,最后返回計算得到的對應的ECC公鑰; 若所述基于標識的橢圓曲線密碼系統(tǒng)采用由兩個或兩個以上的使用相同ECC系統(tǒng)參數(shù)和不同種子數(shù)據(jù)的ECC密鑰生成系統(tǒng)通過分割方式生成ECC公鑰,則每個ECC密鑰生成系統(tǒng)生成的擴展身份標識對應的ECC公鑰的橢圓曲線群和是最終的ECC公鑰。
10.根據(jù)權利要求1所述的基于標識的橢圓曲線密碼系統(tǒng),其特征是: 當所述密碼模塊從ECC密鑰生成系統(tǒng)請求獲取一個擴展身份標識所對應的ECC私鑰或密鑰對時,所述ECC密鑰生成系統(tǒng)按如下步驟處理: 第I步:驗證和確認請求方的用戶就是擴展身份標識對應的身份標識的擁有者,若驗證通過,則轉(zhuǎn)入下一步;否則,返回拒絕,并給出拒絕的原因; 第II步:根據(jù)請求中的擴展身份標識中的限定策略確定當前是否符合為用戶生成擴展身份標識對應私鑰的條件,若是,則轉(zhuǎn)入下一步;否則,返回拒絕,并給出拒絕的原因; 第III步:將請求中的擴展身份標識與ECC密鑰生成系統(tǒng)的種子數(shù)據(jù)通過運算生成擴展身份標識對應的ECC私鑰,并返回生成的ECC私鑰; 若請求是生成ECC密鑰對,則由ECC密鑰生成系統(tǒng)利用生成的ECC私鑰計算得到對應的ECC公鑰并返回生成和計算得到的ECC私鑰和公鑰,或者僅返回生成的ECC私鑰,由調(diào)用方的密碼模塊利用獲得的ECC私鑰計算得到對應的ECC公鑰; 若所述基于標識的橢圓曲線密碼系統(tǒng)采用由兩個或兩個以上的使用相同ECC系統(tǒng)參數(shù)和不同種子數(shù)據(jù)的ECC密鑰生成系統(tǒng)通過分割方式生成ECC私鑰,則每個ECC密鑰生成系統(tǒng)生成的擴展身份標識對應的EC`C私鑰的代數(shù)和是最終ECC私鑰的ECC私鑰。
【文檔編號】H04L9/30GK103560882SQ201310520985
【公開日】2014年2月5日 申請日期:2013年10月29日 優(yōu)先權日:2013年10月29日
【發(fā)明者】龍毅宏 申請人:武漢理工大學
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
乐平市| 伊春市| 左权县| 宜良县| 新竹县| 望谟县| 惠来县| 石门县| 徐闻县| 南岸区| 松桃| 克山县| 岳阳市| 隆尧县| 乌拉特后旗| 琼中| 岢岚县| 常州市| 乐昌市| 江津市| 阿城市| 建始县| 大足县| 浙江省| 克什克腾旗| 稻城县| 唐海县| 喀喇| 行唐县| 青川县| 夹江县| 阳信县| 望城县| 江北区| 曲周县| 黎平县| 商水县| 克东县| 定边县| 寿宁县| 晋州市|