TCP/IP基礎文章(安全篇) (轉)

worldblog發表於2007-12-02
TCP/IP基礎文章(安全篇) (轉)[@more@]基礎文章(篇)
來源:wuhanman轉貼

TCP/IP的層次不同提供的安全性也不同,例如,在層提供虛擬私用網路,在傳輸層提供安全套接服務。下面將分別介紹TCP/IP不同層次的安全性和提高各層安全性的方法。

一、Inte層的安全性

對Internet層的安全進行標準化的想法早就有了。在過去十年裡,已經提出了一些方案。例如,"安全協議3號(SP3)"就是美國國家安全域性以及標準技術協會作為"安全資料網路(S)"的一部分而制定的。"網路層安全協議(NLSP)"是由國際標準化組織為"無連線網路協議(CLNP)"制定的安全協議標準。"整合化NLSP(I-NLSP)"是美國國家科技研究所提出的包括IP和CLNP在內的統一安全機制。SwIPe是另一個Intenet層的安全協議,由Ioannidis和Blaze提出並實現原型。所有這些提案的共同點多於不同點。事實上,他們用的都是IP封裝技術。其本質是,純文字的包被,封裝在外層的IP報頭裡,用來對加密的包進行Internet上的選擇。到達另一端時,外層的IP報頭被拆開,報文被,然後送到收報地點。

Internet工程特遣組(IETF)已經特許Internet協議安全協議(IPSEC)工作組對IP安全協議(IPSP)和對應的Internet金鑰管理協議(IKMP)進行標準化工作。IPSP的主要目的是使需要安全措施的能夠使用相應的加密安全體制。該體制不僅能在目前通行的IP()下工作,也能在IP的新版本(IPng或)下工作。該體制應該是與演算法無關的,即使加密演算法替換了,也不對其他部分的實現產生影響。此外,該體制必須能實行多種安全政策,但要避免給不使用該體制的人造成不利影響。按照這些要求,IPSEC工作組制訂了一個規範:頭(Authentication Header,AH)和封裝安全有效負荷(Encapsulating Security Payload,ESP)。簡言之,AH提供IP包的真實性和完整性,ESP提供機要內容。

AH指一段訊息認證程式碼(Message Authentication Code,MAC),在傳送IP包之前,它已經被事先計算好。傳送方用一個加密金鑰算出AH,接收方用同一或另一金鑰對之進行驗證。如果收發雙方使用的是單鑰體制,那它們就使用同一金鑰;如果收發雙方使用的是公鑰體制,那它們就使用不同的金鑰。在後一種情形,AH體制能額外地提供不可否認的服務。事實上,有些在傳輸中可變的域,如IPv4中的time-to-live域或IPv6中的hop limit域,都是在AH的計算中必須忽略不計的。 1828首次規定了加封狀態下AH的計算和驗證中要採用帶金鑰的MD5演算法。而與此同時,MD5和加封狀態都被批評為加密強度太弱,並有替換的方案提出。

IP ESP的基本想法是整個IP包進行封裝,或者只對ESP內上層協議的資料(運輸狀態)進行封裝,並對ESP的絕大部分資料進行加密。在管道狀態下,為當前已加密的ESP附加了一個新的IP頭(純文字),它可以用來對IP包在Internet上作路由選擇。接收方把這個IP頭取掉,再對ESP進行解密,處理並取掉ESP頭,再對原來的IP包或更高層協議的資料就象普通的IP包那樣進行處理。RFC 1827中對ESP的格式作了規定,RFC 1829中規定了在密碼塊連結(CBC)狀態下ESP加密和解密要使用資料加密標準(DES)。雖然其他演算法和狀態也是可以使用的,但一些國家對此類產品的進出口控制也是不能不考慮的因素。有些國家甚至連私用加密都要限制。

AH與ESP體制可以合用,也可以分用。不管怎麼用,都逃不脫傳輸分析的。人們不太清楚在Internet層上,是否真有經濟有效的對抗傳輸分析的手段,但是在Internet使用者裡,真正把傳輸分析當回事兒的也是寥寥無幾。

