歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> RSA 非對稱加密 數字簽名 數字證書

RSA 非對稱加密 數字簽名 數字證書

日期:2017/3/1 9:10:03   编辑:Linux編程

什麼是RSA加密算法

RSA加密算法是一種非對稱加密算法,算法的數學基礎是極大數分解難題。
RSA加密算法的強度也就是極大數分解的難度,目前700多位(二進制)的數字已經可以破解,1024位認為是比較安全的,2048則是非常安全的。

在RSA加密算法中,密鑰由兩部分組成,稱之為公鑰和私鑰,私有由發送方自己保存,不能洩漏。公鑰由發送方公布出去。發送方發送消息時,會用公鑰對消息進行加碼,接收方必須要使用對應的私鑰才能將加密後的信息解開。因此,只要私鑰不洩漏,通信內容就不會被破解。

如何保證消息不會被篡改

雖然使用RSA加密之後,只有持有密鑰才可以解密,但是這並不能組織或者發現消息被篡改了。為了防止消息在傳輸過程中被篡改,引入類數字簽名的概念。

數字簽名

發送方在發送消息之前,會使用消息摘要算法對發送內容進行摘要,然後用私鑰對摘要進行加密,加密後的內容作為數字簽名隨消息一起發送。接收方收到消息之後,會對消息進行解密,解密之後進行摘要計算,得到摘要。接著對數字簽名進行解密,得到另一分摘要,將兩份摘要進行對比,如果相同,則說明消息沒有被篡改過。

數字證書

雖然RSA算法能保證消息不被破解,數字簽名也能保證消息不被篡改,但是RSA算法中使用的公鑰卻很難有效的分發,因為公鑰無法證明自己就是由發送方發出的,它也有可能是惡意的人冒名頂替分發出來的。

為了解決這種問題,需要引入第三方權威機構,發送方和接收方都應該要信任該機構,然後由該機構來給他們辦法一個證書,證書包含有頒發機構信息,證書持有人信息,以及證書持有人的公鑰,這些信息會使用私鑰進行數字簽名,這樣就能夠保證證書的安全。接收方收到這個證書,只要使用第三方權威機構的公鑰對證書解密,即可知道證書的真偽。

Copyright © Linux教程網 All Rights Reserved