【融雲分析】當咱們在談通信安全時,咱們在談些什麼

當談論通信安全的時候,一般咱們關心的是下面四個問題:算法

1)防止消息竊聽安全

當傳送的消息是機密內容的時,人們但願給消息加密。這樣即便消息在傳送過程當中被截獲,竊聽者也沒法確切的知道消息內容,從而達到保密的效果。網絡

2)防止消息篡改工具

消息在傳送過程當中,有可能被攻擊者篡改內容,這樣接收者接到的就是錯誤的信息,通信過程當中應該提供某種方案防止篡改。加密

3)防止消息僞造spa

攻擊者假冒發送者的名義,給接收者發送消息,這種行爲稱爲消息僞造。code

4)防止否定blog

發送者過後否定本身發送過消息,須要有一種機制來防止這種狀況發生。圖片

下面,咱們將詳細分析下這四個問題。開發

  1. 防竊聽

提到加密,不少人的第一反應是下面這樣:

「本身實現一個加密算法,而後將算法保密,這樣就能保證安全。」

在密碼學的領域,這是個典型的誤區。

首先,開發高強度的加密算法是很是困難的。普通的算法在外行看起來牢不可破,可是專業破譯者卻有很是多的工具和攻擊方式,使其破綻百出。

其次,加密算法的祕密總有一天會公諸於世。到那時,全部基於這個算法的祕密都將被泄露。

實踐中使用的加密算法都是公開的,消息傳遞依靠保密的密鑰來確保消息不被破解。正所以,它們通過攻擊者長期嘗試仍未被破解,因此保密強度較高。

經常使用的加密體系分爲三類,對稱加密、非對稱加密和混合加密。

1.1 對稱加密

對稱加密是指加密和解密用的是同一個密鑰。這個密鑰只有發送者和接收者知曉,其餘沒有密鑰的人沒法解密消息。

常見的對稱加密算法有 DES 、 3DES 和 AES 等。隨着計算機硬件的進步,使用暴力破解法已經能在現實時間中完成對 DES 的破解; 3DES 處理速度不高,此外在安全性方面也逐漸顯現出了些問題;目前應該選用的算法是AES 。

1.2 非對稱加密

與對稱加密不一樣,非對稱加密算法須要兩個密鑰——公鑰和私鑰。

公鑰和私鑰是一對。公鑰加密,對應的私鑰才能解密,反之亦然。前面的場景適用於防竊聽,後面的場景適用於數字簽名,也就是防止否定。

實現機密消息交換的基本過程是:甲方生成一對密鑰並將其中一個做爲公鑰向其它方公開,獲得該公鑰的乙方使用該公鑰對消息進行加密再發送給甲方,甲方再使用本身的私鑰對消息進行解密。

網絡中的其餘竊聽者雖然也能拿到甲方的公鑰,可是加密後的消息只有私鑰才能解開,因此他們沒法破譯消息。

最常使用的非對稱加密算法是 RSA 。

1.3 混合加密

比較一下對稱加密和非對稱加密各自的特色:

對稱加密處理速度快,可是因爲通信雙方使用的是同一個密鑰,存在密鑰配送困難的問題。要求通信雙方線下交換密鑰是不現實的,而線上配送又存在被竊聽的風險。

非對稱加密的公鑰自己就是能夠對外公開的,自然避免了密鑰配送的問題;可是非對稱加密的處理速度遠遠低於對稱加密。

混合加密體系是將上述兩種優點相結合的辦法。

先看一下加密過程。

通信過程當中傳送了兩部份內容:一部分是使用對稱加密算法加密的消息,另外一部分是對稱加密的密鑰。其中對稱加密的密鑰是由接收方的公鑰加密過的,這樣除了接收方以外,任何其餘人都不能解開對稱加密的密鑰,從而也沒法解開加密的消息。

圖片描述

相比於要傳送的消息自己,對稱密鑰的長度要短得多。非對稱加密的處理速度慢,因此只用來加密對稱密鑰,而很長的消息則用處理速度快的對稱算法來加密。

下面是解密過程:

圖片描述

先把對稱加密的密鑰和加密後消息這兩部分分離開。對稱密鑰以前是用接收者的公鑰加密的,因此只能使用接收者的私鑰進行解密。對稱密鑰解出來以後,就能夠對消息密文進行解密了,從而獲得消息明文。

2.防篡改

通信過程當中,接收方有時候會有這樣的疑問:

「我接收到的消息確實就是發送者發過來的那條嗎?在傳輸的過程當中會不會已經被攻擊者給改寫了?」

這是對消息完整性的挑戰。

實踐中通常使用摘要算法來應對這種挑戰。

摘要算法有以下重要特性。

第一,輸入任意長度的字符串,輸出固定長度的字符串。比起要傳輸的消息長度來講,輸出的固定長度一般很短,所以很容易進行處理。

第二,相同的輸入老是對應相同的輸出。發送方對消息進行摘要處理,同時把摘要附在消息裏發送出來。接收方收到以後用一樣的摘要算法對消息進行處理,再把計算出來的摘要和收到的摘要進行對比,若是不一致,就能知道消息已被篡改。

第三,給定一個字符串A ,通過摘要算法處理後的串 B ,很難找到一個字符串 C ,使其摘要後的串和串 B 相同。這個重要的特性稱爲抗碰撞性(弱抗碰撞性)。這條特性使得攻擊者在篡改消息後,很難再計算出一樣的摘要,從而規避摘要算法的檢查。

第四,這種轉換具備單向性,即不能經過輸出串倒推出輸入串。

經常使用的摘要算法包含 MD4 、 MD5 、 SHA-1 和 SHA-2 (包含 SHA-256 、SHA-384 和 SHA-512 )。上述算法中目前惟有 SHA-2 算法的強抗碰撞性還沒有被攻破。

3.防僞造

防僞造指的是「消息來自正確的發送者」。

防篡改關注的是消息內容,防僞造關注的是消息發送者自己。

防篡改關注的是消息的完整性( integrity ),防僞造關注的是消息的認證( authentication )。

消息認證碼( Message

Authentication Code)是一種既能檢查消息完整性,又能作身份驗證的技術,取三個單詞的首字母,簡稱爲 MAC 。

實踐中常用與密鑰相關的摘要算法來實現消息認證碼。

消息認證碼的使用步驟以下:

1.發送者和接收者事先共享密鑰;

   2.發送者使用共享密鑰對消息計算 MAC 值;

   3.發送者將消息和 MAC 一塊兒發給接收者;

   4.接收者使用共享密鑰對接收到的消息計算 MAC 值;

   5.接收者將計算的 MAC 值跟接收到的 MAC 值作比較;

因爲攻擊者沒有共享密鑰,因此沒法跟接收者算出同樣的 MAC 值。

跟對稱密鑰同樣,這裏一樣面臨密鑰配送的問題,咱們仍然能夠採用非對稱加密的方式進行密鑰配送。除此以外, Diffie-Hellman 算法也是經常使用的密鑰交換方式。

4.防否定

想象一下這個場景, Bob 收到了一張 Alice 發來的五百萬元的借條。使用事先約定好的共享密鑰,Bob 計算出的 MAC 值跟借條裏收到的 MAC 值一致,這代表消息沒有被篡改,同時消息也不會是第三方僞造的,那麼就沒有任何後顧之憂了嗎?

並非這樣。問題在於共享密鑰是兩我的持有的,所以能算出正確 MAC 值的並不僅是 Alice , Bob 也能。若是 Alice 聲稱本身沒有發過這樣的借條,那做爲第三方仲裁者來講,沒法證實借條是 Alice 生成的仍是 Bob 生成的。

咱們須要尋求一種解決方案, Alice 使用的簽名是由只有她本身才知道的密鑰生成,同時別人還能順利解開。這樣別人沒法僞造 Alice 的簽名,同時還能驗證這個簽名。

看上去是否是有點熟悉?沒錯,就是以前介紹過的非對稱加密。

Alice 使用本身的私鑰對消息進行簽名(加密),同時對外發布對應的公鑰。不管是 Bob 仍是第三方仲裁者,均可以使用公鑰對簽名進行驗證(解密)。

這種方案稱爲數字簽名。

5.後話

到目前爲止,看上去咱們解決了以前提出的四個問題,可是通信安全領域的問題還遠不止這些。好比怎麼驗證公鑰的可靠性?好比怎麼才能生成一個可靠的隨機數?再延伸下去咱們會涉及到證書,認證機構和隨機數的分級等領域,這裏就再也不一一展開了。

最後,請你們記住一句話:只有完美的密碼,沒有完美的人。無論多精密的系統,在確保總體安全方面,人是一個特別巨大的弱點。不少時候,最脆弱的環節並非各類算法,而是人類本身。

更多技術乾貨請點擊瞭解。

相關文章
相關標籤/搜索