1995年8月,Internet工程領導小組(IESG)批准了有關IPSP的RFC作為Internet標準系列的推薦標準。除RFC 1828和RFC 1829外,還有兩個實驗性的RFC,規定了在AH和ESP體制中,用安全雜湊演算法(SHA)來代替MD5(RFC 1852)和用三元DES代替DES(RFC 1851)。

在最簡單的情況下,IPSP用手工來金鑰。然而,當IPSP大規模發展的時候,就需要在Internet上建立標準化的金鑰管理協議。這個金鑰管理協議按照IPSP安全條例的要求,指定管理金鑰的方法。

因此,IPSEC工作組也負責進行Internet金鑰管理協議(IKMP),其他若干協議的標準化工作也已經提上日程。其中最重要的有:

IBM 提出的"標準金鑰管理協議(MKMP)"
SUN 提出的"Internet協議的簡單金鑰管理(SKIP)"
Phil Karn 提出的"Photuris金鑰管理協議"
Hugo Krawczik 提出的"安全金鑰機制(SKEME)"
NSA 提出的"Internet安全條例及金鑰管理協議"
HilarOrman 提出的"OAKLEY金鑰決定協議"
在這裡需要再次強調指出,這些協議草案的相似點多於不同點。除MKMP外,它們都要求一個既存的、完全可操作的公鑰基礎設施(PKI)。MKMP沒有這個要求,因為它假定雙方已經共同知道一個主金鑰(Master Key),可能是事先手工釋出的。SKIP要求Diffie-Hellman證書,其他協議則要求RSA證書。

1996年9月,IPSEC決定採用OAKLEY作為ISAKMP下強制推行的金鑰管理手段,採用SKIP作為IPv4和IPv6實現時的優先選擇。目前已經有一些廠商實現了合成的 ISAKMP/OAKLEY方案。Photuris以及類Photuris的協議的基本想法是對每一個會話金鑰都採用Diffie-Hellman金鑰交換機制,並隨後採用簽名交換來確認Diffie--Hellman引數,確保沒有"中間人"進行攻擊。這種組合最初是由Diffie、Ooschot和Wiener在一個"站對站(STS)"的協議中提出的。Photuris裡面又新增了一種所謂的"cookie"交換,它可以提供"清障(anti-logging)"功能,即防範對服務攻擊的否認。

Photuris以及類Photuris的協議由於對每一個會話金鑰都採用Diffie-Hellman金鑰交換機制,故可提供回傳保護(back-traffic protection,BTP)和完整轉發安全性(perfect-forward secrecy,PFS)。實質上,這意味著一旦某個攻擊者了長效私鑰,比如Photuris中的RSA金鑰或SKIP中的Diffie-Hellman金鑰,所有其他攻擊者就可以冒充被破解的密碼的擁有者。但是,攻擊者卻不一定有本事破解該擁有者過去或未來收發的資訊。

值得注意的是,SKIP並不提供BTP和PFS。儘管它採用Diffie-Hellman金鑰交換機制,但交換的進行是隱含的,也就是說,兩個實體以證書形式彼此知道對方長效Diffie--Hellman 公鑰,從而隱含地共享一個主金鑰。該主金鑰可以匯出對分組金鑰進行加密的金鑰,而分組金鑰才真正用來對IP包加密。一旦長效Diffie-Hellman金鑰洩露,,則任何在該金鑰保護下的金鑰所保護的相應通訊都將被破解。而且SKIP是無狀態的,它不以安全條例為基礎。每個IP包可能是個別地進行加密和解密的,歸根到底用的是不同的金鑰。

