TCP安全問(wèn)題淺析
TCP/IP協(xié)議定義
協(xié)議是互相通信的計(jì)算機(jī)雙方必須共同遵從的一組約定。TCP/IP(傳輸控制協(xié)議/網(wǎng)際協(xié)議)就是這樣的約定,它規(guī)定了計(jì)算機(jī)之間互相通信的方法。TCP/IP是為了使接入因特網(wǎng)的異種網(wǎng)絡(luò)、不同設(shè)備之間能夠進(jìn)行正常的數(shù)據(jù)通訊,而預(yù)先制定的一簇大家共同遵守的格式和約定。該協(xié)議是美國(guó)國(guó)防部高級(jí)研究計(jì)劃署為簡(jiǎn)歷ARPANET開(kāi)發(fā)的,在這個(gè)協(xié)議集中,兩個(gè)最知名的協(xié)議就是傳輸控制協(xié)議(TCP, Transfer Contorl Protocol)和網(wǎng)際協(xié)議(IP,Internet Protocol),故而整個(gè)協(xié)議集被稱(chēng)為T(mén)CP/IP。之所以說(shuō)TCP/IP是一個(gè)協(xié)議簇,是因?yàn)門(mén)CP/IP包括了TCP、IP、UDP、ICMP、RIP、TELNET、FTP、SMTP、ARP等許多協(xié)議,對(duì)因特網(wǎng)中主機(jī)的尋址方式、主機(jī)的命名機(jī)制、信息的傳輸規(guī)則,以及各種各樣的服務(wù)功能均做了詳細(xì)約定,這些約定一起稱(chēng)為T(mén)CP/IP。
TCP/IP協(xié)議和開(kāi)放系統(tǒng)互連參考模型一樣,是一個(gè)分層結(jié)構(gòu)。協(xié)議的分層使得各層的任務(wù)和目的十分明確,這樣有利于軟件編寫(xiě)和通信控制。TCP/IP協(xié)議分為4層,由下至上分別是網(wǎng)路接口層、網(wǎng)際層、傳輸層和應(yīng)用層,如圖1-1所示
圖1-1 TCP/IP 協(xié)議層次圖
1.2 TCP/IP協(xié)議的主要特點(diǎn)
?。?)開(kāi)放的協(xié)議標(biāo)準(zhǔn),可以免費(fèi)使用,并且獨(dú)立于特定的計(jì)算機(jī)硬件與操作系統(tǒng);
?。?)獨(dú)立于特定的網(wǎng)絡(luò)硬件,可以運(yùn)行在局域網(wǎng)、廣域網(wǎng),更適用于互聯(lián)網(wǎng)中;
?。?)統(tǒng)一的網(wǎng)絡(luò)地址分配方案,使得整個(gè)TCP/IP設(shè)備在網(wǎng)中都具有惟一的地址;
?。?)標(biāo)準(zhǔn)化的高層協(xié)議,可以提供多種可靠的用戶(hù)服務(wù)。
1.3 TCP/IP協(xié)議的總體概況
目前在Internet上使用的是TCP/IP協(xié)議。TCP/IP協(xié)議叫做傳輸控制/網(wǎng)際協(xié)議,它是Internet國(guó)際互聯(lián)網(wǎng)絡(luò)的基礎(chǔ)。TCP/IP是網(wǎng)絡(luò)中使用的基本的通信協(xié)議。其中IP(Internet Protocol)全名為“網(wǎng)際互連協(xié)議”,它是為計(jì)算機(jī)網(wǎng)絡(luò)相互連接進(jìn)行通信而設(shè)計(jì)的協(xié)議。TCP(Transfer Control Protocol)是傳輸控制協(xié)議。TCP/IP協(xié)議是能夠使連接到網(wǎng)上的所有計(jì)算機(jī)網(wǎng)絡(luò)實(shí)現(xiàn)相互通信的一套規(guī)則,正是因?yàn)橛辛薚CP/IP協(xié)議,因特網(wǎng)才得以迅速發(fā)展成為世界上最大的、開(kāi)放的計(jì)算機(jī)通信網(wǎng)絡(luò)。
從表面名字上看TCP/IP包括兩個(gè)協(xié)議,傳輸控制協(xié)議(TCP)和互聯(lián)網(wǎng)際協(xié)議(IP),其實(shí)TCP/IP實(shí)際上是一組協(xié)議的集合,它包括了上百個(gè)各種功能的協(xié)議。如:遠(yuǎn)程登錄、文件傳輸和電子郵件等等,而TCP協(xié)議和IP協(xié)議是保證數(shù)據(jù)完整傳輸?shù)膬蓚€(gè)基本的重要協(xié)議。IP協(xié)議之所以能使各種網(wǎng)絡(luò)互聯(lián)起來(lái)是由于它把各種不同的“幀”統(tǒng)一轉(zhuǎn)換成“IP數(shù)據(jù)報(bào)”格式,這種轉(zhuǎn)換是因特網(wǎng)的一個(gè)最重要的特點(diǎn)。所以IP協(xié)議使各種計(jì)算機(jī)網(wǎng)絡(luò)都能在因特網(wǎng)上實(shí)現(xiàn)互通,即具有“開(kāi)放性”的特點(diǎn)。TCP/IP協(xié)議的基本傳輸單位是數(shù)據(jù)包(datagram)。TCP協(xié)議負(fù)責(zé)把數(shù)據(jù)分成若干個(gè)數(shù)據(jù)包,并給每個(gè)數(shù)據(jù)包加上包頭,包頭上有相應(yīng)的編號(hào),以保證在數(shù)據(jù)接收端能將數(shù)據(jù)還原為原來(lái)的格式,IP協(xié)議在每個(gè)包頭上還要加上接收端主機(jī)地址,這樣數(shù)據(jù)通過(guò)路由器中的MAC地址來(lái)確定數(shù)據(jù)的流向,如果傳輸過(guò)程中出現(xiàn)數(shù)據(jù)丟失,數(shù)據(jù)失真等情況,TCP協(xié)議會(huì)自動(dòng)要求數(shù)據(jù)重新傳輸,并重新組。。總之,IP協(xié)議保證數(shù)據(jù)的傳輸,而TCP協(xié)議保證數(shù)據(jù)傳輸?shù)馁|(zhì)量。TCP/IP協(xié)議數(shù)據(jù)的傳輸基于TCP/IP協(xié)議的4層結(jié)構(gòu):應(yīng)用層、傳輸層、網(wǎng)絡(luò)層、接口層。
各協(xié)議層存在的安全漏洞
2.1 鏈路層存在的安全漏洞
我們知道,在以太網(wǎng)中,信道是共享的,任何主機(jī)發(fā)送的每一個(gè)以太網(wǎng)幀都會(huì)到達(dá)別的與該主機(jī)處于同一網(wǎng)段的所有主機(jī)的以太網(wǎng)接口,一般地,CSMA/CD協(xié)議使以太網(wǎng)接口在檢測(cè)到數(shù)據(jù)幀不屬于自己時(shí),就把它忽略,不會(huì)把它發(fā)送到上層協(xié)議(如ARP、RARP層或IP層)。如果我們對(duì)其稍做設(shè)置或修改,就可以使一個(gè)以太網(wǎng)接口接收不屬于它的數(shù)據(jù)幀。例如有的實(shí)現(xiàn)可以使用雜錯(cuò)接點(diǎn),即能接收所有數(shù)據(jù)幀的機(jī)器節(jié)點(diǎn)。解決該漏洞的對(duì)策是:網(wǎng)絡(luò)分段、利用交換器,動(dòng)態(tài)集線(xiàn)器和橋等設(shè)備對(duì)數(shù)據(jù)流進(jìn)行限制、加密(采用一次性口令技術(shù))和禁用雜錯(cuò)接點(diǎn)。
2.2 網(wǎng)絡(luò)層漏洞
幾乎所有的基于TCP/IP的機(jī)器都會(huì)對(duì)ICMP echo請(qǐng)求進(jìn)行響應(yīng)。所以如果一個(gè)敵意主機(jī)同時(shí)運(yùn)行很多個(gè)ping命令向一個(gè)服務(wù)器發(fā)送超過(guò)其處理能力的ICMP echo請(qǐng)求時(shí),就可以淹沒(méi)該服務(wù)器使其拒絕其他的服務(wù)。另外,ping命令可以在得到允許的網(wǎng)絡(luò)中建立秘密通道從而可以在被攻擊系統(tǒng)中開(kāi)后門(mén)進(jìn)行方便的攻擊,如收集目標(biāo)上的信息并進(jìn)行秘密通信等。解決該漏洞的措施是拒絕網(wǎng)絡(luò)上的所有ICMP echo響應(yīng)。
2.3 IP漏洞
IP包一旦從網(wǎng)絡(luò)中發(fā)送出去,源IP地址就幾乎不用,僅在中間路由器因某種原因丟棄它或到達(dá)目標(biāo)端后,才被使用。這使得一個(gè)主機(jī)可以使用別的主機(jī)的IP地址發(fā)送IP包,只要它能把這類(lèi)IP包放到網(wǎng)絡(luò)上就可以。因而如果攻擊者把自己的主機(jī)偽裝成被目標(biāo)主機(jī)信任的友好主機(jī),即把發(fā)送的IP包中的源IP地址改成被信任的友好主機(jī)的IP地址,利用主機(jī)間的信任關(guān)系(Unix網(wǎng)絡(luò)軟件的開(kāi)發(fā)者發(fā)明的術(shù)語(yǔ))和這種信任關(guān)系的實(shí)際認(rèn)證中存在的脆弱性(只通過(guò)IP確認(rèn)),就可以對(duì)信任主機(jī)進(jìn)行攻擊。注意,其中所說(shuō)的信任關(guān)系是指一個(gè)被授權(quán)的主機(jī)可以對(duì)信任主機(jī)進(jìn)行方便的訪(fǎng)問(wèn)。所有的r*命令都采用信任主機(jī)方案,所以一個(gè)攻擊主機(jī)把自己的IP改為被信任主機(jī)的IP,就可以連接到信任主機(jī)并能利用r*命令開(kāi)后門(mén)達(dá)到攻擊的目的。解決這個(gè)問(wèn)題的一個(gè)辦法是,讓路由器拒絕接收來(lái)自網(wǎng)絡(luò)外部的IP地址與本地某一主機(jī)的IP地址相同的IP包的進(jìn)入。
2.4 ARP欺騙
ARP協(xié)議在對(duì)IP地址進(jìn)行解析時(shí),利用ARP緩存(也叫ARP表)來(lái)做。ARP緩存的每一條目保存有IP地址到物理地址的映射。如果在ARP表中沒(méi)有這樣的對(duì)應(yīng)條目,ARP協(xié)議會(huì)廣播ARP請(qǐng)求,獲得對(duì)應(yīng)于那個(gè)IP地址的物理地址,并把該對(duì)應(yīng)關(guān)系加入到ARP表中。ARP表中的每一個(gè)條目都有一個(gè)計(jì)時(shí)器,如果計(jì)時(shí)器過(guò)期,該條目就無(wú)效,因而被從緩存中刪除。顯然,如果攻擊者暫時(shí)使用不工作的主機(jī)的IP地址,就可以偽造IP-物理地址對(duì)應(yīng)關(guān)系對(duì),把自己偽裝成象那個(gè)暫時(shí)不使用的主機(jī)一樣。克服此問(wèn)題的方法是,讓硬件地址常駐內(nèi)存,并可以用ARP命令手工加入(特權(quán)用戶(hù)才可以那樣做);也可以通過(guò)向RARP服務(wù)器詢(xún)問(wèn)來(lái)檢查客戶(hù)的ARP欺騙。因?yàn)镽ARP服務(wù)器保留著網(wǎng)絡(luò)中硬件地址和 IP的相關(guān)信息。
2.5 路由欺騙
在路由協(xié)議中,主機(jī)利用重定向報(bào)文來(lái)改變或優(yōu)化路由。如果一個(gè)路由器發(fā)送非法的重定向報(bào)文,就可以偽造路由表,錯(cuò)誤引導(dǎo)非本地的數(shù)據(jù)報(bào)。另外,各個(gè)路由器都會(huì)定期向其相鄰的路由器廣播路由信息,如果使用RIP特權(quán)的主機(jī)的520端口廣播非法路由信息,也可以達(dá)到路由欺騙的目的。解決這些問(wèn)題的辦法有,通過(guò)設(shè)置主機(jī)忽略重定向信息可以防止路由欺騙;禁止路由器被動(dòng)使用RIP和限制被動(dòng)使用RIP的范圍。
2.6 DNS欺騙
網(wǎng)絡(luò)上的所有主機(jī)都信任DNS服務(wù)器,如果DNS服務(wù)器中的數(shù)據(jù)被攻擊者破壞,就可以進(jìn)行DNS欺騙。
2.7 攔截TCP連接
攻擊者可以使TCP連接的兩端進(jìn)入不同步狀態(tài),入侵者主機(jī)向兩端發(fā)送偽造的數(shù)據(jù)包。冒充被信任主機(jī)建立TCP連接,用SYN淹沒(méi)被信任的主機(jī),并猜測(cè)3步握手中的響應(yīng)(建立多個(gè)連接到信任主機(jī)的TCP連接,獲得初始序列號(hào)ISN(Initial Serial Number)和RTT,然后猜測(cè)響應(yīng)的ISN,因?yàn)樾蛄刑?hào)每隔半秒加64000,每建立一個(gè)連接加64000)。預(yù)防方法:使所有的r*命令失效,讓路由器拒絕來(lái)自外面的與本地主機(jī)有相同的IP地址的包。RARP查詢(xún)可用來(lái)發(fā)現(xiàn)與目標(biāo)服務(wù)器處在同一物理網(wǎng)絡(luò)的主機(jī)的攻擊。另外ISN攻擊可通過(guò)讓每一個(gè)連接的ISN隨機(jī)分配配合每隔半秒加64000來(lái)防止。
2.8 使用TCP/SYN報(bào)文段淹沒(méi)服務(wù)器
利用TCP建立連接的3步驟的缺點(diǎn)和服務(wù)器端口允許的連接數(shù)量的限制,竊取不可達(dá)IP地址作為源IP地址,使得服務(wù)器端得不到ACK而使連接處于半開(kāi)狀態(tài),從而阻止服務(wù)器響應(yīng)響應(yīng)別的連接請(qǐng)求。盡管半開(kāi)的連接會(huì)被過(guò)期而關(guān)閉的,但只要攻擊系統(tǒng)發(fā)送的spoofed SYN請(qǐng)求的速度比過(guò)期的快就可以達(dá)到攻擊的目的。這種攻擊的方法一直是一種重要的攻擊ISP(Internet Service Provider)的方法,這種攻擊并不會(huì)損害服務(wù),而是使服務(wù)能力削弱。解決這種攻擊的辦法是,給Unix內(nèi)核加一個(gè)補(bǔ)丁程序或使用一些工具對(duì)內(nèi)核進(jìn)行配置。一般的做法是,使允許的半開(kāi)連接的數(shù)量增加,允許連接處于半開(kāi)狀態(tài)的時(shí)間縮短。但這些并不能從根本上解決這些問(wèn)題。實(shí)際上在系統(tǒng)的內(nèi)存中有一個(gè)專(zhuān)門(mén)的隊(duì)列包含所有的半開(kāi)連接,這個(gè)隊(duì)列的大小是有限的,因而只要有意使服務(wù)器建立過(guò)多的半開(kāi)連接就可以使服務(wù)器的這個(gè)隊(duì)列溢出,從而無(wú)法響應(yīng)其他客戶(hù)的連接請(qǐng)求。
關(guān)于TCP/IP協(xié)議族存在的脆弱性剖析
3.1 TCP/IP協(xié)議族存在脆弱性
IP層的主要曲線(xiàn)是缺乏有效的安全認(rèn)證和保密機(jī)制,其中最主要的因素就是IP地址問(wèn)題。TCP/IP協(xié)議用IP地址來(lái)作為網(wǎng)絡(luò)節(jié)點(diǎn)的惟一標(biāo)識(shí),許多 TCP/IP服務(wù),包括Berkeley中的R命令、NFS、X Window等都是基于IP地址對(duì)用戶(hù)進(jìn)行認(rèn)證和授權(quán)。當(dāng)前TCP/IP網(wǎng)絡(luò)的安全機(jī)制主要是基于IP地址的包過(guò)濾(Packet Filtering)和認(rèn)證(Authentication)技術(shù),它的有效性體現(xiàn)在可以根據(jù)IP包中的源IP地址判斷數(shù)據(jù)的真實(shí)性和安全性。然而IP地址存在許多問(wèn)題,協(xié)議的最大缺點(diǎn)就是缺乏對(duì)IP地址的保護(hù),缺乏對(duì)IP包中源IP地址真實(shí)性的認(rèn)證機(jī)制與保密措施。這也就是引起整個(gè)TCP/IP協(xié)議不安全的根本所在。
由于UDP是基于IP協(xié)議之上的,TCP分段和UDP協(xié)議數(shù)據(jù)包是封裝在IP包中在網(wǎng)絡(luò)上傳輸?shù)?,因此同樣面臨IP層所遇到的安全威脅。現(xiàn)在人們一直在想辦法解決,卻仍然無(wú)法避免的就是根據(jù)TCP連接建立時(shí)“三次握手”機(jī)制的攻擊。
3.2 應(yīng)用服務(wù)不容樂(lè)觀(guān)
3.2.1 文件傳輸協(xié)議
FTP經(jīng)久不衰的原因在于它可以在互聯(lián)網(wǎng)上進(jìn)行與平臺(tái)無(wú)關(guān)的數(shù)據(jù)傳輸,它基于一個(gè)客戶(hù)機(jī)/服務(wù)器架構(gòu)。FTP 將通過(guò)兩個(gè)信道(端口)傳輸,一個(gè)傳輸數(shù)據(jù)(TCP 端口 20),另一個(gè)傳輸控制信息(TCP 端口 21)。在控制信道之上,雙方(客戶(hù)機(jī)和服務(wù)器)交換用于發(fā)起數(shù)據(jù)傳輸?shù)拿睢R粋€(gè) FTP 連接包含4個(gè)步驟:用戶(hù)鑒權(quán)→建立控制信道→建立數(shù)據(jù)信道→關(guān)閉連接。FTP 的連接控制使用 TCP (Transmission Control Protocol, 傳輸控制協(xié)議),它保障了數(shù)據(jù)的可靠傳輸。因此,F(xiàn)TP 在數(shù)據(jù)傳輸中不需要關(guān)心分組丟失和數(shù)據(jù)錯(cuò)誤檢測(cè)。
匿名FTP作為互聯(lián)網(wǎng)上廣泛應(yīng)用的服務(wù),安全等級(jí)的低下受到了黑客的頻繁光顧。匿名FTP 是真的匿名,并沒(méi)有記錄誰(shuí)請(qǐng)求了什么信息,誰(shuí)下載了什么文件,上傳了什么東西(有可能是木馬)。FTP存在著致命的安全缺陷,F(xiàn)TP使用標(biāo)準(zhǔn)的用戶(hù)名和口令作為身份驗(yàn)證,缺乏有效的訪(fǎng)問(wèn)權(quán)限的控制機(jī)制,而其口令和密碼的傳輸也都是明文的方式。
3.2.2 Web服務(wù)
Web服務(wù)器位于宿主基礎(chǔ)結(jié)構(gòu)的前端,它與Internet直接相連,負(fù)責(zé)接收來(lái)自客戶(hù)端的請(qǐng)求,創(chuàng)建動(dòng)態(tài)Web頁(yè)并響應(yīng)請(qǐng)求數(shù)據(jù)。最初WWW服務(wù)只提供靜態(tài)的HTML頁(yè)面,為改變?nèi)藗儗?duì)網(wǎng)絡(luò)互動(dòng)請(qǐng)求的愿望,開(kāi)始引入了CGI程序,CGI程序讓主頁(yè)活動(dòng)起來(lái)。CGI程序可以接收用戶(hù)的輸入信息,一般用戶(hù)是通過(guò)表格把輸入信息傳給CGI程序的,然后CGI程序可以根據(jù)用戶(hù)的要求進(jìn)行一些處理,一般情況下會(huì)生成一個(gè)HTML文件,并傳回給用戶(hù)。很多CGI 程序都存在安全漏洞,很容易被黑客利用做一些非法的事情?,F(xiàn)在很多人在編寫(xiě)CGI程序時(shí),可能對(duì)CGI軟件包中的安全漏洞并不了解,而且大多數(shù)情況下不會(huì)重新編寫(xiě)程序的所有部分,只是對(duì)其加以適當(dāng)?shù)男薷模@樣很多CGI程序就不可避免的具有相同的安全漏洞。很多 SQL Server 開(kāi)發(fā)人員并沒(méi)有在代碼編寫(xiě)開(kāi)始的時(shí)候就從安全防護(hù)基礎(chǔ)開(kāi)始,這樣就無(wú)法確保您開(kāi)發(fā)的代碼的安全性,其結(jié)果就造成了無(wú)法將應(yīng)用程序的運(yùn)行控制在所需的最低權(quán)限之內(nèi)。
3.3 提高網(wǎng)絡(luò)可信度
前面的IPv4存在的弊端,很多安全防范技術(shù)被忽略了,它不可避免地被新一代技術(shù)IPv6取代。IPsec安全協(xié)議就是事后 發(fā)展的一種協(xié)議(如圖3-1),而NAT(網(wǎng)絡(luò)地址轉(zhuǎn)換,Network Address Translation)解決了IP地址短缺的問(wèn)題,卻增加了安全風(fēng)險(xiǎn),使真正的端到端的安全應(yīng)用難以實(shí)現(xiàn)。端到端安全性的兩個(gè)基本組件——鑒權(quán)和加密都是IPv6協(xié)議的集成組件;而在IPv4中,它們只是附加組件,因此,采用IPv6安全性會(huì)更加簡(jiǎn)便、一致。
在現(xiàn)在的網(wǎng)絡(luò)環(huán)境中,尤其是園區(qū)網(wǎng)當(dāng)中,由于不存在NAT地址轉(zhuǎn)換的問(wèn)題,所以IPSec具備允許部署可信計(jì)算基礎(chǔ)架構(gòu)的基本特征。IPSec數(shù)據(jù)包驗(yàn)證能夠確保整個(gè)IP報(bào)頭、下一層協(xié)議(例如TCP、UPD或ICMP)報(bào)頭以及數(shù)據(jù)包有效負(fù)載的數(shù)據(jù)完整性。 華夏網(wǎng)管ofAdmin.Com
另外,針對(duì)數(shù)據(jù)包的單向Hash算法用以提供校驗(yàn)和。通信發(fā)起方計(jì)算校驗(yàn)和并在發(fā)送之前將其附加到數(shù)據(jù)包中;響應(yīng)方則在收到數(shù)據(jù)包后為其計(jì)算校驗(yàn)和。如果響應(yīng)方所計(jì)算出的校驗(yàn)和與數(shù)據(jù)包中附帶的校驗(yàn)和完全匹配,則證明數(shù)據(jù)包在傳輸過(guò)程中未被修改。校驗(yàn)和的單向計(jì)算特性意味著其取值無(wú)法在傳輸過(guò)程中進(jìn)行修改,這也就保證了端到端的數(shù)據(jù)傳輸過(guò)程的可信程度。
TCP/IP狀態(tài)轉(zhuǎn)移
4.1 TCP狀態(tài)轉(zhuǎn)移圖和定時(shí)器
應(yīng)于連接建立或終止、流量控制和數(shù)據(jù)傳輸。幾類(lèi)主要的定時(shí)器及其功能如下TCP狀態(tài)轉(zhuǎn)移圖控制了一次連接的初始化、建立和終止,該圖由定義的狀態(tài)以及這些狀態(tài)之間的轉(zhuǎn)移弧構(gòu)成。TCP狀態(tài)轉(zhuǎn)移圖與定時(shí)器密切相關(guān),不同的定時(shí)器:
?、龠B接定時(shí)器:在連接建立階段,當(dāng)發(fā)送了SYN包后,就啟動(dòng)連接定時(shí)器。如果在75秒內(nèi)沒(méi)有收到應(yīng)答,則放棄連接建立。
?、贔IN-WAIT-2定時(shí)器:當(dāng)連接從FIN-WAIT-1狀態(tài)轉(zhuǎn)移到FIN-WAIT-2狀態(tài)時(shí),將一個(gè) FIN-WAIT-2定時(shí)器設(shè)置為10分鐘。如果在規(guī)定時(shí)間內(nèi)該連接沒(méi)有收到一個(gè)帶有置位FIN的TCP包,則定時(shí)器超時(shí),再定時(shí)為75秒。如果在該時(shí)間段內(nèi)仍無(wú)FIN包到達(dá),則放棄該連接。
③TIME-WAIT定時(shí)器:當(dāng)連接進(jìn)入TIME-WAIT狀態(tài)時(shí),該定時(shí)器被激活。當(dāng)定時(shí)器超時(shí)時(shí),與該連接相關(guān)的內(nèi)核數(shù)據(jù)塊被刪除,連接終止。
?、芫S持連接定時(shí)器:其作用是預(yù)測(cè)性地檢測(cè)連接的另一端是否仍為活動(dòng)狀態(tài)。如果設(shè)置了SO-KEEPALIVE套接字選擇項(xiàng),則TCP機(jī)狀態(tài)是ESTABLISHED或CLOSE-WAIT。
4.2 網(wǎng)絡(luò)入侵方式
4.2.1 偽造IP地址
入侵者使用假I(mǎi)P地址發(fā)送包,利用基于IP地址證實(shí)的應(yīng)用程序。其結(jié)果是未授權(quán)的遠(yuǎn)端用戶(hù)進(jìn)入帶有防火墻的主機(jī)系統(tǒng)。
假設(shè)有兩臺(tái)主機(jī)A、B和入侵者控制的主機(jī)X。假設(shè)B授予A某些特權(quán),使得A能夠獲得B所執(zhí)行的一些操作。X的目標(biāo)就是得到與B相同的權(quán)利。為了實(shí)現(xiàn)該目標(biāo),X必須執(zhí)行兩步操作:首先,與B建立一個(gè)虛假連接;然后,阻止A向B報(bào)告網(wǎng)絡(luò)證實(shí)系統(tǒng)的問(wèn)題。主機(jī)X必須假造A的IP地址,從而使B相信從X發(fā)來(lái)的包的確是從A發(fā)來(lái)的。
我們同時(shí)假設(shè)主機(jī)A和B之間的通信遵守TCP/IP的三次握手機(jī)制。握手方法是:
A→:SYN(序列號(hào)=M)
B→A:SYN(序列號(hào)=N),ACK(應(yīng)答序號(hào)=M+1)
A→B:ACK(應(yīng)答序號(hào)=N+1)
主機(jī)X偽造IP地址步驟如下:首先,X冒充A,向主機(jī)B發(fā)送一個(gè)帶有隨機(jī)序列號(hào)的SYN包。主機(jī)B響應(yīng),向主機(jī)A發(fā)送一個(gè)帶有應(yīng)答號(hào)的SYN+ACK包、該應(yīng)答號(hào)等于原序列號(hào)加1。同時(shí),主機(jī)B產(chǎn)生自己發(fā)送包序列號(hào),并將其與應(yīng)答號(hào)一起發(fā)送。為了完成三次握手,主機(jī)X需要向主機(jī)B回送一個(gè)應(yīng)答包,其應(yīng)答號(hào)等于主機(jī)B向主機(jī)A發(fā)送的包序列號(hào)加1。假設(shè)主機(jī)X與A和B不同在一個(gè)子網(wǎng)內(nèi),則不能檢測(cè)到B的包,主機(jī)X只有算出B的序列號(hào),才能創(chuàng)建TCP連接。其過(guò)程描述如下:
X→B:SYN(序列號(hào)=M),SRC=A
B→A:SYN(序列號(hào)=N),ACK(應(yīng)答號(hào)=M+1)
X→B:ACK(應(yīng)答號(hào)=N+1),SRC=A
同時(shí),主機(jī)X應(yīng)該阻止主機(jī)A響應(yīng)主機(jī)B的包。為此,X可以等到主機(jī)A因某種原因終止運(yùn)行,或者阻塞主機(jī)A的操作系統(tǒng)協(xié)議部分,使它不能響應(yīng)主機(jī)B。 一旦主機(jī)X完成了以上操作,它就可以向主機(jī)B發(fā)送命令。主機(jī)B將執(zhí)行這些命令,認(rèn)為他們是由合法主機(jī)A發(fā)來(lái)的。
4.2.2 TCP狀態(tài)轉(zhuǎn)移的問(wèn)題
上述的入侵過(guò)程,主機(jī)X是如何阻止主機(jī)A向主機(jī)B發(fā)送響應(yīng)在的,主機(jī)調(diào)通過(guò)發(fā)送一系列的SYN包,但不讓A向調(diào)發(fā)送SYN-ACK包而中止主機(jī)A的登錄端口。如前所述,TCP維持一個(gè)連接建立定時(shí)器。如果在規(guī)定時(shí)間內(nèi)(通常為75秒)不能建立連接,則TCP將重置連接。在前面的例子中,服務(wù)器端口是無(wú)法在75秒內(nèi)作出響應(yīng)的。
下面我們來(lái)討論一下主機(jī)X和主機(jī)A之間相互發(fā)送的包序列。X向A發(fā)送一個(gè)包,其SYN位和FIN位置位,A向X發(fā)送ACK包作為響應(yīng): X→A:SYN FIN(系列號(hào)=M)A→X:ACK(應(yīng)答序號(hào)=M+1)從上面的狀態(tài)轉(zhuǎn)移可以看出,A開(kāi)始處于監(jiān)聽(tīng)(LISTEN)狀態(tài)。當(dāng)它收到來(lái)自X的包后,就開(kāi)始處理這個(gè)包。值得注意的是,在TCP協(xié)議中,關(guān)于如何處理SYN和FIN同時(shí)置位的包并未作出明確的規(guī)定。我們假設(shè)它首先處理SYN標(biāo)志位,轉(zhuǎn)移到SYN-RCVD狀態(tài)。然后再處理FIN標(biāo)志位,轉(zhuǎn)移到CLOSE-WAIT狀態(tài)。如果前一個(gè)狀態(tài)是ESTABLISHED,那么轉(zhuǎn)移到CLOSE-WAIT狀態(tài)就是正常轉(zhuǎn)移。但是,TCP協(xié)議中并未對(duì)從SYN-RCVD狀態(tài)到CLOSE-WAIT狀態(tài)的轉(zhuǎn)移作出定義。但在幾種TCP應(yīng)用程序中都有這樣的轉(zhuǎn)移,例如開(kāi)放系統(tǒng)SUN OS4.2, SUR4和ULTRX4.3
因此,在這些TCP應(yīng)用程序中存在一條TCP協(xié)議中未作定義的從狀態(tài)SYN-RCVD到狀態(tài)CLOSE-WAIT的轉(zhuǎn)移弧,在上述入侵例子中,由于三次握手沒(méi)能徹底完成,因此并未真正建立TCP連接,相應(yīng)的網(wǎng)絡(luò)應(yīng)用程序并未從核心內(nèi)獲得連接。但是,主機(jī)A的TCP機(jī)處CLOSE-WAIT狀態(tài),因此它可以向X發(fā)送一個(gè)FIN包終止連接。這個(gè)半開(kāi)放連接保留在套接字偵聽(tīng)隊(duì)列中,而且應(yīng)用進(jìn)程不發(fā)送任何幫助TCP執(zhí)行狀態(tài)轉(zhuǎn)移的消息。因此,主機(jī)A的TCP機(jī)被鎖在了CL0SE-WAIT狀態(tài)。如果維持活動(dòng)定時(shí)器特征被使用,通常2小時(shí)后TCP將會(huì)重置連接并轉(zhuǎn)移到CLOSED狀態(tài)。當(dāng)TCP機(jī)收到來(lái)自對(duì)等主機(jī)的RST時(shí),就從TABLISHED,F(xiàn)INWAIT-1和FIN-WAIT-2狀態(tài)轉(zhuǎn)移到CLOSED狀態(tài)。這些轉(zhuǎn)移是很重要的,因?yàn)樗鼈冎刂肨CP機(jī)且中斷網(wǎng)絡(luò)連接。但是,由于到達(dá)的數(shù)據(jù)段只根據(jù)源IP地址和當(dāng)前隊(duì)列窗口號(hào)來(lái)證實(shí)。因此入侵者可以假裝成已建立了合法連接的一個(gè)主機(jī),然后向另一臺(tái)主機(jī)發(fā)送一個(gè)帶有適當(dāng)序列號(hào)的RST段,這樣就可以終止連接了!
從上面的分析我們可以看到幾種TCP應(yīng)用程序中都存在外部狀態(tài)轉(zhuǎn)移。這會(huì)給系統(tǒng)帶來(lái)嚴(yán)重的安全性問(wèn)題。
4.2.3 定時(shí)器問(wèn)題
正如前文所述,一旦進(jìn)入連接建立過(guò)程,則啟動(dòng)連接定時(shí)器。如果在規(guī)定時(shí)間內(nèi)不能建立連接,則TCP機(jī)回到CLOSED狀態(tài)。
我們來(lái)分析一下主機(jī)A和主機(jī)X的例子。主機(jī)A向主機(jī)X發(fā)送一個(gè)SYN包,期待著回應(yīng)一個(gè)SYN-ACK包。假設(shè)幾乎同時(shí),主機(jī)X想與主機(jī)A建立連接,向A發(fā)送一個(gè)SYN包。A和X在收到對(duì)方的SYN包后都向?qū)Ψ桨l(fā)送一個(gè)SYN-ACK包。當(dāng)都收到對(duì)方的SYN-ACK包后,就可認(rèn)為連接已建立。在本文中,假設(shè)當(dāng)主機(jī)收到對(duì)方的SYN包后,就關(guān)閉連接建立定時(shí)器。
X→A:SYN(序列號(hào)=M)
A→X:SYN(序列號(hào)=N)
X→A:SYN(序列號(hào)=M),ACK(應(yīng)答號(hào)=N+1)
A→X:SYN(序列號(hào)=N),ACK(應(yīng)答號(hào)=M+1)
?、僦鳈C(jī)X向主機(jī)A發(fā)送一個(gè)FTP請(qǐng)求。在X和A之間建立起一個(gè)TCP連接來(lái)傳送控制信號(hào)。主機(jī)A向X發(fā)送一個(gè)SYN包以啟動(dòng)一個(gè)TCP連接用來(lái)傳輸數(shù)據(jù),其狀態(tài)轉(zhuǎn)移到SYN-SENT狀態(tài)。
②當(dāng)X收到來(lái)自A的SYN包時(shí),它回送一個(gè)SYN包作為響應(yīng)。
?、壑鳈C(jī)X收到來(lái)自A的SYN-ACK包,但不回送任何包。
?、苤鳈C(jī)A期待著接收來(lái)自X的SYN-ACK。由于X不回送任何包,因此A被鎖在SYN-RCVD狀態(tài)。這樣,X就成功地封鎖了A的一個(gè)端口。
4.3 利用網(wǎng)絡(luò)監(jiān)控設(shè)備觀(guān)測(cè)網(wǎng)絡(luò)入侵
我們?cè)诰钟蚓W(wǎng)上安裝一個(gè)網(wǎng)絡(luò)監(jiān)控設(shè)備觀(guān)測(cè)通過(guò)網(wǎng)絡(luò)的包,從而判斷是否發(fā)生了網(wǎng)絡(luò)入侵。下面我們將討論在幾種入侵過(guò)程中網(wǎng)絡(luò)監(jiān)控設(shè)備可觀(guān)測(cè)到的序列包。
4.3.1 偽造IP地址
最初,網(wǎng)絡(luò)監(jiān)控設(shè)備會(huì)監(jiān)測(cè)到大量的TCP SYN包從某個(gè)主機(jī)發(fā)往A的登錄端口。主機(jī)A會(huì)回送相應(yīng)的SYN-ACK包。SYN包的目的是創(chuàng)建大量的與主機(jī)A的半開(kāi)放的TCP連接,從而填滿(mǎn)了主機(jī)A的登錄端口連接隊(duì)列。
大量的TCP SYN包將從主機(jī)X經(jīng)過(guò)網(wǎng)絡(luò)發(fā)往主機(jī)B,相應(yīng)地有SYN-ACK包從主機(jī)B發(fā)往主機(jī)X。然后主機(jī)X將用RST包作應(yīng)答。這個(gè)SYN/SYN-ACK/RST包序列使得入侵者可以知道主機(jī)B的TCP序列號(hào)發(fā)生器的動(dòng)作。
主機(jī)A向主機(jī)B發(fā)送一個(gè)SYN包。實(shí)際上,這是主機(jī)X發(fā)送的一個(gè)“偽造”包。收到這個(gè)包之后,主機(jī)B將向主機(jī)A發(fā)送相應(yīng)的SYN-ACK包。主機(jī)A向主機(jī)B發(fā)送ACK包。按照上述步驟,入侵主機(jī)能夠與主機(jī)B建立單向TCP連接。
4.3.2 虛假狀態(tài)轉(zhuǎn)移
當(dāng)入侵者試圖利用從SYN-RCVD到CLOSE-WAIT的狀態(tài)轉(zhuǎn)移長(zhǎng)時(shí)間阻塞某服務(wù)器的一個(gè)網(wǎng)絡(luò)端口時(shí),可以觀(guān)察到如下序列包:
①?gòu)闹鳈C(jī)X到主機(jī)B發(fā)送一個(gè)帶有SYN和FIN標(biāo)志位置位的TCP包。
主機(jī)B首先處理SYN標(biāo)志,生成一個(gè)帶有相應(yīng)ACK標(biāo)志位置位的包,并使?fàn)顟B(tài)轉(zhuǎn)移到SYN-RCVD,然后處理FIN標(biāo)志,使?fàn)顟B(tài)轉(zhuǎn)移到CLOSE-WAIT,并向X回送ACK包。
?、谥鳈C(jī)X不向主機(jī)B發(fā)送其它任何包。主機(jī)的TCP機(jī)將固定在CLOSE-WAIT狀態(tài)。直到維持連接定時(shí)器將其重置為CLOSED狀態(tài)。
因此,如果網(wǎng)絡(luò)監(jiān)控設(shè)備發(fā)現(xiàn)一串SYN-FIN/ACK包,可推斷入侵者正在阻塞主機(jī)B的某個(gè)端口。
4.3.3 定時(shí)器問(wèn)題
如果一入侵者企圖在不建立連接的情況下使連接建立定時(shí)器無(wú)效,我們可以觀(guān)察到以下序列包:
①主機(jī)X從主機(jī)B收到一個(gè)TCP SYN包。
②主機(jī)X向主機(jī)B回送一個(gè)SYN包。
主機(jī)X不向主機(jī)B發(fā)送任何ACK包。因此,B被阻塞在SYN-RCVD狀態(tài),無(wú)法響應(yīng)來(lái)自其它客戶(hù)機(jī)的連接請(qǐng)求。
TCP/IP協(xié)議的安全隱患
造成操作系統(tǒng)漏洞的一個(gè)重要原因,就是協(xié)議本身的缺陷給系統(tǒng)帶來(lái)的攻擊點(diǎn)。網(wǎng)絡(luò)協(xié)議是計(jì)算機(jī)之間為了互聯(lián)共同遵守的規(guī)則。目前的互聯(lián)網(wǎng)絡(luò)所采用的主流協(xié)議TCP/IP,由于在其設(shè)計(jì)初期人們過(guò)分強(qiáng)調(diào)其開(kāi)發(fā)性和便利性,沒(méi)有仔細(xì)考慮其安全性,因此很多的網(wǎng)絡(luò)協(xié)議都存在嚴(yán)重的安全漏洞,給Internet留下了許多安全隱患。另外,有些網(wǎng)絡(luò)協(xié)議缺陷造成的安全漏洞還會(huì)被黑客直接用來(lái)攻擊受害者系統(tǒng)。本文就TCP/IP協(xié)議自身所存在的安全問(wèn)題和協(xié)議守護(hù)進(jìn)程進(jìn)行了詳細(xì)討論,指出針對(duì)這些安全隱患的攻擊。
1 TCP協(xié)議的安全問(wèn)題
TCP使用三次握手機(jī)制來(lái)建立一條連接,握手的第一個(gè)報(bào)文為SYN包;第二個(gè)報(bào)文為SYN/ACK包,表明它應(yīng)答第一個(gè)SYN包同時(shí)繼續(xù)握手的過(guò)程;第三個(gè)報(bào)文僅僅是一個(gè)應(yīng)答,表示為ACK包。若A放為連接方,B為響應(yīng)方,其間可能的威脅有:
1. 攻擊者監(jiān)聽(tīng)B方發(fā)出的SYN/ACK報(bào)文。
2. 攻擊者向B方發(fā)送RST包,接著發(fā)送SYN包,假冒A方發(fā)起新的連接。
3. B方響應(yīng)新連接,并發(fā)送連接響應(yīng)報(bào)文SYN/ACK。
4. 攻擊者再假冒A方對(duì)B方發(fā)送ACK包。
這樣攻擊者便達(dá)到了破壞連接的作用,若攻擊者再趁機(jī)插入有害數(shù)據(jù)包,則后果更嚴(yán)重。
TCP協(xié)議把通過(guò)連接而傳輸?shù)臄?shù)據(jù)看成是字節(jié)流,用一個(gè)32位整數(shù)對(duì)傳送的字節(jié)編號(hào)。初始序列號(hào)(ISN)在TCP握手時(shí)產(chǎn)生,產(chǎn)生機(jī)制與協(xié)議實(shí)現(xiàn)有關(guān)。攻擊者只要向目標(biāo)主機(jī)發(fā)送一個(gè)連接請(qǐng)求,即可獲得上次連接的ISN,再通過(guò)多次測(cè)量來(lái)回傳輸路徑,得到進(jìn)攻主機(jī)到目標(biāo)主機(jī)之間數(shù)據(jù)包傳送的來(lái)回時(shí)間RTT。已知上次連接的ISN和RTT,很容易就能預(yù)測(cè)下一次連接的ISN。若攻擊者假冒信任主機(jī)向目標(biāo)主機(jī)發(fā)出TCP連接,并預(yù)測(cè)到目標(biāo)主機(jī)的TCP序列號(hào),攻擊者就能偽造有害數(shù)據(jù)包,使之被目標(biāo)主機(jī)接受。
IP協(xié)議的安全問(wèn)題
IP協(xié)議在互連網(wǎng)絡(luò)之間提供無(wú)連接的數(shù)據(jù)包傳輸。IP協(xié)議根據(jù)IP頭中的目的地址項(xiàng)來(lái)發(fā)送IP數(shù)據(jù)包。也就是說(shuō),IP路由IP包時(shí),對(duì)IP頭中提供的源地址不作任何檢查,并且認(rèn)為IP頭中的源地址即為發(fā)送該包的機(jī)器的IP地址。這樣,許多依靠IP源地址做確認(rèn)的服務(wù)將產(chǎn)生問(wèn)題并且會(huì)被非法入侵。其中最重要的就是利用IP欺騙引起的各種攻擊。
以防火墻為例,一些網(wǎng)絡(luò)的防火墻只允許網(wǎng)絡(luò)信任的IP數(shù)據(jù)包通過(guò)。但是由于IP地址不檢測(cè)IP數(shù)據(jù)包中的IP源地址是否為放送該包的源主機(jī)的真實(shí)地址,攻擊者可以采用IP源地址欺騙的方法來(lái)繞過(guò)這種防火墻。另外有一些以IP地址作為安全權(quán)限分配依據(jù)的網(wǎng)絡(luò)應(yīng)用,攻擊者很容易使用IP源地址欺騙的方法獲得特權(quán),從而給被攻擊者造成嚴(yán)重的損失。事實(shí)上,每一個(gè)攻擊者都可以利用IP不檢驗(yàn)IP頭源地址的特點(diǎn),自己填入偽造的IP地址來(lái)進(jìn)行攻擊,使自己不被發(fā)現(xiàn)。
TCP/IP協(xié)議安全問(wèn)題的防范
TCP協(xié)議安全問(wèn)題的防范
對(duì)于SYN Flood攻擊,目前還沒(méi)有完全有效的方法,但可以從以下幾個(gè)方面加以防范:
1. 對(duì)系統(tǒng)設(shè)定相應(yīng)的內(nèi)核參數(shù),使得系統(tǒng)強(qiáng)制對(duì)超時(shí)的SYN請(qǐng)求連接數(shù)據(jù)包的復(fù)位,同時(shí)通過(guò)縮短超時(shí)常數(shù)和加長(zhǎng)等候隊(duì)列使得系統(tǒng)能迅速處理無(wú)效的SYN請(qǐng)求數(shù)據(jù)包。
2. 建議在該網(wǎng)段的路由器上做些配置的調(diào)整,這些調(diào)整包括限制SYN半開(kāi)數(shù)據(jù)包的流量和個(gè)數(shù)。
3. 建議在路由器的前端多必要的TCP攔截,使得只有完成TCP三次握手過(guò)程的數(shù)據(jù)包才可以進(jìn)入該網(wǎng)段,這樣可以有效的保護(hù)本網(wǎng)段內(nèi)的服務(wù)器不受此類(lèi)攻擊。
IP協(xié)議安全問(wèn)題的防范
1. 拋棄基于地址的信任策略。這是最簡(jiǎn)單的方法。
2. 進(jìn)行包過(guò)濾。如果網(wǎng)絡(luò)是通過(guò)路由器接入Internet的,那么可以利用路由器來(lái)進(jìn)行包過(guò)濾。確認(rèn)只有內(nèi)部LAN可以使用信任關(guān)系,而內(nèi)部LAN上的主機(jī)對(duì)于LAN以外的主機(jī)要慎重處理。路由器可以過(guò)濾掉所有來(lái)自于外部而希望與內(nèi)部建立連接的請(qǐng)求。
3. 使用加密技術(shù)。阻止IP欺騙的一種簡(jiǎn)單的方法是在通信時(shí)要求加密傳輸和驗(yàn)證。當(dāng)有多種手段并存時(shí),加密方法可能最為適用。
TCP/IP各層的安全性和提高各層安全性的方法
1. 網(wǎng)絡(luò)層的安全性
在過(guò)去的十年里,已經(jīng)提出了一些方案對(duì)網(wǎng)絡(luò)層的安全協(xié)議進(jìn)行標(biāo)準(zhǔn)化。例如,安全協(xié)議3號(hào)(SP3)就是美國(guó)國(guó)家安全局以及標(biāo)準(zhǔn)技術(shù)協(xié)會(huì)作為安全數(shù)據(jù)網(wǎng)絡(luò)系統(tǒng)(SDNS)的一部分而制定的。網(wǎng)絡(luò)層安全協(xié)議(NLSP)是由國(guó)際標(biāo)準(zhǔn)化組織為無(wú)連接網(wǎng)絡(luò)協(xié)議(CLNP)制定的安全協(xié)議標(biāo)準(zhǔn)。集成化NLSP(I-NLSP)是由美國(guó)國(guó)家科技研究所提出的包括IP和CLNP在內(nèi)的統(tǒng)一安全機(jī)制。SWIPE是另一個(gè)網(wǎng)絡(luò)層的安全協(xié)議,由Ioannidis和Blaze提出并實(shí)現(xiàn)原型。所有這些提案的共同點(diǎn)多于不同點(diǎn)。事實(shí)上,他們用的都是IP封裝技術(shù)。其本質(zhì)是,純文本的包被加密,封裝在外層的IP報(bào)頭里,用來(lái)對(duì)加密的包進(jìn)行Internet上的路由選擇。到達(dá)另一端時(shí),外層的IP報(bào)頭被拆開(kāi),報(bào)文被解密,然后送到收?qǐng)?bào)地點(diǎn)。
網(wǎng)絡(luò)安全性的主要優(yōu)點(diǎn)是它的透明性,也就是說(shuō),安全服務(wù)的提供不需要應(yīng)用程序、其他通信層次和網(wǎng)絡(luò)部件做任何改動(dòng)。它最主要的缺點(diǎn)是:網(wǎng)絡(luò)層一般屬于不間進(jìn)程和相應(yīng)條例的包不做區(qū)別。對(duì)所有去往同一地址的包,它將按照同樣的加密密鑰和訪(fǎng)問(wèn)控制策略來(lái)處理。這可能導(dǎo)致提供不了所需要的功能,也會(huì)導(dǎo)致性能下降。針對(duì)面向主機(jī)的密鑰分配的這些問(wèn)題,RFC 1825允許(甚至可以說(shuō)是推薦)使用面向用戶(hù)的密鑰分配,其中,不同的連接會(huì)得到不同的加密密鑰。但是,面向用戶(hù)的密鑰分配需要對(duì)相應(yīng)的操作系統(tǒng)內(nèi)核作比較大的改動(dòng)。
簡(jiǎn)而言之,網(wǎng)絡(luò)層是非常適合提供基于主機(jī)對(duì)主機(jī)的安全服務(wù)的。相應(yīng)的安全協(xié)議可以用來(lái)在Internet上建立安全的IP通道和虛擬私有網(wǎng)。例如,利用它對(duì)IP包的加密和解密功能,可以簡(jiǎn)捷地強(qiáng)化防火墻系統(tǒng)的防衛(wèi)能力。RSA數(shù)據(jù)安全公司已經(jīng)發(fā)起了一個(gè)倡議,來(lái)推進(jìn)多家防火墻和TCP/IP軟件廠(chǎng)商聯(lián)合開(kāi)發(fā)虛擬私有網(wǎng),該倡議被稱(chēng)為S-WAN(安全廣域網(wǎng))倡議,其目標(biāo)是制定和推薦網(wǎng)絡(luò)層的安全協(xié)議標(biāo)準(zhǔn)。
2. 傳輸層的安全性
在網(wǎng)絡(luò)應(yīng)用編程中,通常使用廣義的進(jìn)程間通信(IPC)機(jī)制來(lái)與不同層次的安全協(xié)議打交道。在Internet中提供安全服務(wù)的首先一個(gè)想法便是強(qiáng)化它的IPC界面,如BSD、Sockets等,具體做法包括雙端實(shí)體的認(rèn)證,數(shù)據(jù)加密密鑰的交換等。Netscape通信公司遵循了這個(gè)思路,制定了建立在可靠的傳輸服務(wù)(如TCP/IP所提供)基礎(chǔ)上的安全接層協(xié)議(SSL)。
網(wǎng)絡(luò)安全機(jī)制的主要優(yōu)點(diǎn)是它的透明性,即安全服務(wù)的提供不要求應(yīng)用層做任何改變。這對(duì)傳輸層來(lái)是說(shuō)是做不到的。原則上,任何TCP/IP應(yīng)用,只要應(yīng)用傳輸層安全協(xié)議,比如說(shuō)SSL或IPC,就必定要進(jìn)行若干修改以增加相應(yīng)的功能,并使用不同的IPC界面。于是,傳輸層安全機(jī)制的主要缺點(diǎn)就是要對(duì)傳輸層IPC界面和應(yīng)用程序兩端都進(jìn)行修改。可是,比起Internet層和應(yīng)用層的安全機(jī)制來(lái),這里修改還是相當(dāng)小的。另一個(gè)缺點(diǎn)是,基于UDP的通信很難在傳輸層建立起安全機(jī)制來(lái)。同網(wǎng)絡(luò)層安全機(jī)制相比,傳輸層安全機(jī)制的主要優(yōu)點(diǎn)是它提供基于進(jìn)程對(duì)進(jìn)程的(而不是主機(jī)對(duì)主機(jī)的)安全服務(wù)。這一成就如果再加上應(yīng)用級(jí)的安全服務(wù),就可以再向前跨越一大步了。
3. 應(yīng)用層的安全性
網(wǎng)絡(luò)層的安全協(xié)議允許為主機(jī)(進(jìn)程)之間的數(shù)據(jù)通道增加安全屬性,這以為著真正的數(shù)據(jù)通道還是建立在主機(jī)(或進(jìn)程)之間,但卻不可能區(qū)分在同一通道上傳輸?shù)囊粋€(gè)具體文件的安全性要求。比如說(shuō),如果一個(gè)主機(jī)與另一個(gè)主機(jī)之間建立起一條安全的IP通道,那么所有在這條通道上傳輸?shù)腎P包就到要自動(dòng)的被加密。同樣,如果一個(gè)進(jìn)程和另一個(gè)進(jìn)程之間通過(guò)傳輸層安全協(xié)議建立起了一條安全的數(shù)據(jù)通道,那么兩個(gè)進(jìn)程間傳輸?shù)乃邢⒕投家詣?dòng)的被加密。
一般來(lái)說(shuō),在應(yīng)用層提供安全服務(wù)有幾種可能的做法,一個(gè)是對(duì)每個(gè)應(yīng)用(及應(yīng)用協(xié)議)分別進(jìn)行修改。一些重要的TCP/IP應(yīng)用已經(jīng)這樣做了。在RFC1421至1424中,IETF規(guī)定了私用強(qiáng)化郵件(PEM)來(lái)為基于SMTP的電子郵件系統(tǒng)提供安全服務(wù)。Internet業(yè)界采納PEM的步子太慢的原因是PEM依賴(lài)于一個(gè)既存的、完全可操作的PKI(公鑰基礎(chǔ)結(jié)構(gòu))。建立一個(gè)符合PEM規(guī)范的PKI需要多方在一個(gè)共同點(diǎn)上達(dá)成信任。作為一個(gè)中間步驟,Phil Zimmermann開(kāi)發(fā)了一個(gè)軟件包,叫做PGP(Pretty Good Privacy)。PGP符合PEM的絕大多數(shù)規(guī)范,但不必要求PKI的存在。相反,它采用了分布式的信任模型,即由每個(gè)用戶(hù)自己決定該信任哪些其他用戶(hù)。因此,PGP不是去推廣一個(gè)全局的PKI,而是讓用戶(hù)自己建立自己的信任之網(wǎng)。
總結(jié):
總起來(lái)說(shuō),TCP/IP安全性的進(jìn)展實(shí)際上與ICA思想的安全保證是有所協(xié)同與匯聚的,比起防火墻等措施來(lái)已更上一層樓。因此,基于TCP/IP協(xié)議的安全計(jì)算問(wèn)題應(yīng)以科學(xué)求實(shí)、積極創(chuàng)新的原則而努力推進(jìn),決不能不求創(chuàng)新,甚至悲觀(guān)失望。
評(píng)論