黑道VS白道,從網(wǎng)絡(luò)攻擊到數(shù)字加密

毛奇志
毛奇志
計算機(jī)網(wǎng)絡(luò)安全是一個很大內(nèi)容,包括網(wǎng)絡(luò)攻擊、加密技術(shù)、密鑰分配、鑒別技術(shù)等,本文從網(wǎng)絡(luò)攻擊(被動攻擊和主動攻擊)著手,得到網(wǎng)絡(luò)安全的四個理論標(biāo)準(zhǔn)(保密性、端點鑒別、信息完整性、運(yùn)行安全性),后面的內(nèi)容基本上是圍繞這四個標(biāo)準(zhǔn)展開,一步步探究整個計算機(jī)網(wǎng)絡(luò)內(nèi)容。

2345截圖20200908083720.png

一、前言

計算機(jī)網(wǎng)絡(luò)安全是一個很大內(nèi)容,包括網(wǎng)絡(luò)攻擊、加密技術(shù)、密鑰分配、鑒別技術(shù)等,本文從網(wǎng)絡(luò)攻擊(被動攻擊和主動攻擊)著手,得到網(wǎng)絡(luò)安全的四個理論標(biāo)準(zhǔn)(保密性、端點鑒別、信息完整性、運(yùn)行安全性),后面的內(nèi)容基本上是圍繞這四個標(biāo)準(zhǔn)展開,一步步探究整個計算機(jī)網(wǎng)絡(luò)內(nèi)容。

二、網(wǎng)絡(luò)攻擊與安全標(biāo)準(zhǔn)

2.1網(wǎng)絡(luò)攻擊

網(wǎng)絡(luò)攻擊多種多樣,按攻擊方式劃分,計算機(jī)網(wǎng)絡(luò)攻擊分為兩種:被動攻擊與主動攻擊。如下圖:

2345截圖20200908083720.png

注意:上圖只是網(wǎng)絡(luò)攻擊的一種劃分依據(jù),還存在其他劃分依據(jù),劃分方式不唯一。

2.2安全防治理論標(biāo)準(zhǔn)

為應(yīng)對多種多樣的網(wǎng)絡(luò)攻擊,計算機(jī)網(wǎng)絡(luò)安全方面必須先誕生一個安全防治理論標(biāo)準(zhǔn),即怎樣的網(wǎng)絡(luò)才能被稱為是安全的?有個這個標(biāo)準(zhǔn)后,然后再根據(jù)這個標(biāo)準(zhǔn)去設(shè)計網(wǎng)絡(luò)安全保障機(jī)制(如防范被動攻擊需要的加密技術(shù)、防范主動攻擊需要的加密技術(shù)和鑒別技術(shù))。

一般來說,一個安全的計算機(jī)網(wǎng)絡(luò)通信要想達(dá)到安全,需要滿足四個要求——保密性、端點鑒別、信息完整性、運(yùn)行安全性,具體如下表:

2345截圖20200908083720.png

三、加密技術(shù)

為實現(xiàn)安全標(biāo)準(zhǔn)中的保密性,我們需要對網(wǎng)路傳送的數(shù)據(jù)進(jìn)行加密。常用的密碼體制包括兩種:對稱加密和非對稱加密,先看對稱加密。

3.1對稱加密技術(shù)

對稱加密即傳統(tǒng)加密,加密和解密使用同一密鑰K,如下圖所示:

2345截圖20200908083720.png

解釋一下上圖:E運(yùn)算代表Encode編碼運(yùn)算,則為加密運(yùn)算;D運(yùn)算代表Decode解碼運(yùn)算,則為解碼運(yùn)算。

加密和解密使用相同的密鑰K,發(fā)送方A將明文X使用公開的加密算法產(chǎn)生密文Y,然后接收方B只要使用相同的密鑰K對密文解密即得到明文X。

對稱加密原理簡單,實現(xiàn)起來也很快捷,但是存在一個很難解決的問題——對稱密鑰密碼體制的密鑰管理問題。

