很多年來,人們一直在爭論IP層是否需要身份驗證和安全性及相關的用法問題。本文將討論如何在IPv6中通過身份驗證頭( AH )和封裝安全性凈荷( ESP )頭來實現身份驗證和安全性,包括安全密碼傳輸、加密和數據包的數字簽名。但在探討IPv6的安全性頭之前,本章將首先介紹IP安全性體系結構以及在IPv6中該體系結構可能實現的部分。該體系結構在RFC 1825(IP的安全性體系結構)中首次進行了描述。
1.1 為IP增加安全性
IPv4的目的只是作為簡單的網絡互通協議,因而其中沒有包含安全特性。如果IPv4僅作為研究工具,或者在包括研究、軍事、教育和政府網絡的相對嚴格的轄區中作為產品型網絡協議而使用,缺乏安全性并不是一個嚴重的缺陷。但是,隨著IP網絡在商用和消費網絡中的重要性與日俱增,攻擊所導致的潛在危害將具有空前的破壞性。
1.1.1 安全性目標
對于安全性,可以定義如下三個公認的目標:
身份驗證:能夠可靠地確定接收到的數據與發送的數據一致,并且確保發送該數據的實體與其所宣稱的身份一致。
完整性:能夠可靠地確定數據在從源到目的地傳送的過程中沒有被修改。
機密性:確保數據只能為預期的接收者使用或讀出,而不能為其他任何實體使用或讀出。
完整性和身份驗證經常密切相關,而機密性有時使用公共密鑰加密來實現,這樣也有助于對源端進行身份驗證。
AH和ESP頭有助于在IP上實現上述目標。很簡單, AH為源節點提供了在包上進行數字簽名的機制。AH之后的數據都是純文本格式,可能被攻擊者截取。但是,在目的節點接收之后,可以使用AH中包含的數據來進行身份驗證。
另一方面,可以使用ESP頭對數據內容進行加密。ESP頭之后的所有數據都進行了加密,ESP頭為接收者提供了足夠的數據以對包的其余部分進行解密。
Internet安全性(實際上任何一種安全性)的問題在于很難創建安全性,尤其是在開放的網絡中,包可能經過任意數量的未知網絡,任一個網絡中都可能有包嗅探器在工作,而任何網絡都無法察覺。在這樣的開放環境中,即使使用了加密和數字簽名,安全性也將受到嚴重的威脅。對IP業務流的攻擊也包括諸如偵聽之類,致使從一個實體發往另一個實體的數據被未經授權的第三個實體所竊取。此外, IP安全性還應該解決下列安全性威脅:
否認服務攻擊:即實體使用網絡傳送數據,致使某個授權用戶無法訪問網絡資源。例如,攻擊者可能使某主機淹沒于大量請求中,從而致使系統崩潰;或者重復傳送很長的e - m a i l報文,企圖以惡意業務流塞滿用戶或站點帶寬。
愚弄攻擊:即實體傳送虛報來源的包。例如,有一種愚弄攻擊是由攻擊者發送e - m a i l報文,報頭的“ F r o m :”指明該報文的發信人是美國總統。那些在在包頭攜帶錯誤源地址的攻擊則更加陰險。
密鑰處理問題則更加復雜。為使身份驗證和加密更可靠, IP安全性體系結構要求使用密鑰。如何安全地管理和分配密鑰,同時又能正確地將密鑰與實體結合以避免中間者的攻擊,這是Internet業界所面臨的最棘手的問題之一。這種中間者的攻擊是指,攻擊者(假設為C )將自己置于兩個通信實體(假設為A和B )之間,攔截A和B之間傳送的所有數據,冒充A把數據重新發送給B,也冒充B把數據重新發送給A。如果C能夠以類似B的公共密鑰進行身份驗證,從而讓A確認它就是B,同樣也讓B誤以為它就是A,那么A和B就會誤認為他們之間的傳送是安全的。
IPsec本身不能使Internet更加安全。本章只提出與Internet安全性相關的幾個最迫切的問題。對Internet安全性的細節感興趣的讀者,請參考本書作者的另一本書《Personal Encryption Clearly Explained》(AP Professional,1998),書中討論了加密、數字簽名和Internet安全性問題。
1.1.2 RFC 1825及建議的更新
RFC 1825于1995年8月發布,共有2 2頁;其第5版修改草案完成于1998年5月,已經達到6 6頁。安全性的正確實現要求認真考慮細節問題,這是對原RFC進行擴充的主要原因。更新后的文檔在最終發布時,在關于如何實現所有的IP協議(包括I C M P和組播)方面將提供更多的細節,同時將更詳細討論密鑰管理相關問題和安全性關聯問題。
1.2 IPsec
IPsec的目標是提供既可用于IPv4也可用于IPv6的安全性機制,該服務由IP層提供。一個系統可以使用IPsec來要求與其他系統的交互以安全的方式進行—通過使用特定的安全性算法和協議。IPsec提供了必要的工具,用于一個系統與其他系統之間對彼此可接受的安全性進行協商。這意味著,一個系統可能有多個可接受的加密算法,這些算法允許該系統使用它所傾向的算法和其他系統協商,但如果其他系統不支持它的第一選擇,則它也可以接受某些替代算法。
IPsec中可能考慮如下安全性服務:
訪問控制。如果沒有正確的密碼就不能訪問一個服務或系統??梢哉{用安全性協議來控制密鑰的安全交換,用戶身份驗證可以用于訪問控制。
無連接的完整性。使用IPsec,有可能在不參照其他包的情況下,對任一單獨的IP包進行完整性校驗。此時每個包都是獨立的,可以通過自身來確認。此功能可以通過使用安全散列技術來完成,它與使用檢查數字類似,但可靠性更高,并且更不容易被未授權實體所篡改。
數據源身份驗證。IPsec提供的又一項安全性服務是對IP包內包含的數據的來源進行標識。此功能通過使用數字簽名算法來完成。
對包重放攻擊的防御。作為無連接協議, IP很容易受到重放攻擊的威脅。重放攻擊是指攻擊者發送一個目的主機已接收過的包,通過占用接收系統的資源,這種攻擊使系統的可用性受到損害。為對付這種花招, IPsec提供了包計數器機制。
加密。數據機密性是指只允許身份驗證正確者訪問數據,對其他任何人一律不準。它是通過使用加密來提供的。
有限的業務流機密性。有時候只使用加密數據不足以保護系統。只要知道一次加密交換的末端點、交互的頻度或有關數據傳送的其他信息,堅決的攻擊者就有足夠的信息來使系統混亂或毀滅系統。通過使用IP隧道方法,尤其是與安全性網關共同使用, IPsec提供了有限的業務流機密性。
通過正確使用ESP頭和AH,上述所有功能都有可能得以實現。目前,人們使用了很多密碼功能,在下一節中將對此予以簡要描述。后續節將扼要描述密鑰管理基礎設施。
1.2.1 加密和身份驗證算法
由于對安全性的攻擊方法多種多樣,設計者很難預計到所有的攻擊方法,因此設計安全性算法和協議非常困難。普遍為人接受的關于安全性方法的觀點是,一個好的加密算法或身份驗證算法即使被攻擊者了解,該算法也是安全的。這一點對于Internet安全性尤其重要。在Internet中,使用嗅探器的攻擊者通過偵聽系統與其連接協商,經常能夠確切了解系統使用的是哪一種算法。
與Internet安全性相關的重要的密碼功能大致有5類,包括對稱加密、公共密鑰加密、密鑰交換、安全散列和數字簽名。
1. 對稱加密
大多數人都熟知對稱加密這一加密方法。在這種方法中,每一方都使用相同的密鑰來加密或解密。只要掌握了密鑰,就可以破解使用此法加密的所有數據。這種方法有時也稱作秘密密鑰加密。通常對稱加密效率很高,它是網絡傳送大量數據中最常用的一類加密方法。
常用的對稱加密算法包括:
數據加密標準( D E S )。D E S首先由I B M公司在7 0年代提出,已成為國際標準。它有5 6位密鑰。三重D E S算法對D E S略作變化,它使用D E S算法三次加密數據,從而改進了安全性。
R C 2、R C 4和R C 5。這些密碼算法提供了可變長度密鑰加密方法,由一家安全性動態公司,R SA數據安全公司授權使用。目前網景公司的N a v i g a t o r瀏覽器及其他很多Internet 客戶端和服務器端產品使用了這些密碼。
其他算法。包括在加拿大開發的用于N o r t e l公司E n t r u s t產品的C A S T、國際數據加密算法( I D E A )、傳聞由前蘇聯安全局開發的G O S T算法、由Bruce Schneier開發并在公共域發表的B l o w f i s h算法及由美國國家安全局開發并用于C l i p p e r芯片的契約密鑰系統的S k i p j a c k算法。
安全加密方法要求使用足夠長的密鑰。短密鑰很容易為窮舉攻擊所破解。在窮舉攻擊中,攻擊者使用計算機來對所有可能的密鑰組合進行測試,很容易找到密鑰。例如,長度為4 0位的密鑰就不夠安全,因為使用相對而言并不算昂貴的計算機來進行窮舉攻擊,在很短的時間內就可以破獲密鑰。同樣,單D E S算法已經被破解。一般而言,對于窮舉攻擊,在可預測的將來,1 2 8位還可能是安全的。
對于其他類型的攻擊,對稱加密算法也比較脆弱。大多數使用對稱加密算法的應用往往使用會話密鑰,即一個密鑰只用于一個會話的數據傳送,或在一次會話中使用幾個密鑰。這樣,如果會話密鑰丟失,則只有在此會話中傳送的數據受損,不會影響到較長時期內交換的大量數據。
2. 公共密鑰加密
公共密鑰加密算法使用一對密鑰。公共密鑰與秘密密鑰相關聯,公共密鑰是公開的。以公共密鑰加密的數據只能以秘密密鑰來解密,同樣可以用公共密鑰來解密以秘密密鑰加密的數據。這樣只要實體的秘密密鑰不泄露,其他實體就可以確信以公共密鑰加密的數據只能由
相應秘密密鑰的持有者來解密。盡管公共密鑰加密算法的效率不高,但它和數字簽名(參見后續討論)均是最常用的對網絡傳送的會話密鑰進行加密的算法。
最常用的一類公共密鑰加密算法是R SA算法,該算法由Ron Rivest、Adi Shamir 和L e n A d l e m a n開發,由R SA數據安全公司授權使用。R SA定義了用于選擇和生成公共/秘密密鑰對的機制,以及目前用于加密的數學函數。
3. 密鑰交換
開放信道這種通信媒體上傳送的數據可能被第三者竊聽。在Internet這樣的開放信道上要實現秘密共享難度很大。但是很有必要實現對共享秘密的處理,因為兩個實體之間需要共享用于加密的密鑰。關于如何在公共信道上安全地處理共享密鑰這一問題,有一些重要的加密算法,是以對除預定接受者之外的任何人都保密的方式來實現的。
D i ff i e - H e l l m a n密鑰交換算法允許實體間交換足夠的信息以產生會話加密密鑰。按照慣例,假設一個密碼協議的兩個參與者實體分別是A l i c e和B o b,A l i c e使用B o b的公開值和自己的秘密值來計算出一個值; B o b也計算出自己的值并發給A l i c e,然后雙方使用自己的秘密值來計算他們的共享密鑰。其中的數學計算相對比較簡單,而且不屬于本書討論的范圍。算法的概要是B o b和A l i c e能夠互相發送足夠的信息給對方以計算出他們的共享密鑰,但是這些信息卻不足以讓攻擊者計算出密鑰。
D i ff i e - H e l l m a n算法通常稱為公共密鑰算法,但它并不是一種公共密鑰加密算法。該算法可用于計算密鑰,但密鑰必須和某種其他加密算法一起使用。但是, D i ff i e - H e l l m a n算法可用于身份驗證。Network Associates公司的P G P公共密鑰軟件中就使用了此算法。
密鑰交換是構成任何完整的Internet安全性體系都必備的。此外, IPsec安全性體系結構還包括Internet密鑰交換( I K E )及Internet安全性關聯和密鑰管理協議( I SA K M P )。在后續章節中將討論這些標準和其他相關標準。
4. 安全散列
散列是一定量數據的數據摘要的一種排序。檢查數字是簡單的散列類型,而安全散列則產生較長的結果,經常是1 2 8位。對于良好的安全散列,攻擊者很難顛倒設計或以其他方式毀滅。安全散列可以與密鑰一起使用,也可以單獨使用。其目的是提供報文的數字摘要,用來驗證已經收到的數據是否與發送者所發送的相同。發送者計算散列并將其值包含在數據中,接收者對收到的數據進行散列計算,如果結果值與數據中所攜帶的散列值匹配,接收者就可以確認數據的完整性。
常用的散列方法由R SA數據安全公司提出,包括M D 2、M D 4和M D 5報文摘要函數。安全散列算法( SHA )是由美國國家標準和技術協會( N I S T )所開發的標準摘要函數。散列可以單獨使用,也可以和數字簽名一起使用。
5. 數字簽名
前面提到的公共密鑰加密依賴于密鑰對,而數字簽名則依靠公共密鑰加密的特性,即允許數據以實體密鑰對中的秘密密鑰來加密,以公共密鑰來解密。發送者首先對于要簽名的數據進行安全散列計算,然后對結果使用秘密密鑰加密。而接收者首先進行相同的散列計算,
然后對發送者所附加的加密值進行解密。如果兩次計算的值能夠匹配,接收者就可以確信公共密鑰的主人就是對報文簽名的實體,且報文在傳送中并沒有被修改。
R SA公共密鑰加密算法可以用于數字簽名。簽名實體為待簽名的數據建立散列,然后以自己的密鑰對散列加密;證實實體則對接收到的數據進行相同的散列計算,使用簽名實體的公共密鑰對簽名解密,并且比較所得的兩個值。如果散列與解密的簽名相同,則數據就得到證實。