SKIP不提供BTP和PFS這件事曾經引起IPSEC工作組內部的批評,該協議也曾進行過擴充,試圖提供BTP和PFS。但是,擴充後的SKIP協議版本其實是在BTP和PFS功能的提供該協議的無狀態性之間的某種折衷。實際上,增加了BTP和PFS功能的SKIP非常類似於Photuris以及類Photuris的協議,唯一的主要區別是SKIP(仍然)需要原來的Diffie-Hellman證書。這一點必須注意:目前在Internet上,RSA證書比其他證書更容易實現和開展業務。

大多數IPSP及其相應的金鑰管理協議的實現均基於系統。任何IPSP的實現都必須跟對應協議棧的原始碼糾纏在一起,而這原始碼又能在Unix系統上使用,其原因大概就在於此。但是,如果要想在Internet上更廣泛地使用和採納安全協議,就必須有相應的DOS或版本。而在這些系統上實現Internet層安全協議所直接面臨的一個問題就是,PC上相應的實現TCP/IP的公共原始碼資源什麼也沒有。為克服這一困難,Wagner和Bellovin實現了一個IPSEC模組,它象一個裝置一樣工作,完全處於IP層以下。

Internet層安全性的主要優點是它的透明性,也就是說,安全服務的提供不需要應用程式、其他通訊層次和網路部件做任何改動。它的最主要的缺點是: Internet層一般對屬於不同程式和相應條例的包不作區別。對所有去往同一地址的包,它將按照同樣的加密金鑰和訪問控制策略來處理。這可能導致提供不了所需的功能,也會導致下降。針對面向主機的金鑰分配的這些問題,RFC 1825允許(甚至可以說是推薦) 使用面向使用者的金鑰分配,其中,不同的連線會得到不同的加密金鑰。但是,面向使用者的金鑰分配需要對相應的核心作比較大的改動。

雖然IPSP的規範已經基本制訂完畢,但金鑰管理的情況千變萬化,要做的工作還很多。尚未引起足夠重視的一個重要的問題是在多播 (multicast)環境下的金鑰分配問題,例如,在Internet多播骨幹網(MBone)或IPv6網中的金鑰分配問題。

簡而言之,Internet層是非常適合提供基於主機對主機的安全服務的。相應的安全協議可以用來在Internet上建立安全的IP通道和虛擬私有網。例如,利用它對IP包的加密和解密功能,可以簡捷地強化系統的防衛能力。事實上,許多廠商已經這樣做了。RSA資料安全公司已經發起了一個倡議,來推進多家防火牆和TCP/IP廠商聯合開發虛擬私有網。該倡議被稱為S-WAN(安全)倡議。其目標是制訂和推薦Internet層的安全協議標準。





二、傳輸層的安全性

在Internet應用序中,通常使用廣義的程式間通訊(IPC)機制來與不同層次的安全協議打交道。比較流行的兩個IPC程式設計介面是 Sockets和傳輸層介面(TLI),在Unix系統V命令裡可以找到。

在Internet中提供安全服務的首先一個想法便是強化它的IPC介面,如BSD Sockets等,具體做法包括雙端實體的認證,資料加密金鑰的交換等。通訊公司遵循了這個思路,制定了建立在可靠的傳輸服務(如TCP/IP所提供)基礎上的安全套接層協議()。SSL版本3(SSL v3)於1995年12月制定。它主要包含以下兩個協議:

SSL記錄協議它涉及應用程式提供的資訊的分段、、資料認證和加密。SSL v3提供對資料認證用的MD5和SHA以及資料加密用的R4和DES等的支援,用來對資料進行認證和加密的金鑰可以透過SSL的握手協議來協商。
SSL握手協議 用來交換版本號、加密演算法、(相互)身份認證並交換金鑰。SSL v3 提供對Deffie-Hellman金鑰交換演算法、基於RSA的金鑰交換機制和另一種實現在 Fortezza chip上的金鑰交換機制的支援。
Netscape通訊公司已經向公眾推出了SSL的參考實現(稱為SSLref)。另一免費的SSL實現叫做SSLeay。SSLref和SSLeay均可給任何TCP/IP應用提供SSL功能。Internet號碼分配當局(IANA)已經為具備SSL功能的應用分配了固定埠號,例如,帶SSL的 HTTP(https)被分配的埠號為443,帶SSL的SMTP(ssmtp)被分配的埠號為465,帶SSL的NNTP(snntp)被分配的埠號為563。

推出了SSL2的改進版本稱為PCT(私人通訊技術)。至少從它使用的記錄格式來看,SSL和PCT是十分相似的。它們的主要差別是它們在版本號欄位的最顯著位(The Most Significant Bit)上的取值有所不同: SSL該位取0,PCT該位取1。這樣區分之後,就可以對這兩個協議都給以支援。

1996年4月,IETF授權一個傳輸層安全(TLS)工作組著手製定一個傳輸層安全協議(TLSP),以便作為標準提案向IESG正式提交。TLSP將會在許多地方酷似SSL。

前面已介紹Internet層安全機制的主要優點是它的透明性,即安全服務的提供不要求應用層做任何改變。這對傳輸層來說是做不到的。原則上,任何TCP/IP應用,只要應用傳輸層安全協議,比如說SSL或PCT,就必定要進行若干修改以增加相應的功能,並使用(稍微)不同的IPC介面。於是,傳輸層安全機制的主要缺點就是要對傳輸層IPC介面和應用程式兩端都進行修改。可是,比起Internet層和應用層的安全機制來,這裡的修改還是相當小的。另一個缺點是,基於UDP的通訊很難在傳輸層建立起安全機制來。同網路層安全機制相比,傳輸層安全機制的主要優點是它提供基於程式對程式的(而不是主機對主機的)安全服務。這一成就如果再加上應用級的安全服務,就可以再向前跨越一大步了。




三、應用層的安全性

必須牢記(且須仔細品味): 網路層(傳輸層)的安全協議允許為主機(程式)之間的資料通道增加安全屬性。本質上,這意味著真正的(或許再加上機密的)資料通道還是建立在主機(或程式)之間,但卻不可能區分在同一通道輸的一個具體檔案的安全性要求。比如說,如果一個主機與另一個主機之間建立起一條安全的IP通道,那麼所有在這條通道上傳輸的IP包就都要自動地被加密。同樣,如果一個程式和另一個程式之間透過傳輸層安全協議建立起了一條安全的資料通道,那麼兩個程式間傳輸的所有訊息就都要自動地被加密。

如果確實想要區分一個具體檔案的不同的安全性要求,那就必須藉助於應用層的安全性。提供應用層的安全服務實際上是最靈活的處理單個檔案安全性的手段。例如一個電子系統可能需要對要發出的信件的個別段落實施資料簽名。較低層的協議提供的安全功能一般不會知道任何要發出的信件的段落結構,從而不可能知道該對哪一部分進行簽名。只有應用層是唯一能夠提供這種安全服務的層次。

一般來說,在應用層提供安全服務有幾種可能的做法,第一個想到的做法大概就是對每個應用(及應用協議)分別進行修改。一些重要的TCP/IP應用已經這樣做了。在RFC 1421至1424中,IETF規定了私用強化郵件(PEM)來為基於SMTP的電子郵件系統提供安全服務。由於種種理由,Internet業界採納PEM的步子還是太慢,一個主要的原因是PEM依賴於一個既存的、完全可操作的PKI(公鑰基礎結構)。PEM PKI是按層次組織的,由下述三個層次構成:

頂層為Internet安全政策登記機構(IPRA)
次層為安全政策證書頒發機構(PCA)
底層為證書頒發機構(CA)
建立一個符合PEM規範的PKI也是一個政治性的過程,因為它需要多方在一個共同點上達成信任。不幸的是,歷史表明,政治性的過程總是需要時間的,作為一箇中間步驟,Phil Zimmermann開發了一個軟體包,叫做PGP(pretty Good Privacy)。PGP符合PEM的絕大多數規範,但不必要求PKI的存在。相反,它採用了分散式的信任模型,即由每個使用者自己決定該信任哪些其他使用者。因此,PGP不是去推廣一個全域性的PKI,而是讓使用者自己建立自己的信任之網。這就立刻產生一個問題,就是分散式的信任模型下,金鑰廢除了怎麼辦。

