公開金鑰演算法簽名

2022-10-10 03:24:04 字數 1567 閱讀 5645

2023年出現了著名的rsa演算法。這種演算法為公用網路上資訊的加密和鑑別提供了一種基本的方法。它通常是先生成一對rsa 金鑰,其中之一是保密金鑰,由使用者儲存;另乙個為公開金鑰,可對外公開,甚至可在網路伺服器中註冊。

為提高保密強度,rsa金鑰至少為500位長,一般推薦使用1024位。這就使加密的計算量很大。為減少計算量,在傳送資訊時,常採用傳統加密方法與公開金鑰加密方法相結合的方式,即資訊採用改進的des或idea對話金鑰加密,然後使用rsa金鑰加密對話金鑰和資訊摘要。

對方收到資訊後,用不同的金鑰解密並可核對資訊摘要。

rsa演算法的加密金鑰和加密演算法分開,使得金鑰分配更為方便。它特別符合計算機網路環境。對於網上的大量使用者,可以將加密金鑰用**簿的方式印出。

如果某使用者想與另一使用者進行保密通訊,只需從公鑰簿上查出對方的加密金鑰,用它對所傳送的資訊加密發出即可。對方收到資訊後,用僅為自己所知的解密金鑰將資訊脫密,了解報文的內容。由此可看出,rsa演算法解決了大量網路使用者金鑰管理的難題。

rsa並不能替代des,它們的優缺點正好互補。 rsa的金鑰很長,加密速度慢,而採用des,正好彌補了rsa的缺點。即des用於明文加密,rsa用於des金鑰的加密。

由於des加密速度快,適合加密較長的報文;而rsa可解決des金鑰分配的問題。美國的保密增強郵件(pem)就是採用了rsa 和des結合的方法,目前已成為e-mail保密通訊標準。

單向雜湊函式和公開金鑰演算法簽名如果乙個函式f(x)滿足下面兩個條件,則稱為單向函式:

(1)存在多項式時間演算法a,使得a(x)=f(x)=y;

(2)找不到多項式時間演算法曰,使得b(y)=x

上述嚴格的定義所要表達的意思是:單向函式就是計算起來相對容易,而函式求逆卻非常困難的函式。如果單向函式f(x),對於任意的兩個輸入x1、x2:

,都有f(x1)和f(x2)的二進位制表示的位數相同,就稱f(x)為單向雜湊函式。單向雜湊函式是多對一的函式,不能用兩個檔案的單向雜湊值相同來確定兩個檔案相同,但能夠保證如果雜湊值不同,兩個檔案相同的概率非常小,例如如果單向雜湊值的長度為120位二進位制數,那麼兩個檔案不同,而雜湊值相同的概率小於2的-120次方;給定乙個雜湊值,要找到乙個檔案,使其雜湊函式值等於給定的函式值非常困難。由於這些特性,單向雜湊函式常常被作為檔案的指紋或者訊息的摘要。

由於數字簽名演算法常常需要進行模指數運算,而且這裡的模都是200~300位的十進位制自然數,計算量大,效率低。而實際要簽名的檔案也可能是非常大的檔案,這樣要直接對檔案進行簽名,計算量與計算複雜性可想而知。為了克服這個問題,人們找到將數字簽名演算法與單向雜湊函式演算法結合起來使用的簽名方法。

首先對長檔案進行單向雜湊函式運算,計算出檔案的單向雜湊函式值。檔案的單向雜湊函式值遠遠小於檔案本身,通過對檔案的單向雜湊函式值進行簽名實現對原始檔案的簽名。簽名過程如下:

(1)alice產生檔案的單向雜湊值。

(2)a1ice用私人金鑰對雜湊值加密,憑此表示對檔案加密。 (3)alice將檔案和雜湊簽名傳送給bob。 (4)bob用alice傳送的檔案產生檔案的雜湊值,然後用alice的公開金鑰解密alice的簽名,如果計算出的雜湊值和解密出的雜湊值相同,簽名有效。

採用這樣的方法,既實現了對檔案的簽名,又大大降低了計算量與計算複雜度,確實是一種好的方法。