專利名稱:一種密鑰傳遞及數字簽名的方法
技術領域:
本發明涉及一種密鑰傳遞及數字簽名的方法,屬密碼技術領域。
數據通訊中,往往需要滿足以下的安全要求①除了發送方和接收方之外,使其他人無法知悉通訊內容;②通訊的內容不易被篡改;③接收方能夠確知發送方不是假冒的,發送方不能否認自己發送的內容。這就是目前密碼學中通常所說的密鑰傳遞和數字簽名。
發送方要發送的原文稱為明文,將明文加密后就變成密文。發送方發送密文,第三者只能看見密文,就無法獲得通訊內容。接收方收到密文后,需要密鑰才能還原出明文。密鑰傳遞就是指接收方獲得密鑰的方法,這種方法必須可靠的保證只有接收方才能得到密鑰,第三者無法得到密鑰。為了使接收方覺得可信,發送方發送的內容中還應該包含自己對明文的數字簽名。這個簽名首先要保證接收方能夠驗證其真偽,同時必須保證只有發送方才能生成這個簽名,其他人(包括接收方在內)都不能偽造簽名。接收方通過驗證數字簽名,就可以確定發送方的身份,也可以確定通訊內容是否被中間篡改過。同時依據簽名,使得發送方無法抵賴。
目前已有的密碼體系中,RSA體制是一個成熟的公開密鑰密碼體制,它的安全性基于數論中的Euler定理和計算復雜性理論中的下述論斷求兩個大素數的乘積是容易計算的,但要分解兩個大素數的乘積,求出它們的素因子則是非常困難的。利用RSA體制可以解決通訊中的密鑰傳遞問題和數字簽名問題,但是這個體制的運算量比較大、密鑰比較長,加密、解密速度慢,對實現該方法的硬件要求高,因此在實際應用中有一定的局限性。
本發明的目的是提出一種密鑰傳遞及數字簽名的方法,通過構造一種新的密碼體制實現密鑰傳遞和數字簽名,同時這種體制既不需要很大的運算量,也不需要很長的密鑰。
本發明提出的密鑰傳遞的方法,包括以下各步驟(1).選擇一個函數f函數y=f(a,b,c,d)是一個公開的單向散列函數,它滿足如果定義全集Id={(y,a,b,c)|y=f(a,b,c,d),a∈Z,b∈Z,c∈Z}那么在d未知,已知f,且已知Id的任意一個子集Qd時,d是難以求解的,且Qd的補集中的任意一個元素也是難以求解的;(2).為通信雙方各制造一個黑箱,每個黑箱固化有相應的編號K,各黑箱的K值不同,黑箱內還固化一個數據S,各黑箱S相同;黑箱利用上述第一步的函數f實現二項功能功能1向黑箱輸入R、Ki,黑箱根據上述函數,計算出Y=f(R,Ki,K,S);
功能2向黑箱輸入R、Ki,黑箱根據上述第一步的函數,計算出Y=f(R,K,Ki,S);上列算式中R為信息傳遞的發起方確定的一個任意數,K為固化在黑箱內的本黑箱編號,Ki為輸入黑箱的編號;(3).密鑰傳遞設發送方的黑箱號為Ka,接收方的黑箱號為Kb,發送方A任意選擇一個數據R,然后調用上述第2步中黑箱的功能1,向自己的黑箱輸入數據R和接收方的黑箱號Kb,亦即上述功能1的的Ki,黑箱輸出Y=f(R,Kb,Ka,S),Y即為需要傳遞的密鑰;然后A向B發送數據R,接收方B在自己的黑箱上調用功能2,輸入R和發送方的黑箱號Ka,亦即上述功能2中的Ki,黑箱輸出Y=f(R,Kb,Ka,S),接收方B得到與發送方A相同的密鑰Y,此時密鑰Y傳遞結束。
本發明提出的數字簽名的方法,包括以下各步驟(1).選擇一個函數f函數y=f(a,b,c,d)是一個公開的單向散列函數,它滿足如果定義全集Id={(y,a,b,c)|y=f(a,b,c,d),a∈Z,b∈Z,c∈Z那么在d未知,已知f,且已知Id的任意一個子集Qd時,d是難以求解的,且Qd的補集中的任意一個元素也是難以求解的;(2).為通信雙方各制造一個黑箱,黑箱固化有相應的編號K,各黑箱的K值不同,黑箱內還固化一個數據S,各黑箱S值相同,黑箱利用上述第一步函數f完成二項功能功能1向黑箱輸入R、Ki,黑箱根據上述函數,計算出Y=f(R,Ki,K,S);功能2向黑箱輸入R、Ki、Y,即功能1的計算結果,黑箱計算出G=f(R,Ki,Ki,S),將G與Y作比較,如果相同,則輸出1,否則輸出0;(3)、數字簽名及驗證設發送方的黑箱號為Ka,接收方的黑箱號為Kb,設定需要簽名的數據為R,A在自己的黑箱上調用功能1,向黑箱輸入數據R和自己的黑箱號Ka,Ka即為上述功能1中的Ki,黑箱輸出Y=f(R,Ka,Ka,S),Y即為A對數據R的簽名結果,簽名結束;A將R及Y同時發送給B,B接收到R和Y后,在自己的黑箱上,調用功能2,并輸入從A方得到的R、Y及發送方的黑箱號Ka,黑箱計算出G=f(R,Ka,Ka,S),將G與Y作比較,如果兩者一致則黑箱輸出1,否則輸出0,輸出1則為真,反之則為偽造簽名,此時簽名驗證結束。
本發明設計的密鑰傳遞及數字簽名的方法,密碼體制結構簡單、運算量小、密鑰短,便于硬件實現。
下面詳細介紹本發明的內容。
首先選擇一個函數f,例如MD5變換或者SHA-1變換。
函數y=f(a,b,c,d)是一個公開的單向散列函數,它滿足如果定義全集Id={(y,a,b,c)|y=f(a,b,c,d),a∈Z,b∈Z,c∈Z}那么在d未知,已知f,且已知Id的任意一個子集Qd時,d是難以求解的,且Qd的補集中的任意一個元素也是難以求解的。
上述函數的特點,就是在d未知時,無論已知多少組數據y、a、b、c,并且每組數據都滿足等式y=f(a,b,c,d),但在未知的y、a、b、c中,已知其中的任意三個數都無法求解第四個數。密鑰傳遞和數字簽名就是利用函數的這個特點實現的。具備這個特點的函數并不唯一,而且實現起來運算量也很小。參數d就是這個體制中的密碼,基于函數f的特點,d的長度要求很低,只要能夠抵御窮舉搜索就可以。這個體制中的其他參數也是這樣的要求。
然后為通信雙方各制造一個黑箱,黑箱有相應的編號K,黑箱內固化一個數據S,黑箱、K值和S值有如下特性①K為黑箱編號,各個黑箱的編號不同,K固化在黑箱內,是不可改的。每個人都知道自己的和對方的黑箱編號。黑箱內還固化了一個數據S,所有黑箱的S是相同的,但所有人都不知道S的值。
②黑箱利用上述選擇的函數f實現幾個功能,在下面的功能說明中,K是黑箱自己的編號;Ki是輸入給黑箱的編號,Ki是自己的編號或對方黑箱的編號。
黑箱完成下列幾項功能功能1向黑箱輸入R、Ki,黑箱根據上述第一步函數,計算出Y=f(R,Ki,K,S);功能2向黑箱輸入R、Ki,黑箱根據上述第一步的函數,計算出Y=f(R,K,Ki,S);功能3向黑箱輸入R、Ki、Y,如果黑箱計算出G=f(R,Ki,Ki,S),然后將G與Y作比較,如果兩者一致則黑箱輸出1,否則輸出0。
上列算式中R為信息傳遞的發起方確定的一個任意數,Ki為黑箱的編號。
注意功能1、2中Ki、K在函數f入口數據中的位置不同功能3只輸出比較結果,不輸出f(R,Ki,Ki,S)的運算結果。
在實際應用中,黑箱就是一個經過加密處理的硬件。硬件能夠可靠保密數據S,而且硬件內部的處理過程是不可見、不可跟蹤的。各個黑箱除了K值不同(且肯定不同)之外,其他都完全相同。
通訊雙方利用自己的黑箱就可以實現密鑰傳遞和數字簽名。假設發送方為A,持有黑箱的編號為Ka;接收方為B,持有黑箱的編號為Kb;第三者為C,持有黑箱的編號為Kc。A、B為正常的通訊者,第三者是任意一個攻擊者,試圖入侵A、B之間的通訊。
密鑰傳遞的過程如下首先發送方A任意選擇一個數據R,然后調用上述黑箱的功能1,向黑箱輸入數據R和接收方的黑箱號Kb,黑箱輸出Y=f(R,Kb,Ka,S),Y即為需要傳遞的密鑰。然后A向B發送數據R,接收方B用自己的黑箱號Kb及從A方得到的數據R,在自己的黑箱上調用功能2,輸入R和發送方的黑箱號Ka,黑箱輸出Y=f(R,Kb,Ka,S)。接收方B得到與發送方A相同的密鑰Y,此時密鑰Y傳遞結束。
第三者C可以截獲A發送給B的數據R,但是無法得到密鑰Y。因為C雖然知道A、B是如何使用自己黑箱的,即C知道方程
Y=f(R,Kb,Ka,S)但是由于C無法知道A、B黑箱的S值,該S值連A、B自己都不知道,C也無法只通過截獲到的A發送給B的R值,求出Y,亦即得到密鑰。
假設,C持有黑箱Kc,且黑箱C的S值與A、B黑箱的S值相同,此時由于C的黑箱號Kc與Ka、Kb都不同,同時黑箱C的功能1、2中都使用了Kc,功能3中只輸出比較結果,因此,C也無法利用自己的黑箱得到Y。
所以,利用黑箱的功能1、2就能夠實現密鑰傳遞。
數字簽名及驗證的過程如下首先發送方A設定需要簽名的數據為R,A在自己的黑箱上調用功能1,向黑箱輸入數據R和自己的黑箱號Ka,黑箱輸出Y=f(R,Ka,Ka,S)。Y即為A對數據R的簽名結果,A將R及Y同時發送給B;B接收到R后,在自己的黑箱上,調用功能3,輸入從A方得到的R、Y及發送方的黑箱號Ka,黑箱內部計算G=f(R,Ka,Ka,S),比較G與Y,如果一致則黑箱輸出1,否則輸出0,輸出1則為真,反之則為偽造簽名,此時簽名結束。
根據上述簽名方法,第三者C也可以利用自己的黑箱功能3來驗證這個簽名的真偽。這里,A對R的簽名結果為Y,B和C都只能利用自己的黑箱驗證Y,不能生成Y。簽名和驗證的方法都是公開的,即B、C都知道方程Y=f(R,Ka,Ka,S)但是由于B、C都無法知道S,也就無法由R求出Y(見函數f的說明)。
另外,黑箱Kb功能1、2中強制使用了Kb,黑箱Kc功能1、2中強制使用了Kc,而兩個黑箱的功能3都只輸出一個比較結果,因此,B和C也無法利用自己的黑箱偽造簽名。
所以,利用黑箱的功能1、3能夠實現數字簽名。
權利要求
1.一種密鑰傳遞的方法,其特征在于,該方法包括以下各步驟(1).選擇一個函數f函數y=f(a,b,c,d)是一個公開的單向散列函數,它滿足如果定義全集Id={(y,a,b,c)|y=f(a,b,c,d),a∈Z,b∈Z,c∈Z}那么在d未知,已知f,且已知Id的任意一個子集Qd時,d是難以求解的,且Qd的補集中的任意一個元素也是難以求解的;(2).為通信雙方各制造一個黑箱,每個黑箱固化有相應的編號K,各黑箱的K值不同,黑箱內還固化一個數據S,各黑箱S不同,黑箱利用上述第一步的函數f實現二項功能;功能1向黑箱輸入R、Ki,黑箱根據上述第一步函數,計算出Y=f(R,Ki,K,S);功能2向黑箱輸入R、Ki,黑箱根據上述第一步的函數,計算出Y=f(R,K,Ki,S);上列算式中R為信息傳遞的發起方確定的一個任意數,K為固化在黑箱內的數,Ki為輸入黑箱的編號;(3).密鑰傳遞設發送方A的黑箱號為Ka,接收方B的黑箱號為Kb,發送方A任意選擇一個數據R,然后調用上述第2步中黑箱的功能1,向黑箱輸入數據R和接收方的黑箱號Kb,即上述功能1的Ki,黑箱輸出Y=f(R,Kb,Ka,S),Y即為需要傳遞的密鑰,然后A向B發送數據R,接收方B在自己的黑箱上調用功能2,輸入R和發送方的黑箱號Ka,即上述功能2中的Ki,黑箱輸出Y=f(R,Kb,Ka,S)。接收方B得到與發送方A相同的密鑰Y,此時密鑰Y傳遞結束。
2.一種數字簽名的方法,其特征在于,該方法包括以下各步驟(1).選擇一個函數f函數y=f(a,b,c,d)是一個公開的單向散列函數,它滿足如果定義全集Id={(y,a,b,c)|y=f(a,b,c,d),a∈Z,b∈Z,c∈Z那么在d未知,已知f,且已知Id的任意一個子集Qd時,d是難以求解的,且Qd的補集中的任意一個元素也是難以求解的;(2).為通信雙方各制造一個黑箱,黑箱固化有相應的編號K,黑箱內還固化一個數據S,黑箱利用上述第一步函數f完成二項功能功能1向黑箱輸入R、Ki,黑箱根據上述函數,計算出Y=f(R,Ki,K,S);功能2向黑箱輸入R、Ki、Y,即功能1的計算結果,黑箱計算出G=f(R,Ki,Ki,S),將G與Y比較,如果相同,則輸出1,否則輸出0;(3)、數字簽名及驗證設發送方A的黑箱號為Ka,接收方B的黑箱號為Kb,設定需要簽名的數據為R,A在自己的黑箱上調用功能1,向黑箱輸入數據R和自己的黑箱號Ka,黑箱輸出Y=f(R,Ka,Ka,S),Y即為A對數據R的簽名結果,簽名結束;A將R及Y同時發送給B,B接收到R后,在自己的黑箱上,調用功能2,并輸入從A方得到的R、Y及發送方的黑箱號Ka,黑箱內部計算G=f(R,Ka,Ka,S),將G與Y比較,如果兩者一致則黑箱輸出1,否則輸出0,輸出1則為真,反之則為偽造簽名,此時簽名驗證結束。
全文摘要
本發明涉及一種密鑰傳遞和數字簽名的方法,首先選擇一個函數f,然后為通信雙方各制造一個黑箱,設發送方的黑箱號為Ka,接收方的黑箱號為Kb,發送方A任意選擇一個數據R,向自己的黑箱輸入數據R和接收方的黑箱號Kb,黑箱輸出Y,Y即為需要傳遞的密鑰,數字簽名的方法是A在自己的黑箱上輸入數據R和自己的黑箱號,黑箱輸出Y,Y即為A對數據R的簽名結果。本發明設計的密鑰傳遞及數字簽名的方法,密碼體制結構簡單、運算量小、密鑰短,便于硬件實現。
文檔編號H04L9/00GK1255002SQ9912593
公開日2000年5月31日 申請日期1999年12月10日 優先權日1999年12月10日
發明者張 杰 申請人:北京深思洛克數據保護中心