S-HTTP是上使用的超文字傳輸協議(HTTP)的安全增強版本,由企業整合技術公司設計。S-HTTP提供了檔案級的安全機制,因此每個檔案都可以被設成私人/簽字狀態。用作加密及簽名的演算法可以由參與通訊的收發雙方協商。S-HTTP提供了對多種單向雜湊(Hash)的支援,如: MD2,MD5及SHA; 對多種單鑰體制的支援,如:DES,三元DES,RC2,RC4,以及CDMF; 對數字簽名體制的支援,如: RSA和DSS。

目前還沒有Web安全性的公認標準。這樣的標準只能由WWW Consortium,IETF或其他有關的標準化組織來制定。而正式的標準化過程是漫長的,可能要拖上好幾年,直到所有的標準化組織都充分認識到Web安全的重要性。S-HTTP和SSL是從不同角度提供Web的安全性的。S-HTTP對單個檔案作"私人/簽字"之區分,而SSL則把參與通訊的相應程式之間的資料通道按"私用"和"已認證"進行監管。Terisa公司的SecureWeb工具軟體包可以用來為任何Web應用提供安全功能。該工具軟體包提供有 RSA資料安全公司的加密演算法庫,並提供對SSL和S-HTTP的全面支援。

另一個重要的應用是電子商務,尤其是信用卡交易。為使Internet上的信用卡交易安全起見,MasterCard公司(同IBM,Netscape,GTE和Cybercash一道) 制定了安全電子付費協議(SEPP),Visa國際公司和微軟(和其他一些公司一道)制定了安全交易技術(STT)協議。同時,MasterCard,Visa國際和微軟已經同意聯手推出Internet上的安全信用卡交易服務。他們釋出了相應的安全電子交易(SET)協議,其中規定了信用卡持卡人用其信用卡透過Internet進行付費的方法。這套機制的後臺有一個證書頒發的基礎結構,提供對X.509證書的支援。

上面提到的所有這些加安全功能的應用都會面臨一個主要的問題,就是每個這樣的應用都要單獨進行相應的修改。因此,如果能有一個統一的修改手段,那就好多了。通往這個方向的一個步驟就是赫爾辛基大學的Tatu Yloenen開發的安全(SSH)。SSH允許其使用者安全地登入到主機上,命令,傳輸檔案。它實現了一個金鑰交換協議,以及主機及客戶端認證協議。SSH有當今流行的多種Unix系統平臺上的免費版本,也有由Data Fellows公司包裝上市的商品化版本。

把SSH的思路再往前推進一步,就到了認證和金鑰分配系統。本質上,認證和金鑰分配系統提供的是一個應用程式設計介面(),它可以用來為任何網路應用程式提供安全服務,例如: 認證、資料機密性和完整性、訪問控制以及非否認服務。目前已經有一些實用的認證和金鑰分配系統,如: MIT的Kerberos(V4與V5),IBM的CryptoKnight和Netwrok Security Program,DEC的SPX,Karlsruhe大學的指數安全系統(TESS)等,都是得到廣泛採用的例項。甚至可以見到對有些認證和金鑰分配系統的修改和擴充。例如,SESAME和O DCE對KerberV5作了增加訪問控制服務的擴充,Yaksha對Kerberos V5作了增加非否認服務的擴充。

