您好,登錄后才能下訂單哦!
本文簡單地談下關于安全中最為常用的兩個非對稱加密的DH算法及RSA算法,文中無意于涉及一些數學原理,這個在網上已經有很多文章敘述了,再重復也沒有太多意思(這類文章只要關注兩點,**其一是密鑰生成方法,其二就是數據的加解密公式**),此文僅僅是幫助一般用戶能夠明確地區別下這兩種算法的異同和應用場合,故不會太長。
對于DH和RSA算法而言,其最大的相同點就在于它們的理論基礎就是“初等數論”,既然是初等那么就意味著如果需要看懂其原理,我們只要有中學數學基礎就可以了,甚至是初中數學,而不會應用到大學數學的相關內容,你無需關注什么極限、微分、積分等等,只不過RSA算法是基于所謂的“歐拉定理”(費馬定理是其特例),而DH中沒有非常明顯的涉及,但其中有兩個內容可能需要證明,本文就不涉及了,都是關于同余問題的(初等數論中的許多問題都和同余相關,其中最著名的恐怕是“孫子定理”,或可稱之為”中國剩余定理“,在任何一般有關數論的書中都會描述)。
那么不同點在何處呢?其中最顯著的不同之處就是DH用于動態交換密鑰,它其實會在服務器和客戶端各生成一個密鑰對,也就是兩對密鑰,而且注意它是動態的;而RSA只包含一組密鑰對,而且是靜態的,即一旦生成了私鑰就不會更改,除非顯示地替換,最明顯的就是更換私鑰文件(因為密鑰太長,一般生成后會放到文件中)。
通過簡單分析,我們就能看出為什么使用DH算法生成的共享密鑰是無法獲取的,因為它們分別在服務器和客戶端的內存中(對于共享密鑰,通訊雙方可以通過自我計算即可,不用交換,因為客戶端和服務器通過計算所得的密鑰是相同的,只要它們交換了各自的公鑰),所以除了暴力破解別無它法,而且由于大質數的問題,以及密鑰產生的隨機性(隨機的私鑰大小在1到這個大質數減一之間,所以肯定是互質的),故在目前的條件下無法保證破解。
另外,由于RSA運算過于消耗計算資源,所以它只被用于簽名(即只對少量數據進行驗證,如可對數字證書的部分內容的摘要進行簽名),不會被用于真正的數據內容加密;而DH算法僅是交換密鑰,生成的密鑰被用于數據的加解密,所使用的對真正數據加解密的對稱算法一般為AES(SSL、HTTPS通常都使用此算法,而不太用以前的3DES了);所以在OPENSSL中有所謂加密算法套件的說法,它們是用于不同用途的,而且在OPENSSL中有一整套關于大數(Big Number)的計算方法,不過用戶一般不會直接調用吧。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。