在對稱密鑰密碼體制中,通信雙方加密解密使用相同的密鑰,但是如何做到這一點呢?

1、事先約定相同的密鑰,但是事先約定對于某一時刻更換密鑰造成極大不便,如果使用高度安全的密鑰分配中心,會使網(wǎng)絡(luò)成本大大增加。

2、信使傳送密鑰保證相同,但是高度自動化的大型計算機(jī)網(wǎng)絡(luò)中,通信雙方這樣頻繁傳送密鑰是極不合適的。

所以引入了非對稱加密技術(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ù),如圖:

2345截圖20200908083720.png

兩者區(qū)別為:

2345截圖20200908083720.png

所以說,無論是何種密碼體制,加密算法都是公開,所以實現(xiàn)保密性的關(guān)鍵在于密鑰的保密。

對于對稱加密和非對稱加密,非對稱加密確實比對稱加密安全,但是并不是非對稱加密就一定比對稱加密優(yōu)秀的,至少非對稱加密速度就比對稱加密慢。兩種密碼體制優(yōu)缺點見表:

2345截圖20200908083720.png

所以在實際的網(wǎng)絡(luò)環(huán)境中,會將對稱加密和非對稱加密混合使用.

3.3數(shù)字簽名

3.3.1數(shù)字簽名的要求

1、接收方B能夠核實發(fā)送方A對報文的簽名,保證報文鑒別。

2、接收方B能夠確認(rèn)收到數(shù)據(jù)是和發(fā)送方A發(fā)送的是一致的,沒有被篡改過。保證數(shù)據(jù)完整性。

3、發(fā)送方A事后不能抵賴對報文的簽名,即不能抵賴這個報文不是自己發(fā)送的。保證不可否認(rèn)性。

3.3.2數(shù)據(jù)簽名的實現(xiàn)

同時實現(xiàn)上述三個要求(報文鑒別、數(shù)據(jù)完整性、不可否認(rèn)性),則實現(xiàn)了數(shù)字簽名,實際上我們只要將非對稱加密變換一種形式,即發(fā)送方發(fā)送報文時,先自己的私鑰SK對明文X進(jìn)行D運(yùn)算(這里不是解密運(yùn)算),得到一串不可讀報文,發(fā)送給接收方,接收方收到數(shù)據(jù)后,使用發(fā)送方的公鑰(公鑰是公開的,可以得到)進(jìn)行E運(yùn)算(同樣這里也不是加密運(yùn)算),即可恢復(fù)明文X。如下圖:

2345截圖20200908083720.png

解釋一下上圖:

數(shù)字簽名中,先進(jìn)行D運(yùn)算,這里不能理解為解密運(yùn)算(因為還沒加密呢?。瑧?yīng)該理解為使用A的私鑰進(jìn)行的一個D運(yùn)算,得到一個不可讀的密文DSKA(X).同樣地,后面的E原酸,不能理解為加密運(yùn)算,應(yīng)該理解為使用A的公鑰進(jìn)行的一個E運(yùn)算,還原明文X.

其次,這里的DSKA(X)的理解方式是:D表示D運(yùn)算,SK表示secret key私鑰,A表示A的私鑰,(X)表示對明文X操作。合在一起的意思是,使用A的私鑰,即SKA,對明文X進(jìn)行D運(yùn)算得到的結(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)絡(luò)攻擊者篡改報文,篡改完之后再發(fā)送給B,B拿到報文后發(fā)現(xiàn)不能用PKA得到可讀明文,就知道數(shù)據(jù)被篡改過或者這根本就不是A發(fā)送的報文,不會處理,實現(xiàn)了數(shù)據(jù)完整性。

3、不可否認(rèn)性。如果A過后想抵賴DSKA(X)這個報文不是自己發(fā)送的,B只要將收到的DSKA(X)和得到的明文X公示給第三者,第三者很容易使用A的公鑰PKA驗證B的說法是對的,使A無法抵賴,實現(xiàn)了不可否認(rèn)性。

