5分鐘徹底搞懂RSA非對稱加密算法、數字簽名

數字簽名非常普遍:

瞭解數字簽名前先了解一下SHA-1摘要,RSA非對稱加密算法。然後再瞭解數字簽名。

SHA-1

SHA-1(secure hash Algorithm )是一種數據加密算法。該算法的思想是接收一段明文,然後以一種不可逆的方式將它轉換成一段(通常更小)密文,也可以簡單的理解為取一串輸入碼(稱為預映射或信息),並把它們轉化為長度較短、位數固定的輸出序列即散列值(也稱為信息摘要或信息認證代碼)的過程。

單向散列函數的安全性在於其產生散列值的操作過程具有較強的單向性。如果在輸入序列中嵌入密碼,那麼任何人在不知道密碼的情況下都不能產生正確的散列值,從而保證了其安全性。SHA將輸入流按照每塊512位(64個字節)進行分塊,併產生20個字節的被稱為信息認證代碼或信息摘要的輸出。

該算法輸入報文的長度不限,產生的輸出是一個160位的報文摘要。輸入是按512 位的分組進行處理的。SHA-1是不可逆的、防衝突,並具有良好的雪崩效應。

通過散列算法可實現數字簽名實現,數字簽名的原理是將要傳送的明文通過一種函數運算(Hash)轉換成報文摘要(不同的明文對應不同的報文摘要),報文摘要加密後與明文一起傳送給接受方,接受方將接受的明文產生新的報文摘要與發送方的發來報文摘要解密比較,比較結果一致表示明文未被改動,如果不一致表示明文已被篡改。

總之:SHA-1是一種單向的、位數固定為160為的數據加密算法,在不同平臺上,平臺本身內嵌SHA-1的實現,直接調用相應函數即可。

RSA加密算法

RSA公鑰加密算法是1977年由Ron Rivest、Adi Shamirh和LenAdleman在(美國麻省理工學院)開發的。RSA取名來自開發他們三者的名字。RSA是目前最有影響力的公鑰加密算法,它能夠抵抗到目前為止已知的所有密碼攻擊,已被ISO推薦為公鑰數據加密標準。RSA算法基於一個十分簡單的數論事實:將兩個大素數相乘十分容易,但那時想要對其乘積進行因式分解卻極其困難,因此可以將乘積公開作為加密密鑰。

5分鐘徹底搞懂RSA非對稱加密算法、數字簽名

RSA算法是一種非對稱密碼算法,所謂非對稱,就是指該算法需要一對密鑰,使用其中一個加密,則需要用另一個才能解密。

RSA的算法涉及三個參數,n、e1、e2。

其中,n是兩個大質數p、q的積,n的二進制表示時所佔用的位數,就是所謂的密鑰長度。

e1和e2是一對相關的值,e1可以任意取,但要求e1與(p-1)*(q-1)互質;再選擇e2,要求(e2*e1)mod((p-1)*(q-1))=1。(n,e1),(n,e2)就是密鑰對。其中 (n,e1)為公鑰,(n,e2)為私鑰。

RSA加解密的算法完全相同,設A為明文,B為密文,則:A=B^e2 mod n;B=A^e1 mod n;(公鑰加密體制中,一般用公鑰加密,私鑰解密)e1和e2可以互換使用,即:

A=B^e2 mod n;B=A^e1 mod n;

如果客戶端開發,我們只是關心加密算法:我們需要n(模量)和e(指數),將這兩個放到平臺rsa密碼函數里生成密碼。然後再調用rsa加密函數生成一串數字即可發往服務器。

非對稱加密

1976年,美國學者Dime和Henman為解決信息公開傳送和密鑰管理問題,提出一種新的密鑰交換協議,允許在不安全的媒體上的通訊雙方交換信息,安全地達成一致的密鑰,這就是“公開密鑰系統”。相對於“對稱加密算法”這種方法也叫做“非對稱加密算法”。

與對稱加密算法不同,非對稱加密算法需要兩個密鑰:公開密鑰(publickey)和私有密鑰(privatekey)。公開密鑰與私有密鑰是一對,如果用公開密鑰對數據進行加密,只有用對應的私有密鑰才能解密;如果用私有密鑰對數據進行加密,那麼只有用對應的公開密鑰才能解密。因為加密和解密使用的是兩個不同的密鑰,所以這種算法叫作非對稱加密算法。

非對稱加密算法實現機密信息交換的基本過程是:甲方生成一對密鑰並將其中的一把作為公用密鑰向其它方公開;得到該公用密鑰的乙方使用該密鑰對機密信息進行加密後再發送給甲方;甲方再用自己保存的另一把專用密鑰對加密後的信息進行解密。甲方只能用其專用密鑰解密由其公用密鑰加密後的任何信息。

非對稱加密算法的保密性比較好,它消除了最終用戶交換密鑰的需要,但加密和解密花費時間長、速度慢,它不適合於對文件加密而只適用於對少量數據進行加密。

經典的非對稱加密算法如RSA算法等安全性都相當高.非對稱加密的典型應用是數字簽名。

採用雙鑰密碼系統的加密方法,在一個過程中使用兩個密鑰,一個用於加密,另一個用於解密,這種加密方法稱為非對稱加密,也稱為公鑰加密,因為其中一個密鑰是公開的(另一個則需要保密)。

數字簽名

數字簽名就是將上面兩個技術的融合,達到一種非常安全的信息傳遞機制。經過上面的介紹,那麼數字簽名就容易理解了。如圖

5分鐘徹底搞懂RSA非對稱加密算法、數字簽名

從上圖中容易發現“摘要” “私鑰”“公鑰”幾個關鍵技術,當然這個模式本身就是“非對稱加密”

再配一張數字簽名流程圖

5分鐘徹底搞懂RSA非對稱加密算法、數字簽名

總結

數字簽名的基礎就是非對稱加密,原來其實不算複雜。


分享到:


相關文章: