對稱加密和非對稱加密

2021-09-05 08:39:37 字數 2192 閱讀 6196

如果網路中的兩台計算機進行通訊,通訊安全是非常重要的問題,主要包含兩個方面:

保證對方是想要通訊的計算機,而不是「冒充者」。

保證通訊過程中的資料不會被」第三者「竊聽得到。

為了解決這兩個問題,衍生出了很多網路通訊安全相關的技術。

對於第乙個問題比較常用的手段就是通過第三方權威機構簽發的數字證書來驗證對方的身份,對於第二個問題最常用的手段就是對通訊過程中的資料進行加密傳輸。

對資料加密傳輸實際上涉及加密(encryption)和解密(decryption)兩個過程,傳送方在傳送資料前對資料進行加密,接收方收到密文後需要對其解密得到真正的通訊內容,這兩個過程均需要加密鑰匙(key)的參與(傳送方用key加密資料,接收方用key來解密資料),否則接收方無論如何也無法解開密文。

根據加解密過程是否用到相同的key又可以將加密技術分為對稱加密(symmetric encryption)和非對稱加密(asymmetric encryption)。

對稱加密技術在加密和解密過程中使用同一把鑰匙,叫做對稱金鑰(symmetric key),所以通訊雙方在開始加密通訊之前首先需要交換對稱金鑰。下面這張圖描述了使用對稱加密通訊的過程:

對稱金鑰的的長度一般為128位或者256位,長度越長自然越來破解,使用128位還是256位金鑰取決於通訊雙方軟體的加密能力。對稱加密演算法常用的有aes和des等

非對稱加密使用一對金鑰,分別叫作公鑰(public key)和私鑰(private key),用公鑰加密後的密文只有對應的私鑰能對其解密,而用私鑰加密的密文同樣只有對應的公鑰能解密。顯然公鑰是可以共享的,而私鑰專屬於通訊一方,所以通訊雙方均有自己的一對金鑰。一般地,傳送方使用接收方的公鑰對資料進行加密後傳送,接收方收到密文後用自己的私鑰對其解密得到資料,即使「竊聽者」得到了傳輸中的密文,而沒有對應的私鑰,也無法正確地解密出資料。下面這張圖描述了非對稱加密通訊的過程:

非對稱加密常用rsa和ecc(elliptic curve cryptography)等加密演算法來建立公鑰和金鑰,這些演算法是基於某些數學問題的難解性,也就是從數學理論上論證了計算機暴力破解的可能性微乎其微。使用非對稱加密,在計算上很容易生成公鑰和私鑰,並且想要通過公鑰來派生出私鑰是幾乎不可能的,因為公鑰是共享的,這一點必須得到保證。

rsa演算法基於很難對大整數做因式分解(整數分解)的理論,rsa密文的完全解密被認為是不可行的,因為沒有整數分解演算法存在。rsa的使用者建立兩個大的質數的乘積以及乙個輔助值作為公鑰發布,任何人都可以用這個公鑰對資料加密,但是只有擁有私鑰的人能對其解密。

rsa演算法生成的key通常是1024位和2048位,但是1024位的不再被認為是安全的,長度大於2048的key也很少使用,因為計算開銷太大,所以實際上最常用的就是2048位的key。

雖然對稱加密和非對稱加密都實現了資料加密傳輸,但是還有乙個問題:通訊雙方如何交換對稱金鑰和公鑰呢?如果通訊對方被「第三者」冒充,拿到的是冒充者的公鑰,冒充者就可以用自己的私鑰來解密監聽到的密文,那後續的加密傳輸也就沒有任何安全意義了。這實際上又回到了文章開頭的第乙個問題:如何保證通訊對方的身份合法(沒有被冒充),看完下面的ssl通訊過程就理解了。

對於需要建立加密傳輸通道的雙方,尤其是server-client這種通訊模型,ssl(secure sockets layer)是標準的安全通訊技術,ssl綜合運用了數字證書、對稱加密和非對稱加密技術,下面這張圖描述瀏覽器和web伺服器通過ssl建立安全連線的過程:

瀏覽器通過ssl(https)向web伺服器發起連線,並請求web伺服器的證書。

web伺服器向瀏覽器傳送ssl證書的副本,證書裡包含了web伺服器的公鑰。

瀏覽器檢查ssl證書是否在自己的trusted store(受信任證書列表),如果沒有就需要使用者親自確認證書的內容是否屬實並決定是否信任該證書。如果該證書被信任,瀏覽器就會生成乙個對稱會話金鑰(symmetric session key),用web伺服器的公鑰加密後傳送給web伺服器。

web伺服器使用私鑰對密文解密後得到對稱會話秘鑰,並傳送確認以啟動加密會話。

瀏覽器和web伺服器現在就可以使用對稱會話秘鑰加密資料進行安全通訊了。

注:

對稱加密和非對稱加密!

主要是對稱加密和非對稱加密兩種。可供各位參考 using system using system.collections.generic using system.linq using system.text using system.security.cryptography using syst...

對稱加密和非對稱加密!

對稱加密演算法 對稱加密演算法是應用較早的加密演算法,技術成熟。在對稱加密演算法中,資料發信方將明文 原始資料 和加密金鑰一起經過特殊加密演算法處理後,使其變成複雜的加密密文傳送出去。收信方收到密文後,若想解讀原文,則需要使用加密用過的金鑰及相同演算法的逆演算法對密文進行解密,才能使其恢復成可讀明文...

對稱加密和非對稱加密

對稱加密是最快速 最簡單的一種加密方式,加密 encryption 與解密 decryption 用的是同樣的金鑰 secretkey 對稱加密有很多種演算法,由於它效率很高,所以被廣泛使用在很多加密協議的核心當中。非對稱加密為 資料的加密 與解密提供了乙個非常安全的方法,它使用了一對金鑰,公鑰 p...