專利名稱:非公鑰算法簽名/驗證方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種網(wǎng)絡(luò)通信中的鑒定方法,特別涉及一種關(guān)于身份鑒定和消息確認(rèn)的簽名/驗證方法。
傳統(tǒng)密碼術(shù)使用對稱密碼體制,又稱單鑰或私鑰密碼體制,如DES。在私鑰密碼體制中,加密密鑰與解密密鑰相同或彼此之間容易確定。一個n用戶的私鑰密碼系統(tǒng)中,共需要n(n-1)/2個密鑰,每個用戶保管一個自己的加密密鑰和n-1個其它用戶的解密密鑰,即共n個密鑰。其特點是速度快且不易破解。
非對稱密碼體制也稱雙鑰密碼體制或公鑰密碼體制,其中解密密鑰和加密密鑰不同,從一個難于推出另一個,解密和加密是可分離的。在一個n用戶的公鑰密碼系統(tǒng)中,存在n個私鑰和n個公鑰。每個用戶只須保存他自己的私鑰。最流行的公鑰密碼算法是RSA算法,而ECC算法則被認(rèn)為是最有可能取代RSA的公鑰密碼算法。但與對稱鑰算法相比,無論RSA還是ECC都過于復(fù)雜,速度慢且硬件上難于實現(xiàn),因此,對它們的使用經(jīng)常以效率的極大下降為代價。
隨著Internet和電子商務(wù)的快速發(fā)展,密碼術(shù)越來越多地用于商用和民用系統(tǒng)之中,這就為網(wǎng)絡(luò)保密通信提出了新的課題。如,用戶B從網(wǎng)絡(luò)上接收到用戶A送來的加密消息,密文c=E(m),由于密鑰是用戶A和用戶B雙方私下商定的,僅用戶A和用戶B雙方掌握,因此,用戶B可以修改密文,用戶A也可以抵賴。若通信雙方發(fā)生爭執(zhí)糾紛,法律上無法判定誰是誰非。在公鑰系統(tǒng)中,用戶C可以截獲用戶B發(fā)送給用戶A的一條消息并利用用戶A的公鑰加密另一條消息發(fā)送出去,而用戶A無法判定該消息是否為用戶B所發(fā)。在這種情況下,數(shù)字簽名應(yīng)運而生,并開始用于商業(yè)通信系統(tǒng)。數(shù)字簽名使得消息的接收者能夠證實消息的發(fā)送者并且能驗證消息字發(fā)送后未經(jīng)改動。
一個簽名方法至少應(yīng)具有以下五個特性1.簽名者事后不能否認(rèn)自己的簽名。
2.接收者能驗證簽名,而任何其它人都不能偽造簽名。
3.簽名文件不能被重新利用。
4.簽名不能被重復(fù)使用。
5.簽名文件不能被替換。
基于公鑰密碼體制和私鑰密碼體制都可以獲得數(shù)字簽名。目前流行的簽名/驗證方法多基于公鑰密碼算法,如RSA數(shù)字簽名方法和數(shù)字簽名標(biāo)準(zhǔn)(DES)。但由于公鑰密碼算法較復(fù)雜、速度慢、靈活性差、硬件實現(xiàn)困難,并且它的安全性完全取決于它所依據(jù)的問題的計算復(fù)雜性,因而,基于公鑰密碼體制的數(shù)字簽名/驗證方法已不能滿足人們在效率和安全性上的要求。
本發(fā)明的目的在于提供一種快速安全的數(shù)字簽名/驗證方法。
在本方法中涉及一種特殊的變換模塊。該變換模塊的輸入由一個固定長度的部分和一個任意長度的部分組成,輸出的長度固定。其特點為,在給定輸入部分的情況下,通過該模塊計算其輸出是容易的。給定一對隨機選擇的輸入部分,找另一對輸入,使得二者的輸出相同是計算上不可行的。在已知任意長度的輸入部分和輸出后,可以由輸出逆推得出其固定長度的輸入部分。即,該變換模塊具有部分可逆性。
在非公鑰算法簽名/驗證方法中,管理者首先為每個用戶分配一個只有用戶和管理中心知道的個人鑰G唯一標(biāo)志該用戶身份。當(dāng)用戶A需要向另一用戶B發(fā)送一條消息時,該用戶向管理中心提出請求,管理中心生成一個真隨機數(shù)R,將該真隨機數(shù)R和用戶A的個人鑰GA作為一變換模塊逆推過程的輸入,生成發(fā)送密鑰SNAB,并發(fā)送給用戶A。同時,管理中心將同一真隨機數(shù)R和用戶B的個人鑰GB作為一變換模塊逆推過程的輸入,生成接收密鑰ANAB,并發(fā)送給用戶B。同時,管理中心在網(wǎng)絡(luò)中公布一個時戳T。用戶A將待發(fā)送消息、用戶A的簽名、時戳、發(fā)送密鑰SNAB、個人鑰GA作為簽名/認(rèn)證模塊的輸入,并得到輸出的消息摘要。然后,用戶A將待發(fā)送消息和消息摘要通過公共網(wǎng)絡(luò)發(fā)送給用戶B。用戶B將接收到的消息、消息摘要、接收密鑰ANAB、個人鑰GB作為簽名/驗證模塊的輸入,并輸出用戶A的簽名和時戳以鑒別該消息是否為用戶A所發(fā)。用戶的個人鑰和簽名/認(rèn)證過程被物理封裝起來,其內(nèi)部的任何數(shù)據(jù)都無法被修改或讀出,使得攻擊者無法獲取個人鑰和變換模塊及其逆推過程的信息。
由于個人鑰只有管理中心和用戶持有,因而簽名者事后不能否認(rèn)自己的簽名,也正因為此,簽名無法被偽造、無法被重復(fù)使用,同時,簽名文件無法被替換。接收密鑰中含有接收者個人鑰信息,接收者可利用接收密鑰和本人的個人鑰得到發(fā)送者的簽名和時戳,從而達到驗證該文件發(fā)送方的目的。時戳的使用則使得簽名文件不能被再次利用。因而,非公鑰算法簽名/驗證方法滿足簽名算法的五條特性。
非公鑰算法簽名/驗證方法僅使用分組加密算法構(gòu)成變換模塊來完成簽名/驗證功能,因而,與基于公鑰密碼體制的數(shù)字簽名/驗證方法相比,其最主要的優(yōu)勢在于速度快、靈活性強、硬件實現(xiàn)成本遠(yuǎn)低于一般的公鑰密碼算法。
在產(chǎn)生發(fā)送密鑰和接收密鑰的過程中加入了真隨機數(shù),真隨機數(shù)對于外界不可見,并使得發(fā)送密鑰和接收密鑰與個人鑰之間的信息熵降低至接近于零,大大增加攻擊者破解個人密鑰的難度。
下面結(jié)合附圖對本發(fā)明作進一步詳細(xì)的描述。
圖1是非公鑰算法簽名/驗證方法的整體框架圖。
圖2是管理者生成傳輸密鑰SNAB和ANAB過程的示意圖。
圖3是用戶簽名/驗證過程的示意圖。
圖4是用分組加密模塊構(gòu)造變換模塊的一種方法。
圖5是圖4所示變換模塊逆推過程的示意圖。
非公鑰算法簽名/驗證方法的整體框架圖如圖1所示。系統(tǒng)中有一個管理者1和若干個用戶2以及連接管理者1和用戶2的公共網(wǎng)絡(luò)3。
管理者首先為每個用戶分配一個只有用戶和管理中心知道的個人鑰G唯一標(biāo)志該用戶身份。當(dāng)用戶A需要向另一用戶B發(fā)送一條消息時,該用戶向管理中心提出請求,管理中心生成發(fā)送密鑰SNAB并發(fā)送給用戶A,生成接收密鑰ANAB并發(fā)送給用戶B。同時,管理中心在網(wǎng)絡(luò)中公布一個時戳T。用戶A將待發(fā)送消息、用戶A的簽名、時戳T、發(fā)送密鑰SNAB作為簽名/認(rèn)證模塊的輸入,并得到消息摘要。然后,用戶A將待發(fā)送消息和消息摘要通過公共網(wǎng)絡(luò)發(fā)送給用戶B。用戶B將接收到的消息、消息摘要、接收密鑰ANAB作為簽名/驗證模塊的輸入,并輸出用戶A的簽名和時戳以鑒別該消息是否為用戶A所發(fā)。
如果用戶B需要向用戶A發(fā)送消息,則管理中心生成發(fā)送密鑰SNBA并發(fā)送給用戶B,生成接收密鑰ANBA并發(fā)送給用戶A。
圖2為管理者生成傳輸密鑰SNAB和ANAB過程的示意圖。管理者收到用戶A的發(fā)送請求后,首先生成一個真隨機數(shù)RAB’并以用戶A的個人鑰GA作為變換模塊I(逆推)的密鑰,變換真隨機數(shù)RAB得到發(fā)送密鑰SNAB。同時,管理者以用戶B的個人鑰GB作為變換模塊I(逆推)的密鑰,變換同一真隨機數(shù)RAB得到接收密鑰SNAB。
管理者生成傳輸密鑰SNBA和ANBA時,則使用另一個獨立的真隨機數(shù)RBA變換得出。
圖3為用戶A簽名/驗證過程的示意圖。該模塊中有兩個變換子模塊,圖2中的變換模塊I(逆推)即為本圖中變換模塊I的逆推過程。同時,該模塊被物理封裝起來,使得其內(nèi)部的任何數(shù)據(jù)都無法被修改或讀出,因而,攻擊者無法獲取用戶的個人鑰和簽名/認(rèn)證過程的信息。
用戶A以封裝在模塊內(nèi)部的個人鑰GA作為變換模塊I的密鑰,將發(fā)送密鑰SNAB壓縮得到圖2中由管理者所產(chǎn)生的真隨機數(shù)RAB,并將該真隨機數(shù)RAB和待發(fā)送消息作為變換模塊II的密鑰,將用戶A的簽名和時戳壓縮成一消息摘要。
用戶B使用同樣的框架結(jié)構(gòu)和變換模塊,其消息摘要生成方法與用戶A類似,區(qū)別僅為封裝在模塊中的密鑰為GB,輸入的發(fā)送密鑰為SNBA,而經(jīng)由變換模塊I(逆推)而恢復(fù)的真隨機數(shù)則為RBA。
當(dāng)用戶A收到聲稱為用戶B發(fā)來的消息和消息摘要時,將以個人鑰GA作為變換模塊I的密鑰,將接收密鑰ANBA壓縮得到圖2中由管理者所產(chǎn)生的真隨機數(shù)RBA,然后將該真隨機數(shù)RBA和接收到的消息作為變換模塊II(逆推)的密鑰,將接收到的消息摘要還原成簽名和時戳,從而可以判別該消息是否為用戶B所發(fā)。
用戶B驗證聲稱用戶A所發(fā)消息的方法也類似,只是個人鑰,接收密鑰將有相應(yīng)的改變。
用分組加密算法構(gòu)造變換模塊的一種方法如圖4所示。非公鑰算法簽名/驗證方法的簽名/驗證過程僅由變換模塊及其逆推過程構(gòu)成,而變換模塊及其逆推過程僅由分組加密算法構(gòu)成。圖中LI為變換模塊的輸入部分,TEXT為變換模塊的密鑰,LO為變換模塊的輸出部分,E(G)為一用密鑰G加密輸入消息的分組加密算法。其中,輸入部分LI的長度和輸出部分LO的長度均為分組加密算法E(G)的分組長度的e倍。在該模塊中,將輸入部分LI按照分組加密算法E(G)的分組長度分成LI1,LI2,...,LIe這e組輸入,則每輪有e個分組加密算法E(G)對這e組輸入進行處理。將TEXT按密鑰的長度將其分成G1,G2,...,Gs這s個密鑰(其中Gs中不足部分可用0或1或其它某一預(yù)定字符補齊),則共進行s輪分組加密算法E(G)的運算,并且,每一輪的運算前都通過特定的置換以達到混亂和擴散的目的。因此,在整個模塊中,一共要運行e*s次分組加密算法E(G)。由最后一輪分組加密算法E(G)的結(jié)果得到e個輸出LO1,LO2,...,LOe,將這e個輸出合并即得到整個變換模塊的輸出LO。
圖5為圖4所示變換模塊逆推過程的示意圖。圖中LO為變換模塊逆推過程的輸入部分,亦即變換模塊的輸出部分,變換模塊逆推過程的密鑰與變換模塊的密鑰TEXT相同,LI為變換模塊逆推過程的輸出部分,即變換模塊的輸入部分。D(G)為一用密鑰G加解密輸入消息的分組加密算法,為圖4所示分組加密算法E(G)的逆過程。顯然,解密算法D(G)的分組長度與加密算法E(G)的分組長度相同。其中,輸入部分LO的長度和輸出部分LI的長度與圖4中LO和LI的長度相同。在該模塊中,將輸入部分LO按照分組加密算法D(G)的分組長度分成LO1,LO2,...,LOe這e組輸入,則每輪有e個分組加密算法D(G)對這e組輸入進行處理。將TEXT按密鑰的長度將其分成G1,G2,...,Gs這s個密鑰(其中Gs中不足部分可用0或1或其它某一預(yù)定字符補齊),則共進行s輪分組加密算法D(G)的運算,并且,每一輪的運算前也須通過特定的置換以達到逆推的目的。因此,在整個模塊中,一共要運行e*s次分組加密算法D(G)。由最后一輪分組加密算法D(G)的結(jié)果得到e個輸出LI1,LI2,...,LIe,將這e個輸出合并即得到整個變換模塊逆推過程的輸出LI。
本發(fā)明可用于電子郵件、電子轉(zhuǎn)帳、辦公室自動化等通信系統(tǒng)。下面以電子郵件為例說明非公鑰算法簽名/驗證方法的具體應(yīng)用。
管理中心首先為每個用戶分配一個只有用戶和管理中心知道的個人鑰G唯一標(biāo)志該用戶身份。每個用戶有一個具有保護功能的硬件將用戶的個人鑰和簽名/認(rèn)證過程物理封裝起來,內(nèi)部的任何數(shù)據(jù)都無法被修改或讀出,使得攻擊者無法獲取個人鑰和變換模塊的信息。另外,管理中心還向網(wǎng)絡(luò)中公布一個時戳T。當(dāng)用戶A需要向另一用戶B發(fā)送電子郵件時,該用戶向管理中心提出請求,管理中心生成一個真隨機數(shù)RAB,將該真隨機數(shù)RAB和用戶A的個人鑰GA作為一個變換模塊逆推過程的輸入,生成發(fā)送密鑰SNAB,并發(fā)送給用戶A。同時,管理中心將同一真隨機數(shù)RAB和用戶B的個人鑰GB作為一個變換模塊逆推過程的輸入,生成接收密鑰ANAB,并發(fā)送給用戶B。用戶A將郵件內(nèi)容、用戶A的簽名、時戳、發(fā)送密鑰SNAB、個人鑰GA作為簽名模塊的輸入,并得到輸出消息摘要。然后,用戶A將郵件內(nèi)容和消息摘要通過公共網(wǎng)絡(luò)發(fā)送給用戶B。用戶B將接收到的郵件、消息摘要、接收密鑰ANAB、個人鑰GB作為驗證模塊的輸入,得到用戶A的簽名和時戳以鑒別該電子郵件是否為用戶A所發(fā)。由于用戶A的個人鑰GA只有管理中心和用戶A本人持有,因而用戶A事后不能否認(rèn)自己的簽名,即不能否認(rèn)該郵件為自己所發(fā)。也正因為此,其它用戶無法偽造用戶A的簽名。用戶B收到用戶A發(fā)來的經(jīng)過簽名的電子郵件后,因變換模塊摘要中不但有用戶A的簽名信息和郵件內(nèi)容信息,還有用戶A的個人鑰信息,所以無法替換該簽名文件,也無法重復(fù)使用用戶A的簽名。
雖然僅僅為了說明的目的公開了或披露了本發(fā)明的優(yōu)選實施例,但是現(xiàn)有技術(shù)中的普通技術(shù)人員都應(yīng)當(dāng)理解本發(fā)明并不限于這些實施例,只要不背離本發(fā)明及其所屬權(quán)利要求的范圍和精神。
權(quán)利要求
1.一種通信網(wǎng)絡(luò)中的簽名/驗證方法,由一個管理者(1)和若干個用戶(2)以及連接管理者(1)和用戶(2)的公共網(wǎng)絡(luò)(3)組成,其特征在于簽名/認(rèn)證過程僅使用分組加密算法構(gòu)成的變換模塊完成。
2.根據(jù)權(quán)利要求1的簽名/驗證方法,其特征在于管理者先通過某一安全途徑為每一用戶發(fā)放一個人鑰G,該個人鑰G只有用戶本人和管理中心持有。
3.根據(jù)權(quán)利要求1的簽名/驗證方法,其特征在于管理者利用收發(fā)雙方的個人鑰及一臨時生成的、外部不可見的真隨機數(shù)為每對需要收發(fā)文件的用戶生成一對傳輸密鑰并分別發(fā)送給通信雙方,使得傳輸密鑰只攜帶極少量的個人鑰信息。
4.根據(jù)權(quán)利要求1的簽名/驗證方法,其特征在于用戶將時戳、發(fā)送密鑰、簽名、個人鑰及待發(fā)送數(shù)據(jù)送入簽名/驗證模塊得到變換模塊的消息摘要,完成簽名過程;用戶將解密密鑰、個人鑰及接收到的數(shù)據(jù)和變換模塊的消息摘要作為簽名/驗證模塊的輸入得到簽名和時戳,完成驗證過程。
5.根據(jù)權(quán)利要求1或4的簽名/驗證方法,其特征在于所說變換模塊可由密鑰和消息摘要得到其輸入,即變換模塊的逆推過程。
6.根據(jù)權(quán)利要求5的簽名/驗證方法,其特征在于所說變換模塊及其逆推過程僅由分組加密算法構(gòu)成。
7.根據(jù)權(quán)利要求1或4的簽名/驗證方法,其特征在于用戶的個人鑰和簽名/認(rèn)證模塊被物理封裝起來,內(nèi)部任何數(shù)據(jù)無法被修改或讀出。
全文摘要
一種簽名/驗證方法,由一個管理者先通過某一安全通道為每一用戶發(fā)放一只有管理中心和用戶本人持有的個人鑰。管理者為需要收發(fā)文件的雙方發(fā)放包含了收發(fā)雙方個人鑰信息的傳輸密鑰,發(fā)送方利用時戳、發(fā)送密鑰、個人鑰為待發(fā)送文件簽名,接收方利用接收密鑰、個人鑰驗證該簽名。用戶的個人鑰和簽名/認(rèn)證過程的被物理封裝起來,其內(nèi)部的任何數(shù)據(jù)都無法被修改或讀出。
文檔編號H04L9/14GK1249589SQ99119589
公開日2000年4月5日 申請日期1999年9月8日 優(yōu)先權(quán)日1999年9月8日
發(fā)明者胡俊, 后健慈 申請人:北京龍安計算機技術(shù)開發(fā)有限公司