一、前言
計算機網絡安全是一個很大內容,包括網絡攻擊、加密技術、密鑰分配、鑒別技術等,本文從網絡攻擊(被動攻擊和主動攻擊)著手,得到網絡安全的四個理論標準(保密性、端點鑒別、信息完整性、運行安全性),后面的內容基本上是圍繞這四個標準展開,一步步探究整個計算機網絡內容。
二、網絡攻擊與安全標準
2.1網絡攻擊
網絡攻擊多種多樣,按攻擊方式劃分,計算機網絡攻擊分為兩種:被動攻擊與主動攻擊。如下圖:
注意:上圖只是網絡攻擊的一種劃分依據,還存在其他劃分依據,劃分方式不唯一。
2.2安全防治理論標準
為應對多種多樣的網絡攻擊,計算機網絡安全方面必須先誕生一個安全防治理論標準,即怎樣的網絡才能被稱為是安全的?有個這個標準后,然后再根據這個標準去設計網絡安全保障機制(如防范被動攻擊需要的加密技術、防范主動攻擊需要的加密技術和鑒別技術)。
一般來說,一個安全的計算機網絡通信要想達到安全,需要滿足四個要求——保密性、端點鑒別、信息完整性、運行安全性,具體如下表:
三、加密技術
為實現安全標準中的保密性,我們需要對網路傳送的數據進行加密。常用的密碼體制包括兩種:對稱加密和非對稱加密,先看對稱加密。
3.1對稱加密技術
對稱加密即傳統加密,加密和解密使用同一密鑰K,如下圖所示:
解釋一下上圖:E運算代表Encode編碼運算,則為加密運算;D運算代表Decode解碼運算,則為解碼運算。
加密和解密使用相同的密鑰K,發送方A將明文X使用公開的加密算法產生密文Y,然后接收方B只要使用相同的密鑰K對密文解密即得到明文X。
對稱加密原理簡單,實現起來也很快捷,但是存在一個很難解決的問題——對稱密鑰密碼體制的密鑰管理問題。
在對稱密鑰密碼體制中,通信雙方加密解密使用相同的密鑰,但是如何做到這一點呢?
1、事先約定相同的密鑰,但是事先約定對于某一時刻更換密鑰造成極大不便,如果使用高度安全的密鑰分配中心,會使網絡成本大大增加。
2、信使傳送密鑰保證相同,但是高度自動化的大型計算機網絡中,通信雙方這樣頻繁傳送密鑰是極不合適的。
所以引入了非對稱加密技術,且看下文。
3.2非對稱加密技術
除了對稱加密,其實我們還有一種非對稱加密技術,非對稱加密的產生的原因主要有兩點:
1、對稱密鑰密碼體制的密鑰管理問題無法找到高效、安全、低成本的方式解決(即本文3.1對稱加密技術);
2、數字簽名的需求(即本文3.3數字簽名)。
非對稱加密密碼體制,又稱為公鑰密鑰體制/公開密鑰密碼體制,在非對稱加密密碼體制中,密鑰對產生器每次產生一對密鑰——公鑰(Public Key),以下用PK表示,私鑰(Secret Key),以下用SK表示。非對稱加密技術,如圖:
兩者區別為:
所以說,無論是何種密碼體制,加密算法都是公開,所以實現保密性的關鍵在于密鑰的保密。
對于對稱加密和非對稱加密,非對稱加密確實比對稱加密安全,但是并不是非對稱加密就一定比對稱加密優秀的,至少非對稱加密速度就比對稱加密慢。兩種密碼體制優缺點見表:
所以在實際的網絡環境中,會將對稱加密和非對稱加密混合使用.
3.3數字簽名
3.3.1數字簽名的要求
1、接收方B能夠核實發送方A對報文的簽名,保證報文鑒別。
2、接收方B能夠確認收到數據是和發送方A發送的是一致的,沒有被篡改過。保證數據完整性。
3、發送方A事后不能抵賴對報文的簽名,即不能抵賴這個報文不是自己發送的。保證不可否認性。
3.3.2數據簽名的實現
同時實現上述三個要求(報文鑒別、數據完整性、不可否認性),則實現了數字簽名,實際上我們只要將非對稱加密變換一種形式,即發送方發送報文時,先自己的私鑰SK對明文X進行D運算(這里不是解密運算),得到一串不可讀報文,發送給接收方,接收方收到數據后,使用發送方的公鑰(公鑰是公開的,可以得到)進行E運算(同樣這里也不是加密運算),即可恢復明文X。如下圖:
解釋一下上圖:
數字簽名中,先進行D運算,這里不能理解為解密運算(因為還沒加密呢!),應該理解為使用A的私鑰進行的一個D運算,得到一個不可讀的密文DSKA(X).同樣地,后面的E原酸,不能理解為加密運算,應該理解為使用A的公鑰進行的一個E運算,還原明文X.
其次,這里的DSKA(X)的理解方式是:D表示D運算,SK表示secret key私鑰,A表示A的私鑰,(X)表示對明文X操作。合在一起的意思是,使用A的私鑰,即SKA,對明文X進行D運算得到的結果,即DSKA(X)。
通過上面這種方式后,實際上我們已經實現了數字簽名,為什么呢?且看數字簽名的三個要求。
1、報文鑒別。因為私鑰是保密的,發送方A的私鑰只有它自己知道,所以只有A能產生DSKA(X),接收方B接收到DSKA(X)后發現能用PKA得到可讀的明文,就相信明文X是A發送的,實現了報文鑒別。
2、數據完整性(即防篡改)。因為私鑰是保密的,發送方A的私鑰只有它自己知道,網絡攻擊者篡改報文,篡改完之后再發送給B,B拿到報文后發現不能用PKA得到可讀明文,就知道數據被篡改過或者這根本就不是A發送的報文,不會處理,實現了數據完整性。
3、不可否認性。如果A過后想抵賴DSKA(X)這個報文不是自己發送的,B只要將收到的DSKA(X)和得到的明文X公示給第三者,第三者很容易使用A的公鑰PKA驗證B的說法是對的,使A無法抵賴,實現了不可否認性。
故此種方式實現了數字簽名,這也是最常見的一種數字簽名哦!
3.4非對稱加密與數字簽名統一
在一開始提到的安全標準的四個要求中,加密技術實現了保密性,數據簽名實現了報文鑒別,現在將這兩種技術結合到一起,即非對稱加密+數字簽名,如圖:
對加密技術和數字簽名的整個理解:DSKA(X)表示使用A的私鑰對明文X進行D操作,然后在使用的B的公鑰對數據簽名的結果進行E運算加密操作,得到密文EPKB(DSKA(X)),通過互聯網傳送后,接收端先用B的私鑰對接收的密文EPKB(DSKA(X))進行D運算解密操作,得到DSKA(X),然后用A的公鑰對其E運算,得到明文X。
所以說,對于非對稱加密密碼體制,通過巧妙的運算,同時實現了數字簽名和加密技術。
EPKA(DSKA(X))==>X即數字簽名,表示發送方A先使用自己的私鑰SK對明文X進行D運算,接收方使用A的公鑰對收到的DSKA(X)進行E運算,得到明文X,實現簽名核實。
DSKB(ESKB(X))==>X即加密技術,表示發送方A使用接收方的公鑰PK對明文X進行E運算加密,接收方使用自己的私鑰SK對收到的ESKB(X)進行D運算,得到明文X,實現非對稱加密解密。
附:單向加密(不可逆加密)和雙向加密(可逆加密)
上面將的對稱加密和非對稱加密都是雙向加密(可逆加密),就是可以對密文進行解密,因為密文是可逆的,所有在設計上就存在天然的風險。實際上,我們有一種更加安全的加密方式——單向加密(不可逆加密),使用單向加密,密文是不可逆的。實際上,這種單向加密在計算機網絡通信中用到很少,因為接收方無法通過D運算來解密,但是在軟件開發中,卻使用的很廣泛,比如我們在做系統級開發時,就可以讓用戶的密碼經過不可逆算法存入數據庫,每一次登錄時密碼經過不可逆算法與數據庫比對,這樣一來,即使某一天數據庫泄露,用戶賬號信息仍然可以被保護,這就是單向加密的最常見用途。
常見的單向加密算法:MD5,SHA等(雖然說MD5和SHA-1都被破解了......清華大學王小云教授)。其實,即使是沒有找到單向加密的破解方法,它也可被試探出來,如:
所以說,沒有絕對安全的密碼,這是有感而發的。
四、密鑰分配(針對第三部分的加密技術)
4.1對稱加密的密鑰分配
對稱加密技術,加密和解密使用同一密鑰,通常設立一個大家都信任的機構——密鑰分配中心KDC(Key Distribution Center),用來給需要進行數據傳輸的用戶臨時分配一個會話密鑰(僅使用一次,下一次再通信再分配一個)。
具體分配方式:
一開始,用戶A和用戶B都在KDC中記錄自己的密鑰KA和KB,這個早就完成,不是一個獨立步驟。
1、用戶A向密鑰分配中心KDC發送明文,說明自己想要與用戶B通信,在明文中給出通信雙方A和B在KDC登記的身份(即映射關閉的key)
2、KDC用隨機數產生一個“一次一密”的會話密鑰KAB供A、B本次網絡通信之用,然后向A發送響應報文。該報文使用KA加密(保證僅用戶A解開,網絡攻擊者無法解開),內容一個剛剛產生的這個網絡通信用的會話密鑰KAB和一個票據,票據使用KB加密(因為是給用戶B的),票據內容是A、B在KDC登記的身份和本次網絡通信用的會話密鑰KAB。
注:會話密鑰KAB在發給A的響應報文里面有一份,因為響應報文使用KA加密,所有這一份KAB是給用戶A使用的;然后在響應報文的票據中還有一份,因為票據使用KB加密,所以這份KAB是給用戶B用的。從而保證用戶A和用戶B都有一份KAB,且相同,用于對稱加密通信。
3、A收到KDC發來的響應報文,用KA解密,拿到屬于自己的那一份KAB,但是用戶A無法查看響應報文中的那份票據,因為那個票據使用KB,本來就不是給用戶A的,所以用戶A將響應報文中的那個票據發送給用戶B.
4、用戶B收到票據后,用KB解密,票據里面是A、B在KDC登記的身份和本次網絡通信用的會話密鑰KAB,則用戶B知道用戶要和它通信并且知道本次通信的密鑰KAB.
整個過程如下圖:
4.2非對稱加密的密鑰分配(公鑰分配)
非對稱加密中,私鑰是保密的,只有自己知道,自然不需要涉及到分配的問題。但是公鑰是公開的,所以非對稱加密密鑰的分配就是公鑰的分配,注意,我們一直所說的公鑰公開并不是可隨便公布用戶的公鑰,而是將公鑰與對應的主機的映射關系存儲起來,一般存放在CA認證中心(Certification Authority),這個CA認證中心一般由政府或大公司出錢建立,里面的存放著公鑰和該公鑰擁有者的唯一標識信息(人名或IP地址),用戶需要公鑰時,就到CA認證中心去查詢。
其實,就是直接在瀏覽器中查詢也可以,以Google瀏覽器為例,右上角選擇“設置/高級/管理證書”,用戶就可以看到證書頒發機構給自己頒發的證書,如:
隨便打開一個,查看自己的公鑰:
五、鑒別技術
鑒別技術作為防范主動攻擊的必需品,鑒別的對象有兩個,一是鑒別發送方的身份,滿足安全標準中的端點鑒別,這就是端點鑒別/實體鑒別;二是鑒別通信信息完整性,滿足安全標準中的信息完整性,這就是報文鑒別。
5.1報文鑒別
實際上,本文第三部分的數字簽名就已經實現了報文鑒別(數字簽名三要求:報文鑒別、數據完整性、不可否認性),數字簽名的第一個和第二個要求所表示的都是“報文鑒別/數據完整性/防篡改”這個意思,但是上文提到,這種公鑰密碼體制存在運行速度慢的問題,所以真實的報文鑒別的中,我們必須找到更加快捷的辦法。使用一種計算型的方法——密碼散列函數。
5.1.1密碼散列函數
散列函數的特點:
1、輸入可以是不定長的,但是輸出是定長的且比較短;
2、輸入X與輸出Y的映射關系,與數學中函數的定義一樣(對于任意一個給定的X值,都有唯一的Y值與之對應),即輸入X與輸出Y是多對一的關系(一個X有一個確定的Y對應,但是多個X可以對應一個Y,但是一個Y只能對應一個X)。
散列函數保證了計算上的加密的單向性,即要找到的兩個不同的報文,它們具有同樣的密碼散列函數輸出,在計算上是不可能的(注意:理論上是可能的,因為X與Y是多對一),所以密碼散列函數時安全的。
如果我們的密碼散列函數的輸出H(X)被網路攻擊者截獲了,那么截獲者無法偽造出另一個明文Y,使用H(X)=H(Y),因為計算上是不可行的。所以說密碼散列函數通過一種極為簡單的方式(密碼散列函數)實現了報文鑒別。
5.1.2報文鑒別碼
現在我們討論如何將密碼散列函數運用到報文鑒別碼中。如圖:
步驟一:在A從報文X導出散列H后,就對散列H用密鑰K加密。這樣得到的結果叫做報文鑒別碼MAC(Message Authentication Code)。
步驟二:A把已加密的報文鑒別碼MAC拼接到報文X的后面,得到擴展的報文,發送給B。
步驟三:B收到擴展的報文后,先把報文鑒別碼MAC與報文X分離出來,然后用同樣的密鑰K對收到的報文鑒別碼MAC進行解密運算,得到加密前的散列H。再將報文X進行散列函數運算,得到散列H(X)。最后,把計算出的散列H(X)與H進行比較。如一致,就相信所收到的報文X確實是A發送的(因為密碼散列函數在計算上是安全的)。這樣就使用密碼散列函數完成對報文鑒別。
5.2端點鑒別/實體鑒別
端點鑒別又稱實體鑒別,兩者是同一個意思,即鑒別發送方是身份。
為了防止網絡入侵者的重放攻擊,這里引入一個新概念——不重數,不重數是一個不重復使用的足夠大的隨機數,即“一次一數”,在端點鑒別中使接收方可以把重復的鑒別請求與新的鑒別請求區分開。如圖:
步驟一:A使用明文發送自己的身份A和一個不重數RA給B。
步驟二:B響應A的查問,用共享密鑰RAB對RA加密后發回給A,同時也給出自己的不重數RB.
步驟三:最后,A再響應B的查問,用共享密鑰RAB對RB加密后發回給B。
注意:這里A、B不同的通話必須使用不同不重數,這是防止重放攻擊的關鍵,由于不重數不會重復使用,所有攻擊者即使截取到報文也沒用,因為那個不重數已經不能用了。
六、尾聲
本文中,我們從網絡攻擊(被動攻擊和主動攻擊)著手,知道了網絡安全的四個理論標準(保密性、端點鑒別、信息完整性、運行安全性),后面的內容基本上是圍繞這四個標準展開,第三部分的加密技術和第四部分密鑰分配是針對保密性,第五部分鑒別技術是針對端點鑒別和信息完整性(第三部分數字簽名也可以鑒別信息完整性),運行安全性有具體網絡權限控制來實現,無法展開,故略去。
編輯:hfy
-
計算機
+關注
關注
19文章
7534瀏覽量
88620 -
網絡安全
+關注
關注
10文章
3192瀏覽量
60186 -
網絡攻擊
+關注
關注
0文章
331瀏覽量
23524
發布評論請先 登錄
相關推薦
評論