故此種方式實現(xiàn)了數(shù)字簽名,這也是最常見的一種數(shù)字簽名哦!

3.4非對稱加密與數(shù)字簽名統(tǒng)一

在一開始提到的安全標(biāo)準(zhǔn)的四個要求中,加密技術(shù)實現(xiàn)了保密性,數(shù)據(jù)簽名實現(xiàn)了報文鑒別,現(xiàn)在將這兩種技術(shù)結(jié)合到一起,即非對稱加密+數(shù)字簽名,如圖:

2345截圖20200908083720.png

對加密技術(shù)和數(shù)字簽名的整個理解:DSKA(X)表示使用A的私鑰對明文X進(jìn)行D操作,然后在使用的B的公鑰對數(shù)據(jù)簽名的結(jié)果進(jìn)行E運(yùn)算加密操作,得到密文EPKB(DSKA(X)),通過互聯(lián)網(wǎng)傳送后,接收端先用B的私鑰對接收的密文EPKB(DSKA(X))進(jìn)行D運(yùn)算解密操作,得到DSKA(X),然后用A的公鑰對其E運(yùn)算,得到明文X。

所以說,對于非對稱加密密碼體制,通過巧妙的運(yùn)算,同時實現(xiàn)了數(shù)字簽名和加密技術(shù)。

EPKA(DSKA(X))==>X即數(shù)字簽名,表示發(fā)送方A先使用自己的私鑰SK對明文X進(jìn)行D運(yùn)算,接收方使用A的公鑰對收到的DSKA(X)進(jìn)行E運(yùn)算,得到明文X,實現(xiàn)簽名核實。

DSKB(ESKB(X))==>X即加密技術(shù),表示發(fā)送方A使用接收方的公鑰PK對明文X進(jìn)行E運(yùn)算加密,接收方使用自己的私鑰SK對收到的ESKB(X)進(jìn)行D運(yùn)算,得到明文X,實現(xiàn)非對稱加密解密。

附:單向加密(不可逆加密)和雙向加密(可逆加密)

上面將的對稱加密和非對稱加密都是雙向加密(可逆加密),就是可以對密文進(jìn)行解密,因為密文是可逆的,所有在設(shè)計上就存在天然的風(fēng)險。實際上,我們有一種更加安全的加密方式——單向加密(不可逆加密),使用單向加密,密文是不可逆的。實際上,這種單向加密在計算機(jī)網(wǎng)絡(luò)通信中用到很少,因為接收方無法通過D運(yùn)算來解密,但是在軟件開發(fā)中,卻使用的很廣泛,比如我們在做系統(tǒng)級開發(fā)時,就可以讓用戶的密碼經(jīng)過不可逆算法存入數(shù)據(jù)庫,每一次登錄時密碼經(jīng)過不可逆算法與數(shù)據(jù)庫比對,這樣一來,即使某一天數(shù)據(jù)庫泄露,用戶賬號信息仍然可以被保護(hù),這就是單向加密的最常見用途。

常見的單向加密算法:MD5,SHA等(雖然說MD5和SHA-1都被破解了......清華大學(xué)王小云教授)。其實,即使是沒有找到單向加密的破解方法,它也可被試探出來,如:

2345截圖20200908083720.png

所以說,沒有絕對安全的密碼,這是有感而發(fā)的。

四、密鑰分配(針對第三部分的加密技術(shù))

4.1對稱加密的密鑰分配

對稱加密技術(shù),加密和解密使用同一密鑰,通常設(shè)立一個大家都信任的機(jī)構(gòu)——密鑰分配中心KDC(Key Distribution Center),用來給需要進(jìn)行數(shù)據(jù)傳輸?shù)挠脩襞R時分配一個會話密鑰(僅使用一次,下一次再通信再分配一個)。

具體分配方式:

