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