一、網絡安全問題概述
1.計算機網絡面臨的安全性威脅
Ⅰ、主動攻擊與被動攻擊
有被動攻擊和主動攻擊,截獲信息的稱為被動信息,中斷、篡改、偽造信息的攻擊叫作主動攻擊。
在被動攻擊中,攻擊者只是觀察和分析某一個協議數據單元PDU而不干擾信息流。即使這些數據對攻擊者來說是不易理解的,他也可通過觀察PDU的協議控制信息部分,了解正在通信的協議實體的地址和身份,研究PDU的長度和傳輸的頻度,以便了解所交換的數據的某種性質。這種被動攻擊又稱為流量分析。
主動攻擊是指攻擊者對連接中通過的PDU進行各種處理。如有選擇地更改、刪除、延遲這些PDU(當然也包括記錄和復制它們),還可在稍后的時間將以前錄下的PDU插入這個連接(即重放攻擊)。甚至還可將合成的或偽造的PDU送入到一個連接中去。
所有主動攻擊都是上述幾種方法的組合,但從類型上看,可分為:
(1)更改報文流
包括對通過連接的PDU的真實性、完整性和有序性的攻擊
(2)拒絕服務
指攻擊者向因特網上的服務器不停地發送大量分組,使因特網或服務器無法提供正常服務。
(3)偽造連接初始化
攻擊者重放以前已被記錄的合法連接初始化序列,或者偽造身份而企圖建立連接。
Ⅱ、攻擊的預防
對于主動攻擊,可以采取適當措施加以檢測。但對于被動攻擊,通常卻是檢測不出來的。根據這些特點,可得出計算機網絡通信安全的五個目標如下:
防止析出報文內容、防止流量分析、檢測更改報文流、檢測拒絕報文服務、檢測偽造初始化連接。
對付被動攻擊可采用各種數據加密技術,而對付主動攻擊,則需將加密技術與適當的鑒別技術相結合。
Ⅲ、惡意程序
特殊的主動攻擊。對網絡威脅較大的惡意程序有一下幾種:
①計算機病毒
會“傳染”其他程序的程序,是通過修改其他程序來把自身或其變種復制進去完成的。
②計算機蠕蟲
一種通過網絡的通信功能將自身從一個結點發送到另一個結點并自動啟動運行的程序。
③特洛伊木馬
一種程序。它執行的功能并非所聲稱的功能而是某種惡意的功能。如一個編譯程序除了執行編譯任務以外,還把用戶的源程序偷偷地拷貝下來,則這種編譯程序就是一種特洛伊木馬。計算機病毒有時也以特洛伊木馬的形式出現。
④邏輯炸彈
一種當運行環境滿足某種特定條件時執行其他特殊功能的程序。如一個編輯程序,平時運行得很好,但在某一天刪去系統中所有的文件。這種程序就是一種邏輯炸彈。
2.計算機網絡安全的內容
①保密性
如訪問控制中登錄口令的設計、安全通信協議的設計以及數字簽名的設計等
②安全協議的設計
如何保證設計出的協議是安全的,有兩種方法,一種是用形式化方法來證明,另一種是用經驗來分析協議的安全性。
形式化證明是人們希望的,但一般意義上的協議安全性也是不可判定的,只能針對某種特定類型的攻擊來討論其安全性。對復雜的通信協議的安全性,形式化證明比較困難,所以只要采用人工分析的方法來找漏洞。對于簡單的協議,可通過限制敵手的操作(假定敵手不會進行某種攻擊)來對一些特定情況進行形式化的證明。當然,這種方法有很大的局限性。
③訪問控制
也叫存取控制或接入控制。必須對接入網絡的權限加以控制,并規定每個用戶的接入權限。
3.一般的數據加密模型
加密密鑰與解密密鑰可一樣也可不一樣(不一樣時有相關性)。密鑰通常是由密鑰中心提供,當密鑰需要向遠地傳送時,一定要通過另一個安全信道。
密碼編碼學是密碼體制的設計學,而密碼分析學則是在未知密鑰情況下從密文推測出明文或密鑰的技術。兩者合起來即為密碼學。
1949年,信息論的創始人香農論證了一般經典加密方法得到的密文幾乎都是可破的。但20世紀60年代起,隨著電子技術、計算技術的迅速發展以及結構代數、可計算性和計算復雜性理論等學科的研究,密碼學又進入了一個新的發展時期。
二、兩類密碼機制
1.對稱密鑰密碼體制
即加密密鑰與解密密鑰是相同的密碼體制。
數據加密標準DES屬于對稱密鑰體制。它的保密性取決于對密鑰的保密,而算法是公開的。
2.公鑰密碼體制
Ⅰ、產生背景
公鑰密碼體制使用不同的加密密鑰與解密密鑰。產生原因:①對稱密鑰密碼體制的密鑰分配問題;②對數字簽名的需求。
在對稱密鑰密碼體制中,加解密的雙方使用的是相同的密鑰,如何做到:一種是事先約定,一種是用信使來傳送。在高度自動化的大型計算機網絡中,用信使來傳送密鑰顯然是不合適的。如果是用信使,就會給密鑰的管理和更換都帶來了極大的不便。若使用高度安全的密鑰分配中心KDC,也會使得網絡成本增加。
對數字簽名的強烈需要也是一個原因。
Ⅱ、公鑰密碼體制
著名的有RSA體制。
在公鑰密碼體制中,加密密鑰PK(public key,即公鑰)是向公眾公開的,而解密密鑰SK(secret key,即私鑰或秘鑰)則是需要保密的。加密算法E和解密算法D也是公開的。
公鑰密碼體制的加密和解密過程有如下特點:
任何加密方法的安全性取決于密鑰的長度,以及攻破密文所需的計算量。而不是簡單地取決于加密的體制。
3.數字簽名
數字簽名需實現三種功能:
(1)接收者能夠核實發送者對報文的簽名——報文鑒別
除A外沒有人持有A的私鑰SKa,所以除A外沒有人能產生密文X。這樣,B就相信X是A簽名發送的。
(2)接收者確信所收到的數據和發送者發送的完全一樣而沒有被篡改過——報文的完整性
B對篡改過的報文解密后,將會得出不可讀的明文,就知道被篡改過。
(3)發送者事后不能抵賴對報文的簽名——不可否認
若A抵賴,B可把X和密文X出示給公證的第三者,第三者容易用PKa去證實A確實發送X給B,這不可否認。
看上圖,D運算只是得到了某種不可讀的密文,并不是解密運算,因為還沒有加密。D運算和E運算都不是為了加密和解密,而是為了進行簽名和核實簽名。
四、鑒別
鑒別和加密不同。鑒別是要驗證通信雙方的確是自己所要通信的對象,而不是其他的冒充者。
鑒別與授權也不同。授權是:所進行的過程是否被允許(如是否可以對某文件進行讀或寫)。
1.報文鑒別
許多報文并不需要加密但卻需要數字簽名,以便讓報文的接收者能夠鑒別報文的真偽,然而對很長的報文進行數字簽名會使計算機增加很大的負擔(需要長時間運算)。因此,當我們傳送不需要加密的報文時,應當使接收者能用很簡單的方法來鑒別報文的真偽。
報文摘要MD(message digest)是進行報文鑒別的簡單方法。方法如下圖。
報文摘要算法是單向函數,即我們很容易計算出一個長報文X的報文摘要H,可是要想從報文摘要反過來找到原始報文X,實際上是不可能的。此外,若想找到任意兩個報文,使它們具有相同的報文摘要,實際上也是不可能的。
兩種標準:報文摘要算法MD5與安全三列算法SHA。
2.實體鑒別
和報文鑒別不同。報文鑒別是對每一個收到的報文都要鑒別報文的發送者,而實體鑒別是在系統接入的全部持續時間內和自己通信的對方實體只需驗證一次。
最簡單的實體鑒別過程如圖7-7,在圖中的A向遠端的B發送有自己的身份A和口令的報文,并且使用雙方約定好的共享對稱密鑰Kab進行加密。B收到此報文后,用共享對稱密鑰Kab進行解密,因而鑒別了實體A的身份。
然而這樣有漏洞,會導致重放攻擊。就是,入侵者C可以從網絡上截獲A發給B的報文,C不需要破譯這個報文(因為話很多時間)而可以直接把這個由A加密的報文發送給B,使B誤認為C就是A。然后B就向偽裝是A的C發送許多本來應當發給A的報文。這就叫作重放攻擊。C甚至可以截獲A的IP地址,然后把A的IP地址冒充為自己的IP地址,使B更加容易受騙。
為了對付重放攻擊,可以使用不重數。不重數就是不重復使用的大隨機數,即“一次一數”。在鑒別過程中不重數可以使B能夠把重復的鑒別請求和新的鑒別請求區分開。下圖給出了這個過程。
在使用公鑰密碼體制時,可以對不重數進行簽名鑒別。看上圖,B用其私鑰對不重數Ra進行簽名后發回給A,A用B的公鑰核實簽名,如能得出自己原來發送的不重數Ra,就核實了和自己通信的雙方的確是B。同樣,A也用自己的私鑰對不重數Rb進行簽名后發送給B。B用A的公鑰核心簽名,鑒別了A的身份。
公鑰密碼體制雖然不必在互相通信的用戶之間秘密地分配共享密鑰,但仍有收到攻擊的可能。看下圖。
五、密鑰分配
密鑰管理包括:密鑰產生、分配、注入、驗證和使用。
密鑰必須通過最安全的通路進行分配。例如,可以派非常可靠的信使攜帶密鑰分配給互相通信的各用戶。這種方法稱為網外分配方式。但隨著用戶的增多和網絡流量的增大,密鑰更換頻繁(密鑰必須定期更換才能做到可靠),派信使的方法已不再使用,而應采用網內分配方式,即對密鑰自動分配。
1.對稱密鑰的分配
對稱密鑰分配的問題:①如果n個人要相互通信,需要n(n-1)/2個密鑰。如果n很大,需要的密鑰數量非常大。②通信雙方怎樣才能安全地得到共享的密鑰呢?正是因為網絡不安全,所以才需要使用加密技術。但密鑰要怎樣傳送呢?
Ⅰ、KDC對會話密鑰的分配
目前常用的密鑰分配方式是設立密鑰分配中心KDC(key distribution center),它給需要進行秘密通信的用戶臨時分配一個會話密鑰(僅使用一次)。圖,A和B在登記時就在KDC的服務器上安裝了各自和KDC進行通信的主密鑰Ka和Kb。
Ⅱ、更先進的加密標準ACS——Kerberos V4
Kerberos使用兩個服務器:鑒別服務器AS、票據授予服務器TGS。只用于客戶與服務器之間的鑒別,而不使用人對人的鑒別。
①A向AS表明身份,AS驗證后允許A和TGS聯系;
②報文包括Ks和AS要發送給TGS的票據(票據用TGS的對稱密鑰Ktg加密)。A不保存密鑰Ka,但這個報文到達A時,A就鍵入口令,若口令正確,則口令和適當算法一起就能生成密鑰Ka。這個口令隨即銷毀。于是提取出Ks和轉發給TGS的票據。
③A向TGS發送三個項目:
轉發AS發來的票據;
服務器B的名字,這表明A請求B的服務。請注意,現在A向TGS證明自己的身份并非通過鍵入口令(因為入侵者能夠從網上截獲明文口令),而是通過轉發AS發出的票據(只有A才能提取出)。票據是加密的,入侵者偽造不了;
用Ks加密的時間戳T,它用來防止入侵者的重放攻擊。
④TGS發送兩個票據,每一個都包含A和B通信的會話密鑰Kab。給A的票據用Ks加密,給B的票據用B的密鑰Kb加密。請注意,現在入侵者不能提取Kab,因為不知道Ka和Kb。入侵者也不能重放步驟③,因為入侵者不能把時間戳更換為一個新的(因為不知道Ks)。如果入侵者在時間戳到期之前,非常迅速地發送步驟③的報文,那么對TGS發來的兩個票據仍然不能解密。
⑤A向B轉發TGS發來的票據,同時發送用Kab加密的時間戳T。
⑥B把時間戳T加1來證實收到了票據,B向A發送的報文用密鑰Kab加密。
時間戳要求所有主機的時鐘誤差不要太大,這是為了防止重放攻擊。時間太長就要廢。
2.公鑰的分配
問題提出——設想A向欺騙B,就向B發送一份偽造是C發送的報文,A用自己的秘密密鑰進行數字簽名,并附上A自己的公鑰,謊稱這公鑰是C的。B怎么知道這不是C的呢?
認證中心CA(certification authority)將公鑰與對應的實體進行綁定(binding)。
六、因特網使用的安全協議
1.網絡層安全協議
Ⅰ、IPsec與安全關聯SA
網絡層保密是指所有在IP數據報中的數據都是加密的。在IPsec(IP安全協議的縮寫)中有兩個主要協議:鑒別首部AH(提供源點鑒別、數據完整性,不提供保密)和封裝安全有效載荷ESP(提供源點鑒別、數據完整性、保密)。
在使用AH和ESP前,要從源主機到目的主機建立一條網絡層的邏輯連接。此邏輯連接叫作安全關聯SA。這樣,IPsec就把傳統的因特網無連接的網絡層轉換為具有邏輯連接的層。
安全關聯是單向連接。它由三元組唯一確定:①安全協議(使用AH或ESP協議)的標識符;②此單向連接的目的IP地址;③一個32位的連接標識符,稱為安全參數索引SPI。
對于給定的安全關聯SA,每一個IPsec數據報都有一個存放SPI的字段。通過此SA的所有數據報都使用同樣的SPI值。
Ⅱ、鑒別首部協議AH
協議設為51,是為讓目的主機知道在IP首部后面緊接著的是AH首部。在傳輸過程中,中間的路由器不查看AH首部。數據到達終點時,目的主機才處理AH字段,以鑒別源點和檢查數據報的完整性。
AH首部具有如下一些字段:
(1)下一個首部(8位),標志緊接著本首部的下一個首部的類型(如TCP或UDP)
(2)有效載荷長度(8位),即鑒別數據字段的長度,以32位字為單位
(3)安全參數索引SPI(32位),標志一個安全關聯
(4)序號(32位),鑒別數據字段的長度,以32位字位單位
(5)保留(16位),今后用
(6)鑒別數據(可變)。為32位字的整數倍,包含了經數字簽名的報文摘要(對原來的數據報進行報文摘要運算),因此可用來鑒別源主機和檢查IP數據報的完整性。
Ⅲ、封裝安全有效載荷協議ESP
協議設為50。IP首部后面是ESP首部、TCP/UDP報文段、ESP尾部、ESP數據。
在ESP首部中,有標志一個安全關聯的安全參數索引SPI(32位)和序號(32位)。在ESP尾部中有下一個尾部(作用和AH首部的一樣)。
加密后攻擊者無法得知所使用的運輸層協議(它在IP數據報的數據部分)。ESP的鑒別數據和AH中的鑒別數據的作用是一樣的。
2.運輸層安全協議
用戶在網購時需要安全協議。
Ⅰ、安全套接層SSL
SSL可對萬維網客戶與服務器之間傳送的數據進行加密和鑒別。它在雙方的聯絡階段(也就是握手階段)對將要使用的加密算法(如用DES或RSA)和雙方共享的會話密鑰進行協商,完成客戶與服務器之間的鑒別。在聯絡完成后,所有傳送的數據都使用在聯絡階段商定的會話密鑰。SSL不僅被所常用的瀏覽器和萬維網服務器所支持,而且是運輸層安全協議TLS的基礎。
SSL還可用于IMAP郵件存取的鑒別和數據加密。SSL的位置在應用層和運輸層(TCP)之間。在發送方,SSL接收應用層的數據(如HTTP或IMAP報文),對數據進行加密,然后把加了密的數據送往TCP套接字。在接收方,SSL從TCP套接字讀取數據,解密后把數據交給應用層。
SSL提供一下三種功能:SSL服務器鑒別、加密的SSL會話、SSL客戶鑒別。
SSL的工作原理:
假定A有一個使用SSL的安全網頁,B上網時用鼠標點擊到這個安全網頁的鏈接(URL協議部分是https)。接著服務器和瀏覽器就進行握手協議:
(1)瀏覽器向服務器發送瀏覽器的SSL版本號和密碼編碼的參數選擇(因為瀏覽器和服務器要協商使用哪一種對稱密鑰算法);
(2)服務器向瀏覽器發送服務器的SSL版本號、密碼編碼的參數選擇及服務器的證書。證書包括服務器的RSA公鑰,此證書是由某個認證中心用自己的密鑰加密,然后發送給該服務器。
(3)瀏覽器有一個可信的CA表,表中有每一個CA的公鑰。當瀏覽器收到服務器發來的證書時,就檢查此證書的發行者是否在CA表中,若不在,則后面的加密和鑒別連接就不能繼續。如在,瀏覽器就使用CA相應的公鑰對證書進行解密,這樣就得到了服務器的公鑰。
(4)瀏覽器隨機產生一個對稱會話密鑰,并用服務器的公鑰加密,然后將加密的會話密鑰發送給服務器。
(5)瀏覽器向服務器發送一個報文,說明以后瀏覽器將使用此會話密鑰進行加密,然后瀏覽器再向服務器發送一個單獨的加密報文,指出瀏覽器端的握手過程完成。
(6)服務器也向瀏覽器發送一個報文,說明以后服務器將使用此會話密鑰進行加密,然后服務器再向瀏覽器發送一個單獨的加密報文,指出服務器端的握手過程已經完成。
(7)SSL的握手過程至此完成,下面就可開始SSL的會話過程。瀏覽器和服務器都使用這個會話密鑰對所發送的報文進行加密。
評價:缺少一些措施來防止在因特網商務中出現的各種可能的欺騙行為。
Ⅱ、安全電子交易SET
專為在因特網上進行安全信用卡交易的協議。主要特點:
①專為與支付有關的報文進行加密,不能像SSL那樣對任意的數據進行加密。
②涉及到三方,即客戶、商家、商業銀行,所有在這三方之間交互的敏感信息都被加密。
③要求這三方都有證書。在SET交易中,商家看不見客戶傳送給商業銀行的信用卡號碼。
由于SET交易中客戶端要使用專門軟件,商家要支付比SSL更高的費用,因此SET在市場的競爭中失敗了。
3.應用層安全協議
簡單。下面介紹兩種用于電子郵件的安全協議。
1、PGP協議
是一個完整的電子郵件安全軟件包,包括加密、鑒別、電子簽名和壓縮等技術。是把現有的加密算法(如RSA公鑰加密算法或MD5報文摘要算法)綜合在一起。提供電子郵件的安全性、發送方鑒別和報文完整性。
工作原理——
假定A向B發送電子郵件明文X,現在用PGP進行加密。A有三個密鑰:自己的私鑰、B的公鑰和自己生成的一次性密鑰。B有兩個密鑰:自己的私鑰和A的公鑰。
A需要做以下幾件事:
(1)對明文X進行MD5報文摘要運算,得出報文摘要H,用自己的私鑰對H進行數字簽名,得出簽了名的報文摘要D(H),把它拼接在明文X后面,得到報文(X+D(H))。
(2)使用自己生成的一次性密鑰對報文(X+D(H))進行加密
(3)用B的公鑰對自己生成的一次性密鑰進行加密
(4)把加了密的一次性密鑰和加了密的報文(X+D(H))發送給B
B收到加密的報文后要做以下幾件事:
(1)把被加密的一次性密鑰和被加密的報文(X+D(H))分離開
(2)用自己的私鑰解出A的一次性密鑰
(3)用接出的一次性密鑰對報文(X+D(H))進行解密,然后分理出明文X和D(H)
(4)用A的公鑰對D(H)進行簽名核實,得出報文摘要H
(5)對X進行報文摘要運算,得出報文摘要,看是否和H一樣。如一樣,則電子郵件的發送方鑒別就通過了,報文的完整性也得到肯定。
Ⅱ、PEM協議
privacy enhanced mail。有比PGP更完善的密鑰管理機制。
七、鏈路加密與端到端加密
從網絡傳輸角度看,有這兩種不同的加密策略。
1.鏈路加密
E是加密,D是解密。由于協議數據單元PDU中的協議控制信息和數據都被加密,這就掩蓋了源點和終點的地址。若在結點間保持連續的密文序列,則PDU的頻度和長度也就得到掩蓋。這就防止了流量分析。由于不需要傳送額外的數據,因此不會減少網絡的有效帶寬。
缺點在于在中間結點暴露了信息的內容。在網絡互連的情況下,僅采用鏈路加密是不能實現通信安全的。
2.端到端加密
是在源點和終點中對傳送的PDU進行加密和解密。報文的安全性不會因中間結點的不可靠而受到影響。
端到端加密應在運輸層或應用層來實現。若選擇在運輸層加密,可以使安全措施對用戶來說是透明的,這樣可不必為每一個用戶提供單獨的安全保護,但容易遭受運輸層以上的攻擊。當選擇在應用層加密時,用戶可根據自己的特殊要求來選擇不同的加密算法,而不會影響其他用戶。這樣,端到端更容易適合不同用戶的要求。
在端到端加密的情況下,PDU的控制信息部分(如源點地址、終點地址、路由信息等)不能被加密,否則中間結點就不能正確選擇路由。這就使得這種方法易于受到流量分析的攻擊。雖然也可以通過發送一些假的PDU來掩蓋有意義的報文流動(報文填充),但這要以降低網絡性能為代價。若各結點都使用對稱密鑰體制,則各結點必須持有與其他結點相同的密鑰,這就需要在全網范圍內進行密鑰管理和分配。
為了獲得更好的安全性,可將鏈路加密與端到端加密結合在一起使用。鏈路加密用來對PDU的目的地址進行加密,而端到端加密則提供了對端到端的數據進行保護。
八、防火墻
是一種特殊編程的路由器,安裝在一個網點和網絡的其余部分之間。目前是實施訪問控制策略。這個訪問控制策略是由使用防火墻的單位自行制定的。
防火墻的功能有兩個,一個是阻止,一個是允許。阻止是阻止某種類型的流量通過防火墻(從外部網絡到內部網絡)。
防火墻技術有兩類:
①網絡級防火墻
用來防止整個網絡出現外來非法的入侵。屬于這類的有分組過濾和授權服務器。前者檢查所有流入本網絡的信息,后者拒絕不符合事先制定好的一套準則數據,而后者則是檢查用戶的登錄是否合法。
②應用級防火墻
從應用程序來進行訪問控制,通常使用應用網關或代理服務器來區分各種應用。
使用兩個局域網的原因:使穿過防火墻的各種分組必須通過分組過濾路由器和應用網關的檢查,而沒有任何其他的路徑。
分組過濾是靠系統管理員所設置的表格來實現的。表格列出了可接受的、必須阻攔的目的站和源站。
TCP的端口號指出了在TCP上面的應用程序,所以如果在因特網進入防火墻的分組過濾器中將所有目的端口號為xx的入分組進行阻攔。但阻攔出分組要麻煩,因為它們有時不使用標準的端口號,有的是動態分配端口號。
應用網關是從應用層的角度來檢查每一個分組。例如,一個郵件網關在檢查每一個郵件時,要根據郵件的首部或報文的大小,甚至是報文的內容(例如有沒有涉及敏感詞)來確定該郵件能否通過防火墻。