一開始,用戶A和用戶B都在KDC中記錄自己的密鑰KA和KB,這個早就完成,不是一個獨立步驟。

1、用戶A向密鑰分配中心KDC發(fā)送明文,說明自己想要與用戶B通信,在明文中給出通信雙方A和B在KDC登記的身份(即映射關(guān)閉的key)

2、KDC用隨機(jī)數(shù)產(chǎn)生一個“一次一密”的會話密鑰KAB供A、B本次網(wǎng)絡(luò)通信之用,然后向A發(fā)送響應(yīng)報文。該報文使用KA加密(保證僅用戶A解開,網(wǎng)絡(luò)攻擊者無法解開),內(nèi)容一個剛剛產(chǎn)生的這個網(wǎng)絡(luò)通信用的會話密鑰KAB和一個票據(jù),票據(jù)使用KB加密(因為是給用戶B的),票據(jù)內(nèi)容是A、B在KDC登記的身份和本次網(wǎng)絡(luò)通信用的會話密鑰KAB。

注:會話密鑰KAB在發(fā)給A的響應(yīng)報文里面有一份,因為響應(yīng)報文使用KA加密,所有這一份KAB是給用戶A使用的;然后在響應(yīng)報文的票據(jù)中還有一份,因為票據(jù)使用KB加密,所以這份KAB是給用戶B用的。從而保證用戶A和用戶B都有一份KAB,且相同,用于對稱加密通信。

3、A收到KDC發(fā)來的響應(yīng)報文,用KA解密,拿到屬于自己的那一份KAB,但是用戶A無法查看響應(yīng)報文中的那份票據(jù),因為那個票據(jù)使用KB,本來就不是給用戶A的,所以用戶A將響應(yīng)報文中的那個票據(jù)發(fā)送給用戶B.

4、用戶B收到票據(jù)后,用KB解密,票據(jù)里面是A、B在KDC登記的身份和本次網(wǎng)絡(luò)通信用的會話密鑰KAB,則用戶B知道用戶要和它通信并且知道本次通信的密鑰KAB.

整個過程如下圖:

2345截圖20200908083720.png

4.2非對稱加密的密鑰分配(公鑰分配)

非對稱加密中,私鑰是保密的,只有自己知道,自然不需要涉及到分配的問題。但是公鑰是公開的,所以非對稱加密密鑰的分配就是公鑰的分配,注意,我們一直所說的公鑰公開并不是可隨便公布用戶的公鑰,而是將公鑰與對應(yīng)的主機(jī)的映射關(guān)系存儲起來,一般存放在CA認(rèn)證中心(Certification Authority),這個CA認(rèn)證中心一般由政府或大公司出錢建立,里面的存放著公鑰和該公鑰擁有者的唯一標(biāo)識信息(人名或IP地址),用戶需要公鑰時,就到CA認(rèn)證中心去查詢。

其實,就是直接在瀏覽器中查詢也可以,以Google瀏覽器為例,右上角選擇“設(shè)置/高級/管理證書”,用戶就可以看到證書頒發(fā)機(jī)構(gòu)給自己頒發(fā)的證書,如:

2345截圖20200908083720.png

隨便打開一個,查看自己的公鑰:

2345截圖20200908083720.png

五、鑒別技術(shù)

鑒別技術(shù)作為防范主動攻擊的必需品,鑒別的對象有兩個,一是鑒別發(fā)送方的身份,滿足安全標(biāo)準(zhǔn)中的端點鑒別,這就是端點鑒別/實體鑒別;二是鑒別通信信息完整性,滿足安全標(biāo)準(zhǔn)中的信息完整性,這就是報文鑒別。

2345截圖20200908083720.png

5.1報文鑒別

實際上,本文第三部分的數(shù)字簽名就已經(jīng)實現(xiàn)了報文鑒別(數(shù)字簽名三要求:報文鑒別、數(shù)據(jù)完整性、不可否認(rèn)性),數(shù)字簽名的第一個和第二個要求所表示的都是“報文鑒別/數(shù)據(jù)完整性/防篡改”這個意思,但是上文提到,這種公鑰密碼體制存在運(yùn)行速度慢的問題,所以真實的報文鑒別的中,我們必須找到更加快捷的辦法。使用一種計算型的方法——密碼散列函數(shù)。

