蘇彥圣 胡建華 宋廣佳
摘要:鄰居發(fā)現(xiàn)問題是互聯(lián)網(wǎng)通信過程中的一個重要問題,互聯(lián)網(wǎng)中的節(jié)點通過鄰居發(fā)現(xiàn)過程來獲取其他節(jié)點的通信標(biāo)識。傳統(tǒng)的鄰居發(fā)現(xiàn)協(xié)議由于假設(shè)所有的節(jié)點都是可靠的,使其面臨很多安全威脅,比如欺騙攻擊,DoS攻擊等。為了提高發(fā)現(xiàn)過程的安全性,文章提出了一種新的鄰居發(fā)現(xiàn)協(xié)議SNDP。SNDP采用加密方法對自身的通信標(biāo)識以及鄰居發(fā)現(xiàn)的目標(biāo)地址進(jìn)行保護(hù),使得惡意節(jié)點無法獲知鄰居發(fā)現(xiàn)的目標(biāo)地址,也無法獲知是哪個節(jié)點在進(jìn)行鄰居發(fā)現(xiàn)以及哪個節(jié)點進(jìn)行了應(yīng)答,因此可以有效防止欺騙攻擊和DoS攻擊,具有極高的隱私保密性。
關(guān)鍵詞:鄰居發(fā)現(xiàn);地址解析;IPv6;網(wǎng)絡(luò)安全
圖分類號:TP311? ? ? 文獻(xiàn)標(biāo)識碼:A
文章編號:1009-3044(2023)35-0090-04
開放科學(xué)(資源服務(wù))標(biāo)識碼(OSID)
0 引言
計算機網(wǎng)絡(luò)采用分層的體系結(jié)構(gòu),為了簡化各層的設(shè)計,每一層都使用了獨立的通信標(biāo)識以減少耦合。比如二層使用MAC作為數(shù)據(jù)幀的傳輸?shù)刂?;三層使用IP作為IP 數(shù)據(jù)包的目的地址;四層則使用<IP, Port>作為進(jìn)程的通信地址,即Socket接口。為了保障通信的順利進(jìn)行,上下層的通信標(biāo)識必須要有明確的對應(yīng)關(guān)系,否則通信將無法完成。比如在三層,源主機要與目標(biāo)地址IPX進(jìn)行通信時,將數(shù)據(jù)包發(fā)送至二層后,二層必須知道IPX所對應(yīng)的MAC地址(假設(shè)源主機與目標(biāo)主機在同一個局域網(wǎng)中)才能進(jìn)行信息傳送。網(wǎng)絡(luò)通信除了需要解決IP與MAC的對應(yīng)關(guān)系外,還需要解決域名與IP的對應(yīng)以及<IP: Port>與IP的對應(yīng)等其他對應(yīng)關(guān)系。三種典型的對應(yīng)關(guān)系見圖1。
通信標(biāo)識對應(yīng)關(guān)系的安全性是互聯(lián)網(wǎng)需要解決的安全問題之一,隨著互聯(lián)網(wǎng)與產(chǎn)業(yè)的融合,融入互聯(lián)網(wǎng)的設(shè)備的增加及互聯(lián)網(wǎng)承載業(yè)務(wù)的增多,通信標(biāo)識對應(yīng)關(guān)系的安全問題將更加凸顯。本文提出了一種新的鄰居發(fā)現(xiàn)協(xié)議,叫作安全局域發(fā)現(xiàn)協(xié)議(Secure Neighbor Discovery Protocol,SNDP) ,并給出了具體實現(xiàn)方法,并將其與幾種典型的安全方案進(jìn)行了對比與分析。
1 研究背景
目前,廣泛使用的局域發(fā)現(xiàn)協(xié)議有兩種:一種是用于IPv4環(huán)境中的地址解析協(xié)議(Address Resolution Protocol,ARP) ,另一種是用于IPv6環(huán)境的鄰居發(fā)現(xiàn)協(xié)議(Neighbor Discovery Protocol,NDP) 。對于局域發(fā)現(xiàn)過程,由于其沒有注冊過程,也沒有服務(wù)器支持,因此非常容易受到欺騙攻擊。以地址解析協(xié)議為例,當(dāng)主機A廣播ARP請求擁有網(wǎng)絡(luò)地址IPX的主機B回答其MAC地址時,如果主機C不斷進(jìn)行ARP應(yīng)答,謊稱自己擁有IPX,則A收到應(yīng)答后并不知道這是冒充的報文,A會更新自己的ARP緩存表,將C當(dāng)作B,并將本應(yīng)發(fā)送給B的數(shù)據(jù)包發(fā)送給C,從而形成了ARP欺騙[1]。
目前,國內(nèi)外對局域發(fā)現(xiàn)協(xié)議的安全性研究主要集中在以下三方面:
1) 防御與檢測技術(shù),即采用技術(shù)手段對攻擊進(jìn)行防御或者檢測已經(jīng)發(fā)生的攻擊,對網(wǎng)絡(luò)中主機的<IP,MAC>進(jìn)行長期監(jiān)視與記錄,一旦發(fā)現(xiàn)主機發(fā)送的ARP報文中<IP,MAC>映射與記錄中的不符,則認(rèn)為存在欺騙[2-3]。傳統(tǒng)的<IP,MAC>綁定與劃分VLAN方法也可歸為此類,但該方法屬于被動防御,同時增大了網(wǎng)絡(luò)復(fù)雜度與維護(hù)成本。
2) 改進(jìn)協(xié)議的方式,主要以采用改變協(xié)議過程或者增加協(xié)議環(huán)節(jié)的方法來增強安全性[4-6]。比如文獻(xiàn)[4]中采用在網(wǎng)絡(luò)中增加一臺DHCP服務(wù)器,并且擴展了DHCP協(xié)議使其可以完成地址解析過程,但產(chǎn)生了單點故障問題,增加了組網(wǎng)成本。
3) 加密通信的方式。比如使用非對稱加密技術(shù)對報文進(jìn)行加密,防止IP地址盜用[7]。雖然IPv6中規(guī)定可以用IPSec保護(hù)鄰居發(fā)現(xiàn)協(xié)議報文,但在鄰居發(fā)現(xiàn)中使用IPSec還存在很多問題,為此IETF小組提出安全鄰居發(fā)現(xiàn)協(xié)議(SEcure Neighbor Discovery,SEND) ,SEND使用CGA(cryptographically generated address,CGA) 、數(shù)字簽名、時間戳等方法來保護(hù)NDP消息[8],但加密方式存在密鑰管理難的問題,而且SEND與NDP同時存在還會引起路由問題[9]。由于SEND協(xié)議固有時間復(fù)雜度高[10-12],目前仍然處于實驗階段[13]。加密通信存在一個邏輯問題,即通信雙方在加密通信前雙方須互相知道MAC地址以便能夠交換密鑰,而這恰恰是局域發(fā)現(xiàn)協(xié)議要實現(xiàn)的,這一過程如果存在欺騙,那么后續(xù)的通信保障則失去了意義。
源地址驗證技術(shù)(Source Address Validation Architecture,SAVA) 是一種新的安全機制,其主要思想是根據(jù)數(shù)據(jù)包中的源地址信息對報文行過濾,這樣做的好處是一方面可以從源頭直接阻止攻擊,另一方面是便于源地址的追蹤、溯源以及網(wǎng)絡(luò)診斷與管理[14-15]。SAVA作為一種安全機制,需要網(wǎng)絡(luò)設(shè)備的支持。目前SAVI(Source Address Validation Implementation) 還處于實驗階段,其域內(nèi)源地址驗證的功能需要路由器支持,并且路由器要完成大量集中計算,因此會影響網(wǎng)絡(luò)性能,而且由于各設(shè)備廠商對SNMP協(xié)議的實現(xiàn)方式不同,致使SAVI部署難度很大[16-17]。
2 安全局域發(fā)現(xiàn)模型設(shè)計
SNDP依然采用NDP的消息格式,如圖2所示,但部分字段進(jìn)行了改進(jìn)。下面首先介紹NDP協(xié)議的基本構(gòu)成。NDP協(xié)議使用鄰居請求NS(Neighbor Solicitation) 與鄰居公告NA(Neighbor Advertisement) 來完成鄰居發(fā)現(xiàn)過程。NDP報文主要由3部分構(gòu)成:Ethernet部分、IPv6頭部與ICMPv6部分,主要字段如圖2所示。NS報文沒有“RSO”字段,NS報文的“Type”字段為135,NA的“Type”字段為136?!癛SO”字段只在NA中使用,“Target address”字段一般寫入鄰居發(fā)現(xiàn)的目的地址,“Option”字段在不同類型的ICMPv6消息中用法各不相同,在NDP中一般給出發(fā)送該報文的節(jié)點的MAC地址。
SNDP使用NSSNDP與NASNDP來完成局域發(fā)現(xiàn)過程,其Type字段值分別為200與201(ICMPv6的保留值)。SNDP消息的“Target address” 字段不再存儲鄰居發(fā)現(xiàn)的目標(biāo)IP地址,而是存儲目標(biāo)地址的哈希值。SNDP中使用的密鑰[K]以及消息簽名[SigK]都使用NDP的Option字段存儲。模型中的RO使用Hash函數(shù)進(jìn)行替換,本文中hash函數(shù)使用的是MD5(Message Digest Algorithm 5) ,加密算法使用的是IDEA(International Data Encryption Algorithm) 。SNDP中用到的幾個函數(shù)含義如下:
[Left(x, n)],從左邊截取x的[ n] bit,得到長度為[n]的二進(jìn)制串;
[EK(x)],以[K]為密鑰,使用IDEA將[x]進(jìn)行加密;
[DK(x)],以K為密鑰,使用IDEA對[x]進(jìn)行解密;
[H(x)],計算[x]的MD5值,結(jié)果長度為128 bit。
我們用IPA、MACA表示主機A的IP地址與MAC地址,用IPB、MACB表示主機B的IP地址與MAC地址。SNDP的局域發(fā)現(xiàn)過程如下:
(1) 發(fā)起階段。主機A進(jìn)行如下操作:
Step 1:當(dāng)主機A需要尋找網(wǎng)絡(luò)地址IPX所對應(yīng)的MAC地址時,首先,主機A產(chǎn)生密鑰對([KA,K-1A])
Step 2:主機A以廣播方式發(fā)送NSSNDP,各字段賦值如下:
Src_IP=[EIPX(IPA)]
Src_MAC=[Left(EIPX (MACA),48)]
Dest_IP=FF02::1(IP廣播地址)
Dest_MAC=33-33-00-00-00-01(MAC廣播地址)
Target address=[H(IPX)]
Type=200
Options={[EIPX (MACA,KA), SigK-1A]}
(2) 應(yīng)答階段。其他主機(以主機B表示)進(jìn)行如下操作:
Step 3:接收NSSNDP
Step 4:如果地址池中還有地址可取,則取出一個地址記為IPY,產(chǎn)生密鑰([KB,K-1B]) ,進(jìn)行Step 5,如果無地址可取,則過程結(jié)束;
Step 5:計算[H(IPY)]
如果[H(IPY)]與NSSNDP的Target address字段相同,則將[IPY]作為密鑰,解密主機A的IP地址與MAC地址
IPA=[SNDP]
MACA=[DIPY] ([SNDP])
發(fā)送NASNDP回復(fù)主機A,各字段賦值如下:
Src_IP=[EKA(IPY)]
Src_MAC=[Left(EKA(MACB), 48)]
Dest_IP=[EKA(IPA)]
Dest_MAC= [MACA]
Target addrss= [EKA(IPY)]
Options=[(EKA(MACB,KB), SigK-1B)]
如果[H(IPY)]與NSSNDP的Target address字段不同,回到Step 4。
(3) 驗證過程。主機A進(jìn)行如下操作
Step 6:在規(guī)定的時間內(nèi)(一般為1-3秒鐘),對所有接收到的NASNDP進(jìn)行驗證,測試NASNDP的Target address字段與IPX是否匹配:
如果Target addrss=IPX,則表明局域發(fā)現(xiàn)成功,使用[K-1A]解密NASNDP的Option字段即可獲得主機B的MAC地址MACB。
如果Target addrss≠IPX,則將NASNDP丟棄。
SNDP工作流程圖見3。
下面以一個實例進(jìn)行說明SNDP的局域發(fā)現(xiàn)過程。假設(shè)局域網(wǎng)中有三臺主機,主機的地址信息見表1。
如果主機A要尋找地址為1::5:B主機的MAC地址,則A首先廣播NSSNDP,各字段值見圖4。主機B與C都可以收到這條廣播。主機C從地址池中取出地址1::5:C,計算:
h(1::5:C)=E77B56DC72BF9E34EBA732592A5A6DD0
發(fā)現(xiàn)[H(1::5:C)]與NSSNDP中的Target address字段不等,而且地址池中也無下一個地址了,則將該NSSNDP丟棄。主機B從地址池中取出地址1::5:B,計算:
hash(1::5:B)= BAED6FB66CBEDFDCA5D0A910D315BF89
發(fā)現(xiàn)與NSSNDP中的Target address字段相等,則以1::5:B作為密鑰解密主機A的IP地址與MAC地址,然后使用主機A的密鑰[KA]將自己的IP地址、MAC地址以及主機A的IP地址與MAC地址進(jìn)行加密,發(fā)送NASNDP進(jìn)行應(yīng)答,各字段值見圖4。
主機A在收到這個NASNDP后,進(jìn)行驗證。主機A使用私鑰[K-1A]解密NASNDP的Target address字段,發(fā)現(xiàn) [SNDP],即目標(biāo)節(jié)點擁有自己所要尋找的IP地址,則進(jìn)一步解密NASNDP的Option字段,獲得主機B的MAC地址。
3 對比與分析
3.1 SNDP的特點
通過第三部分的描述可知,SNDP與ARP、NDP是完全不同的,SNDP具有以下幾個特點:
1) 防止欺騙攻擊。在SNDP中,目標(biāo)的IP地址是不公開的,公開的只是目標(biāo)IP地址的hash值,惡意節(jié)點無法根據(jù)hash值推測出真實的IP地址,因此無法發(fā)送偽造的應(yīng)答。同時,由于SNDP使用了消息簽名,即使消息被截獲,惡意節(jié)點也無法篡改內(nèi)容。
2) 防止DoS攻擊。在SNDP中,源主機A的MAC地址是受保護(hù)的,只有擁有特定IP的節(jié)點可以機密源主機的MAC地址,惡意節(jié)點不知道哪個主機在進(jìn)行居于發(fā)現(xiàn),也就無法進(jìn)行DoS攻擊。
3) SNDP在局域發(fā)現(xiàn)過程中不需要第三方設(shè)備,網(wǎng)絡(luò)中的節(jié)點可以自行完成。
4) SNDP發(fā)現(xiàn)過程結(jié)束后,主機A與主機B也完成了公鑰交換過程。主機A獲得了主機B的公鑰[KB],主機B獲得了主機A的公鑰[KA],雙方實現(xiàn)無公鑰基礎(chǔ)設(shè)施(Public Key infrastructure,PKI) 的密鑰交換,且這種交換過程是安全的,因為[KA]與[KB]都是以密文傳送的,且只有主機B可以解密[KA],而[KB]使用[KA]進(jìn)行加密的,只有用主機A的私鑰[K-1A]的可以解密。
5) 高隱私保護(hù)性。在整個局域發(fā)現(xiàn)過程中,以明文方式傳遞的信息極少,僅在NASNDP的Dest MAC字段是一個以明文方式公開的隱私信息,而其他以明文方式傳遞的信息,比如“FF02::1”以及“3333-0000-0001”, 都是公共地址。因此在整個發(fā)現(xiàn)過程中,除了主機A與主機B,其他節(jié)點不知道哪個主機在發(fā)起局域發(fā)現(xiàn)過程,也不知道局域發(fā)現(xiàn)的目標(biāo)地址,也無法獲知哪個主機進(jìn)行了應(yīng)答。
3.2 對比分析
我們從加密技術(shù)的使用、第三方設(shè)備、流量監(jiān)視、通信開銷以及隱私保護(hù)等方面將SNDP與現(xiàn)有的局域發(fā)現(xiàn)協(xié)議以及幾種典型的改進(jìn)方案進(jìn)行了對比,對比結(jié)果見表2。表中的n代表局域網(wǎng)內(nèi)的主機數(shù)量,O(n+1)表示一個廣播過程與一次點對點通信過程。
如果協(xié)議雙方使用了加密技術(shù),則會在某種程度上影響協(xié)議性能,而且密鑰分配與管理也是個難題,需要增加AKD(Authoritative Key Distributor) ,這在文獻(xiàn)[5]采用的方法中體現(xiàn)明顯。文獻(xiàn)[19]則采用狀態(tài)機制來防止欺騙,如果自己沒有發(fā)出過ARP請求則不會相信ARP reply,但其要求ARP reply也是以廣播方式發(fā)送,這使得通信開銷增加很多。文獻(xiàn)[3-5]采用的方法都需要在網(wǎng)絡(luò)中增加一個額外的服務(wù)器,并且要保障這個服務(wù)器始終是安全的,但這增加了部署的成本。但如果這臺服務(wù)器能夠提供<IP, MAC>映射查詢服務(wù),那么通信開銷會大大降低。因為節(jié)點只需要向安全服務(wù)器查詢其他節(jié)點的MAC地址即可,而不需要廣播過程,比如文獻(xiàn)[3]。但安全服務(wù)器本身需要周期性的廣播以便收集LAN內(nèi)所有主機的<IP, MAC>映射。在文獻(xiàn)[20]中,IDS(Intrusion Detection System) 需要在交換機上做鏡像端口,以便能監(jiān)控所有的網(wǎng)絡(luò)流量,F(xiàn)CFS-SAVI也需要監(jiān)視網(wǎng)絡(luò)流量,以實現(xiàn)源地址過濾,這兩種方法都要交換機支持。
SNDP不需要監(jiān)控所有的網(wǎng)絡(luò)流量,也不需要添加安全服務(wù)器,實現(xiàn)成本很低。SEND協(xié)議采用CGA作為特殊的地址結(jié)構(gòu),CGA的特性是攻擊者無法根據(jù)CGA地址推測出原始的數(shù)據(jù)結(jié)構(gòu),這使得攻擊者無法進(jìn)行偽造地址攻擊。但SEND協(xié)議在鄰居發(fā)現(xiàn)過程中沒有保護(hù)自己的MAC地址,使得惡意節(jié)點可以向主機的MAC地址發(fā)送虛假的CGA參數(shù)讓主機進(jìn)行驗證,從而消耗主機資源,進(jìn)行DoS攻擊。SNDP則對MAC地址進(jìn)行保護(hù),攻擊者無法獲得主機的MAC地址,也就無法發(fā)動DoS攻擊。從隱私保護(hù)角度來講,SNDP實現(xiàn)了匿名的局域發(fā)現(xiàn)過程。當(dāng)然,SNDP也存在一些不足,比如在消息傳遞過程中,加密與解密過程需要一定的計算資源,影響了協(xié)議性能。
4 結(jié)束語
以往局域發(fā)現(xiàn)協(xié)議由于認(rèn)為網(wǎng)絡(luò)節(jié)點都是可靠的而且在發(fā)現(xiàn)過程中公開了目標(biāo)的特性(IP地址),使得協(xié)議非常容易受到惡意節(jié)點的攻擊。雖然IETF提出SEND作為安全解決方案,但SEND除了計算復(fù)雜度高,還容易受到DoS攻擊。文章提出了SNDP作為解決方案。SNDP使用隱藏目標(biāo)IP的方法來防止惡意節(jié)點發(fā)送欺騙應(yīng)答,而且在局域發(fā)現(xiàn)過程中不公開源節(jié)點的MAC地址,因此可以防止DoS攻擊,而且SNDP不需要增加額外的網(wǎng)絡(luò)設(shè)備,降低了實現(xiàn)成本。更進(jìn)一步的,在SNDP的局域發(fā)現(xiàn)過程中,應(yīng)答節(jié)點的地址信息也是以加密方式傳送的,也即SNDP實現(xiàn)了雙向的匿名發(fā)現(xiàn)過程。
參考文獻(xiàn):
[1] GAO J H,XIA K J.ARP spoofing detection algorithm using ICMP protocol[C]//2013 International Conference on Computer Communication and Informatics.January 4-6,2013.Coimbatore,Tamil Nadu,India.IEEE,2013:1-6.
[2] NAM S,KIM D,KIM J.Enhanced ARP:preventing ARP poisoning-based man-in-the-middle attacks[J].IEEE Communications Letters,2010,14(2):187-189.
[3] OH M,KIM Y G,HONG S,et al.ASA:agent-based secure ARP cache management[J].IET Communications,2012,6(7):685-693.
[4] GOUDA M G,HUANG C T.A secure address resolution protocol[J].Computer Networks,2003,41(1):57-71.
[5] BRUSCHI D,ORNAGHI A,ROSTI E.S-ARP:a secure address resolution protocol[C]//19th Annual Computer Security Applications Conference,2003.Proceedings.Las Vegas,Nevada,USA.IEEE,2003.
[6] Biju Issac Lawan A Mohammed.Secure unicast address resolution protocol (S-UARP) by extending DHCP[C]//2005 13th IEEE International Conference on Networks Jointly held with the 2005 IEEE 7th Malaysia International Conf on Communic.Kuala Lumpur,Malaysia.IEEE,2005.
[7] GOYAL V,TRIPATHY R.An efficient solution to the ARP cache poisoning problem[J].Information Security and Privacy,2005(3574):40-51.
[8] J.Arkko,ED.Ericsson,Kempf J.Secure Neighbor Discovery (SEND). http://tools.IETF.org/html/rfc3971: IETF, 2005.
[9] HOU Y,WANG Z X,WANG Y,et al.Routing attack in the ND and SEND mixed environment[C]//2012 Fourth International Conference on Multimedia Information Networking and Security.November 2-4,2012.Nanjing,China.IEEE,2012.
[10] OH H,CHAE K.An efficient security management in IPv6 network via MCGA[C]//The 9th International Conference on Advanced Communication Technology.February 12-14,2007.Gangwon-Do,Korea.IEEE,2007:1179-1181
[11] SU G X,WANG W D,GONG X Y,et al.A quick CGA generation method[C]//2010 2nd International Conference on Future Computer and Communication.May 21-24,2010.Wuhan,China.IEEE,2010:769-773.
[12] ALSA’DEH A,RAFIEE H,MEINEL C.Stopping time condition for practical IPv6 Cryptographically Generated Addresses[C]//The International Conference on Information Network 2012.February 1-3,2012.Bali,Indonesia.IEEE,2012:257-262.
(下轉(zhuǎn)第99頁)
(上接第93頁)
[13] RAFIEE H,ALSA’DEH A,MEINEL C.WinSEND:windows SEcure neighbor discovery[C]//Proceedings of the 4th international conference on Security of information and networks.Sydney Australia.ACM,2011:243-246.
[14] Xu K, Williams M. A Source Address Validation Architecture (SAVA) Testbed and Deployment Experience[J]. Heise Zeitschriften Verlag, 2008.
[15] WU J P,REN G,LI X.Source address validation:architecture and protocol design[C]//2007 IEEE International Conference on Network Protocols.October 16-19,2007.Beijing,China.IEEE,2007:276 - 283.
[16] 肖佩瑤,畢軍.基于OpenFlow架構(gòu)的域內(nèi)源地址驗證方法[J].小型微型計算機系統(tǒng),2013,34(9):1999-2003.
[17] LI J,WU J P,XU K,et al.An hierarchical inter-domain authenticated source address validation solution[J].Chinese Journal of Computers,2012,35(1):85-100.
[18] NORDMARK E,BAGNULO M,LEVY-ABEGNOLI E.FCFS SAVI:first-come,first-served source address validation improvement for locally assigned IPv6 addresses[J].2011.
[19] ATAULLAH M,CHAUHAN N.ES-ARP:an efficient and secure Address Resolution Protocol[C]//2012 IEEE Students' Conference on Electrical,Electronics and Computer Science.March 1-2,2012.Bhopal,India.IEEE,2012:1-5.
[20] BARBHUIYA F A,BISWAS S,NANDI S.An active DES based IDS for ARP spoofing[C]//2011 IEEE International Conference on Systems,Man,and Cybernetics.October 9-12,2011.Anchorage,AK,USA.IEEE,2011:2743-2748.
【通聯(lián)編輯:光文玲】