關於認證和金鑰分配系統的一個經常遇到的問題是關於它們在Internet上所受到的冷遇。一個原因是它仍要求對應用本身做出改動。考慮到這一點,對一個認證和金鑰分配系統來說,提供一個標準化的安全API就顯得格外重要。能做到這一點,開發人員就不必再為增加很少的安全功能而對整個應用程式大動手術了。因此,認證系統設計領域內最主要的進展之一就是制定了標準化的安全API,即通用安全服務API(GSS-API)。GSS-API(v1及v2)對於一個非安全專家的程式設計人員來說可能仍顯得過於技術化了些,但德州Austin大學的研究者們開發的安全網路程式設計(SNP),把介面做到了比GSS-API更高的層次,使同網路安全性有關的程式設計更加方便了。


在網路層有什麼不安全的地方?

NAI公司 供稿

不安全的地方

由於區域網中採用廣播方式,因此,若在某個廣播域中可以偵聽到所有的資訊包,就對可以對資訊包進行分析,那麼本廣播域的資訊傳遞都會暴露在駭客面前。

網路分段

網路分段是保證安全的一項重要措施,同時也是一項基本措施,其指導思想在於將使用者與網路資源相互隔離,從而達到限制使用者非法訪問的目的。

網路分段可分為物理分段和邏輯分段兩種方式:
物理分段通常是指將網路從物理層和資料鏈路層(ISO/OSI模型中的第一層和第二層)上分為若干網段,各網段相互之間無法進行直接通訊。目前,許多交換機都有一定的訪問控制能力,可實現對網路的物理分段。邏輯分段則是指將整個系統在網路層(ISO/OSI模型中的第三層)上進行分段。例如,對於TCP/IP網路,可把網路分成若干IP子網,各子網間必須透過路由器、路由交換機、閘道器或防火牆等裝置進行連線,利用這些中間裝置(含軟體、)的安全機制來控制各子網間的訪問。在實際應用過程中,通常採取物理分段與邏輯分段相結合的方法來實現對網路系統的安全性控制。


的實現


虛擬網技術主要基於近年發展的區域網交換技術(ATM和乙太網交換)。交換技術將傳統的基於廣播的區域網技術發展為面向連線的技術。因此,網管系統有能力限制區域網通訊的範圍而無需透過開銷很大的路由器。

乙太網從本質上基於廣播機制,但應用了交換器和VLAN技術後,實際上轉變為點到點通訊,除非設定了口,資訊交換也不會存在監聽和插入(改變)問題。

由以上執行機制帶來的網路安全的好處是顯而易見的:
資訊只到達應該到達的地點。因此、防止了大部分基於網路監聽的手段。
透過虛擬網設定的訪問控制,使在虛擬網外的網路節點不能直接訪問虛擬網內節點。

但是,虛擬網技術也帶來了新的安全問題:
執行虛擬網交換的裝置越來越複雜,從而成為被攻擊的。基於網路廣播原理的入侵技術在高速交換網路內需要特殊的設定。基於MAC的VLAN不能防止MAC欺騙攻擊。
採用基於MAC的VLAN劃分將面臨假冒MAC地址的攻擊。因此,VLAN的劃分最好基於交換機埠。但這要求整個網路桌面使用交換埠或每個交換埠所在的網段機器均屬於相同的VLAN。


VLAN之間的劃分原則

VLAN的劃分方式的目的是保證系統的安全性。因此,可以按照系統的安全性來劃分VLAN;可以將總部中的系統單獨劃作一個VLAN,如伺服器、電子等。也可以按照機構的設定來劃分VLAN,如將領導所在的網路單獨作為一個Leader VLAN(LVLAN), 其他司局(或下級機構)分別作為一個VLAN,並且控制LVLAN與其他VLAN之間的單向資訊流向,即允許LVLAN檢視其他VLAN的相關資訊,其他VLAN不能訪問LVLAN的資訊。VLAN之內的連線採用交換實現, VLAN與VLAN之間採用路由實現。由於路由控制的能力有限,不能實現LVLAN與其他VLAN之間的單向資訊流動,需要在LVLAN與其他VLAN之間設定一個Gauntlet防火牆作為安全隔離裝置,控制VLAN與VLAN之間的資訊交流。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-987486/,如需轉載,請註明出處,否則將追究法律責任。

相關文章