5.1.1密碼散列函數(shù)

散列函數(shù)的特點:

1、輸入可以是不定長的,但是輸出是定長的且比較短;

2、輸入X與輸出Y的映射關(guān)系,與數(shù)學(xué)中函數(shù)的定義一樣(對于任意一個給定的X值,都有唯一的Y值與之對應(yīng)),即輸入X與輸出Y是多對一的關(guān)系(一個X有一個確定的Y對應(yīng),但是多個X可以對應(yīng)一個Y,但是一個Y只能對應(yīng)一個X)。

2345截圖20200908083720.png

散列函數(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ù)運(yùn)用到報文鑒別碼中。如圖:

2345截圖20200908083720.png

步驟一:在A從報文X導(dǎo)出散列H后,就對散列H用密鑰K加密。這樣得到的結(jié)果叫做報文鑒別碼MAC(Message Authentication Code)。

步驟二:A把已加密的報文鑒別碼MAC拼接到報文X的后面,得到擴(kuò)展的報文,發(fā)送給B。

步驟三:B收到擴(kuò)展的報文后,先把報文鑒別碼MAC與報文X分離出來,然后用同樣的密鑰K對收到的報文鑒別碼MAC進(jìn)行解密運(yùn)算,得到加密前的散列H。再將報文X進(jìn)行散列函數(shù)運(yùn)算,得到散列H(X)。最后,把計算出的散列H(X)與H進(jìn)行比較。如一致,就相信所收到的報文X確實是A發(fā)送的(因為密碼散列函數(shù)在計算上是安全的)。這樣就使用密碼散列函數(shù)完成對報文鑒別。

5.2端點鑒別/實體鑒別

端點鑒別又稱實體鑒別,兩者是同一個意思,即鑒別發(fā)送方是身份。

為了防止網(wǎng)絡(luò)入侵者的重放攻擊,這里引入一個新概念——不重數(shù),不重數(shù)是一個不重復(fù)使用的足夠大的隨機(jī)數(shù),即“一次一數(shù)”,在端點鑒別中使接收方可以把重復(fù)的鑒別請求與新的鑒別請求區(qū)分開。如圖:

2345截圖20200908083720.png

步驟一:A使用明文發(fā)送自己的身份A和一個不重數(shù)RA給B。

步驟二:B響應(yīng)A的查問,用共享密鑰RAB對RA加密后發(fā)回給A,同時也給出自己的不重數(shù)RB.

步驟三:最后,A再響應(yīng)B的查問,用共享密鑰RAB對RB加密后發(fā)回給B。

注意:這里A、B不同的通話必須使用不同不重數(shù),這是防止重放攻擊的關(guān)鍵,由于不重數(shù)不會重復(fù)使用,所有攻擊者即使截取到報文也沒用,因為那個不重數(shù)已經(jīng)不能用了。

六、尾聲

本文中,我們從網(wǎng)絡(luò)攻擊(被動攻擊和主動攻擊)著手,知道了網(wǎng)絡(luò)安全的四個理論標(biāo)準(zhǔn)(保密性、端點鑒別、信息完整性、運(yùn)行安全性),后面的內(nèi)容基本上是圍繞這四個標(biāo)準(zhǔn)展開,第三部分的加密技術(shù)和第四部分密鑰分配是針對保密性,第五部分鑒別技術(shù)是針對端點鑒別和信息完整性(第三部分?jǐn)?shù)字簽名也可以鑒別信息完整性),運(yùn)行安全性有具體網(wǎng)絡(luò)權(quán)限控制來實現(xiàn),無法展開,故略去。

THEEND

最新評論(評論僅代表用戶觀點)

更多
暫無評論