專利名稱:通過代理連接的主機(jī)之間的安全鄰居發(fā)現(xiàn)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及用于安全地代理發(fā)現(xiàn)消息的方法、代理和主機(jī)。
技術(shù)背景 在分組交換計(jì)算機(jī)網(wǎng)絡(luò)中,諸如主機(jī)和路由器等節(jié)點(diǎn)使用鄰居發(fā)現(xiàn)(ND)信令來 確定已知位于附接鏈路上的鄰居的鏈路層地址。為允許網(wǎng)絡(luò)在單一鏈路外存在,通常使用 橋接器連接不共享共同鏈路的子網(wǎng)。ND代理提供一種用于將多個鏈路橋接成單個網(wǎng)絡(luò)的 方法。為此,它們修改通過它們的ND信令。因特網(wǎng)任務(wù)工程組(IETF)發(fā)布了題為“鄰居發(fā) 現(xiàn)代理(ND 代理)” (‘Neighbor Discovery Proxies (ND Proxy))的一個請求注解(RFC) RFC4389,該注解描述了一種方法,借助于該方法多個鏈路層段橋接成通過代理的單個段。 RFC4389指定因特網(wǎng)控制消息協(xié)議(ICMP)鄰居請求(Neighbor Solicitation)和鄰居通告 消息(Neighbor Advertisement messages),這些消息用于允許在橋接器任一側(cè)的主機(jī)交 換尋址信息,以在因特網(wǎng)協(xié)議(IP)地址與媒體訪問控制(MAC)地址之間形成綁定,MAC地 址也稱為鏈路層地址或第2層地址。圖1 (現(xiàn)有技術(shù))示出包括兩個子網(wǎng)110和150的簡 單網(wǎng)絡(luò)100,這兩個子網(wǎng)通過充當(dāng)ND代理180的橋接器連接。子網(wǎng)110包括第一鏈路層連 接130,在該連接上連接了諸如第一主機(jī)120等多個主機(jī)。類似地,子網(wǎng)150包括第二鏈路 層連接170,在該連接上連接了諸如第二主機(jī)160等多個主機(jī)。ND代理180包括連接到第 一和第二鏈路層130和170每個層的端口。到這些鏈路層之一的每個連接包括MAC地址。 因此,第一主機(jī)120具有在第一鏈路層130上的MAC地址,第二主機(jī)160具有在第二鏈路層 170上的MAC地址,并且ND代理180具有兩個MAC地址,每個鏈路層上一個MAC地址。為使 第一主機(jī)120連接到第二主機(jī)160,在最初不知道第二主機(jī)160的MAC地址的情況下,第一 主機(jī)120廣播包括第一主機(jī)120的IP地址和MAC地址及第二主機(jī)160的IP地址的鄰居請 求消息。ND代理180接收此鄰居請求消息,并且可在內(nèi)部高速緩存中存儲第一主機(jī)120的 MAC地址。在將消息內(nèi)的第一主機(jī)120的MAC地址替代為在第二鏈路層170上ND代理180 的MAC地址后,它在第二鏈路層170上轉(zhuǎn)發(fā)鄰居請求消息。第二主機(jī)160在鄰居高速緩存 中將第一主機(jī)120的IP地址與第二鏈路層170上ND代理180的MAC地址相關(guān)存儲。第二 主機(jī)160隨后通過放置在第二鏈路層170上的鄰居通告消息做出響應(yīng),該消息包括第二主 機(jī)160的IP和MAC地址并可選地包括第一主機(jī)120的IP地址和ND代理180在第二鏈路 層170上的MAC地址。ND代理180檢測第二主機(jī)160的鄰居通告消息,將第二主機(jī)160的 MAC地址替換為在第一鏈路層130上其自己的MAC地址,當(dāng)包括ND代理自己在第二鏈路層 170上的MAC地址時將該MAC地址替換為第一主機(jī)120的MAC地址,并在第一鏈路層130上 轉(zhuǎn)發(fā)鄰居通告消息。第一主機(jī)120在鄰居高速緩存中將第二主機(jī)160的IP地址與第一鏈路 層110上ND代理180的MAC地址相關(guān)存儲。在以后任何時候,如果第一主機(jī)120需要通過 使用第二主機(jī)160的IP地址與第二主機(jī)160通信,則其鄰居高速緩存將指示任何消息或 分組需要向ND代理180在第一鏈路層130上的MAC地址發(fā)送。類似地,如果第二主機(jī)160 需要通過使用第一主機(jī)120的IP地址與第一主機(jī)120通信,則第二主機(jī)160的鄰居高速緩存將指示任何消息或分組需要向第二鏈路層170上ND代理180的MAC地址發(fā)送。
題為“安全的鄰居發(fā)現(xiàn)(SEND),,(SEcureNeighbor Discovery(SEND))的 RFC3971 指定一種用于保護(hù)鄰居發(fā)現(xiàn)信令安全,防止諸如鄰居請求和鄰居通告消息中地址的惡意修 改(欺騙)等特定威脅的方法。SEND協(xié)議提供一種保護(hù)ND信令安全,以便接收節(jié)點(diǎn)能檢 測ND分組是否已被篡改的方式。數(shù)字簽名用于保護(hù)與鄰居發(fā)現(xiàn)有關(guān)的消息。簽名保護(hù)消 息的完整性,并通過使用證書來鑒定其發(fā)送方的身份以證明消息發(fā)送方的身份。實(shí)際上,每 個消息包括基于發(fā)送方的私有密鑰和發(fā)送方的地址的簽名。在接收端,可通過使用發(fā)送方 的公共密鑰驗(yàn)證簽名,通過使用向接收端和發(fā)送方均已知和信任的信任錨點(diǎn)的查詢,向接 收端證明發(fā)送方的公共密鑰的合格。簽名的驗(yàn)證證實(shí)了發(fā)送方的地址。圖2 (現(xiàn)有技術(shù))示出RSA簽名的一種格式。RSA簽名200基于熟知的 Rivest- Shamir -Adleman (RSA)算法,并且在SEND中指定。RSA簽名200添加到ND信令 消息。比特標(biāo)志270提供有關(guān)RSA簽名200的格式的信息。包括在RSA簽名200中的字段 包括·類型210 :IETF指配的值,設(shè)為等于12。 長度200 以8個八位字節(jié)為單位的RSA簽名200 (包括圖2中的所有參數(shù))的長度?!ゎA(yù)留230 16比特字段,預(yù)留供將來使用?!っ荑€散列240 128比特字段,包含用于構(gòu)成RSA簽名200的公共密鑰的安全散 列標(biāo)準(zhǔn)-1 (SHA-I)散列的最高有效(最左側(cè))128比特。·數(shù)字簽名250 可變長度字段,包含公共密鑰加密標(biāo)準(zhǔn)(PKCS)簽名,該簽名在以 下八位字節(jié)序列上使用發(fā)送方的私有密鑰構(gòu)成1. 128比特CGA消息類型標(biāo)記值,專門定義用于SEND協(xié)議。2. 128比特源地址字段,來自受SEND協(xié)議保護(hù)的ND信令消息的IP報頭。3. 128比特目的地地址字段,來自IP報頭。4. 8比特類型、8比特代碼和16比特校驗(yàn)和字段,來自受保護(hù)消息的因特網(wǎng)控制消 息協(xié)議(ICMP)報頭。5. ND代理消息報頭,從ICMP校驗(yàn)和字段后的第一八位字節(jié)開始并繼續(xù)直至ND代 理特定參數(shù)但不包括ND代理特定參數(shù)。6. RSA簽名200前的所有ND代理特定參數(shù)。具體而言,這些參數(shù)包括發(fā)送ND消息 的節(jié)點(diǎn)的鏈路層地址,并且在ND消息是另一 ND消息的回復(fù)的情況下,這些參數(shù)也可包括消 息預(yù)期向其發(fā)送的節(jié)點(diǎn)的鏈路層地址?!ぬ畛?60 包含填充的可變長度字段。在RSA簽名200前的所有消息參數(shù)包括在數(shù)字簽名250的計(jì)算中。因此,接收節(jié) 點(diǎn)在驗(yàn)證簽名時將立即檢測到可能嘗試更改這些消息參數(shù)中的一些參數(shù)的任何“中間人” 攻擊。SEND和ND代理基本上不兼容,這是因?yàn)樗鼈兓跊_突的需求。一方面,如現(xiàn)在所 指定的一樣,SEND假設(shè)通告IP地址的節(jié)點(diǎn)是IP地址的擁有者,并且擁有用于基于通告的 IP地址生成數(shù)字簽名的私有密鑰。另一方面,通過ND代理,最初通告其IP地址并基于那些 IP和MAC地址創(chuàng)建了數(shù)字簽名的節(jié)點(diǎn)的MAC地址在ND消息內(nèi)被替換為代理的MAC地址。在接收端不能根據(jù)原始通告節(jié)點(diǎn)的MAC地址驗(yàn)證其數(shù)字簽名,這是因?yàn)樵揗AC地址已被改 寫。存在ND代理時,接收端上的SEND協(xié)議將推斷一些惡意節(jié)點(diǎn)可能已篡改原始ND信令, 而實(shí)際上,修改了原始ND信令的是合法代理。指定“ND代理”并在SEND RFC3971發(fā)布后在 2006年4月發(fā)布的RFC4389明確表明,無機(jī)制可用于保護(hù)代理鄰居發(fā)現(xiàn)過程。代理操作使 得RSA簽名失效,導(dǎo)致接收ND消息的具SEND能力的節(jié)點(diǎn)丟棄此類消息,或者將它們視為不 安全
發(fā)明內(nèi)容
具有允許通過橋接器、代理或路由器以安全方式代理鄰居發(fā)現(xiàn)消息的方法、代理 和主機(jī),這將有明顯的優(yōu)點(diǎn)。因此,本發(fā)明的一個廣泛目的是在主機(jī)通過代理連接時提供用于保護(hù)在主機(jī)之間 鄰居發(fā)現(xiàn)(ND)信令安全的方法、代理和主機(jī)。本發(fā)明提供一種方法,通過該方法,ND代理 能將任何ND消息中的鏈路層地址替換為其自己的鏈路層地址。接收此類修改的通告的節(jié) 點(diǎn)驗(yàn)證ND代理是否已得到執(zhí)行更改的授權(quán)。對于此驗(yàn)證,節(jié)點(diǎn)根據(jù)頒發(fā)給ND代理的證書 來授權(quán)此類更改。雖然ND代理修改通過代理的ND消息的原始內(nèi)容,由此破壞任何始發(fā)主 機(jī)簽名,但本發(fā)明的代理通過在修改前將原始內(nèi)容移到新消息字段中而保留原始內(nèi)容。代 理將代理簽名添加到通過其的ND消息,允許接收主機(jī)驗(yàn)證修改的ND消息的合法性。接收 主機(jī)可使用新消息字段重建ND消息的原始內(nèi)容,由此修復(fù)始發(fā)主機(jī)簽名。本發(fā)明的第一方面涉及一種保護(hù)通過代理連接的主機(jī)之間鄰居發(fā)現(xiàn)安全的方法。 方法在代理從第一主機(jī)接收預(yù)期到第二主機(jī)的鄰居發(fā)現(xiàn)(ND)消息時開始。ND消息包括因 特網(wǎng)協(xié)議(IP)地址、第一主機(jī)的第二層地址和至少部分基于第一主機(jī)的第二層地址由第 一主機(jī)構(gòu)建的第一簽名。代理修改ND消息,先將第一主機(jī)的第二層地址改寫為代理的第二 層地址。代理還通過插入代理的第二簽名來修改ND消息。代理簽名至少部分基于代理的 第二層地址。代理隨后向第二主機(jī)發(fā)送修改的ND消息。本發(fā)明的第二方面涉及保護(hù)通過代理連接的主機(jī)之間鄰居發(fā)現(xiàn)安全的方法的變 型。該方法包括多個另外的步驟。代理將第一主機(jī)的第二層地址復(fù)制到修改的ND消息的 另外字段中,并且在代理的第二簽名的計(jì)算中使用該另外的字段。第二主機(jī)在接收修改的 ND消息時,驗(yàn)證代理的第二簽名。第二主機(jī)可還通過將代理的第二層地址改寫為第一主機(jī) 的第二層地址,將ND消息以其原始形式恢復(fù)。因此,第二主機(jī)可驗(yàn)證第一主機(jī)的第一簽名。 第二主機(jī)將第一主機(jī)的IP地址與代理的第二層地址相關(guān)存儲。本發(fā)明的第三方面涉及一種在主機(jī)中安全地接收鄰居發(fā)現(xiàn)(ND)消息的方法。方 法在主機(jī)接收ND消息時開始,該消息包括代理的第二層地址、對端主機(jī)的第二層地址、對 端主機(jī)的簽名及代理的簽名。主機(jī)通過使用代理的公共密鑰,驗(yàn)證代理簽名。隨后,主機(jī)通 過將代理的第二層地址替換為對端主機(jī)的第二層地址來修改ND消息。這允許主機(jī)通過使 用對端主機(jī)的公共密鑰來驗(yàn)證對端主機(jī)的簽名。在驗(yàn)證兩個簽名后,主機(jī)將代理的第二層 地址存儲為用于與對端主機(jī)通信的第二層地址。本發(fā)明的第四方面涉及一種代理。代理具有用于從第一主機(jī)接收鄰居發(fā)現(xiàn)(ND) 消息的第一第二層連接。代理也具有處理器,處理器從第一第二層連接接收ND消息,隨后 從ND消息讀取包括至少一個原始地址的第一字段和包括第一主機(jī)的第一簽名的第二字段。處理器隨后通過從收到的ND消息將至少一個原始地址復(fù)制到第三字段來修改ND消息。 隨后,它在第一字段中將至少一個原始地址之一改寫為代理的地址。處理器插入基于代理 的地址且基于至少一個原始地址的代理的第二簽名。處理器隨后指示第二第二層連接向第 二主機(jī)發(fā)送修改的ND消息。本發(fā)明的第五方面涉及一種主機(jī)。主機(jī)包括存儲器,存儲器存儲對端主機(jī)的公共 密鑰、代理的公共密鑰和用于與對端主機(jī)通信的鏈路層地址。主機(jī)進(jìn)一步具有用于在鏈路 上從代理接收鄰居發(fā)現(xiàn)(ND)消息的第二層連接。ND消息包括代理的第二層地址、對端主機(jī) 的第二層地址、對端主機(jī)的簽名及代理的簽名。在主機(jī)中,處理器通過使用代理的公共密鑰 來驗(yàn)證代理的簽名。隨后,處理器通過將代理的第二層地址替換為對端主機(jī)的第二層地址 來修改ND消息。處理器進(jìn)一步通過使用對端主機(jī)的公共密鑰來驗(yàn)證對端主機(jī)的簽名。在 這些驗(yàn)證后,處理器在存儲器中將代理的鏈路第二層地址存儲為用于與對端主機(jī)通信的第 二層地址。
為更詳細(xì)地理解本發(fā)明,了解它的其它目的和優(yōu)點(diǎn),現(xiàn)在可結(jié)合附圖,參照以下說 明,其中圖1是包括通過充當(dāng)鄰居發(fā)現(xiàn)代理的鄰居發(fā)現(xiàn)代理連接的兩個子網(wǎng)的簡單網(wǎng)絡(luò) 的現(xiàn)有技術(shù)表示;圖2是Rivest-Shamir-Adleman簽名的格式的現(xiàn)有技術(shù)表示;圖3示出包括通過安全的鄰居發(fā)現(xiàn)代理連接的兩個子網(wǎng)的示范網(wǎng)絡(luò);圖4a、4b和4c示出描述本發(fā)明的方法的示范步驟的序列圖;圖5示出根據(jù)本發(fā)明的一些方面,計(jì)算代理簽名的示范方法;圖6示出根據(jù)本發(fā)明的一些方面的簡化鄰居發(fā)現(xiàn)消息內(nèi)容;圖7示出根據(jù)本發(fā)明的一個方面構(gòu)建的示范代理;以及圖8示出根據(jù)本發(fā)明的一個方面構(gòu)建的示范主機(jī)。
具體實(shí)施例方式下面將專門參照優(yōu)選實(shí)施例的各種示范使用和方面,描述本發(fā)明的創(chuàng)新示教。然 而,應(yīng)理解,此實(shí)施例只提供本發(fā)明的創(chuàng)新示教的許多有利使用的多個示例。通常,本申請 的說明書中所做的陳述不一定限制本發(fā)明的各個所要求保護(hù)方面的任何方面。另外,一些 陳述可適用于一些發(fā)明性特征但不適用于其它特征。在附圖的描述中,類似的標(biāo)號表示本 發(fā)明的類似要素。根據(jù)本發(fā)明,明確分離地址所有權(quán)和地址通告的角色。標(biāo)準(zhǔn)鄰居發(fā)現(xiàn)(ND)代理的 正常操作在因特網(wǎng)任務(wù)工程組(IETF)請求注解(RFC)編號4389中定義。本發(fā)明提供安全 的鄰居發(fā)現(xiàn)(SEND)代理,該代理包括用于確保接收節(jié)點(diǎn)能區(qū)分修改原始ND消息的經(jīng)授權(quán) SEND代理和進(jìn)行相同操作的惡意節(jié)點(diǎn)的另外特征。這通過使用經(jīng)授權(quán)SEND代理的密鑰為 其簽名、通過修改ND消息而實(shí)現(xiàn)。經(jīng)授權(quán)的SEND代理也優(yōu)選在簽名的和修改的ND消息中 包括它替換的ND消息的原始內(nèi)容;這能由接收節(jié)點(diǎn)用于進(jìn)一步驗(yàn)證。SEND代理的簽名可 包括在稱為代理簽名信息(PSI)的新信息字段中。簽名是在消息中存在的ND代理信息字段上執(zhí)行,包括來自原始ND消息的RiveSt-Shamir-Adleman(RSA)簽名字段。PSI附在消息 中,優(yōu)選作為最后的信息字段附上。代理簽名具有與圖2所示RSA簽名的類似格式,一些例 外有首先,它具有相區(qū)別的類型值,不同于圖2的類型210的值。其次,由于數(shù)字簽名優(yōu)選 基于PSI前的所有ND代理特定參數(shù),因此,在PSI內(nèi)的數(shù)字簽名優(yōu)選部分基于RSA簽名本 身。
也提供了使用SEND代理來允許以安全方式代理ND消息的方法和能夠使用PSI的 主機(jī)。在本發(fā)明的上下文中,SEND代理可包括橋接器、路由器、交換器或任何其它分組轉(zhuǎn) 發(fā)裝置。SEND代理可連接具有類似或不同物理和/或鏈路層屬性的子網(wǎng)。在一個示例中, SEND代理可連接兩個相區(qū)別的以太網(wǎng)子網(wǎng)。在另一示例中,SEND代理可橋接在無線局域 網(wǎng)(WLAN)和蜂窩無線電網(wǎng)絡(luò)之間。主機(jī)可包括任何最終終端(end-terminal)、最終用戶裝 置、路由器、應(yīng)用服務(wù)器及諸如此類。主機(jī)可包括帶有相關(guān)聯(lián)的鏈路層地址和鏈路層屬性的 一個或多個物理連接。例如,個人計(jì)算機(jī)可能包括以太網(wǎng)連接和WLAN連接,任一連接可在 本發(fā)明的上下文中使用。主機(jī)也可包括使用藍(lán)牙TM和蜂窩連接兩者的移動終端。在本發(fā)明的描述中,術(shù)語“第2層”、“鏈路層”和“媒體訪問控制(MAC) ”可交換使 用。現(xiàn)在參照附圖,其中,圖3示出包括通過SEND代理380連接的兩個子網(wǎng)310和350 的示范網(wǎng)絡(luò)300。網(wǎng)絡(luò)300包括根據(jù)本發(fā)明的一些示教構(gòu)建的節(jié)點(diǎn)。兩個子網(wǎng)310和350 每個支持一個主機(jī),分別為第一主機(jī)320和第二主機(jī)360。當(dāng)然,子網(wǎng)310和350能支持?jǐn)?shù) 量大得多的主機(jī),并且SEND代理380能為多個子網(wǎng)提供互連。圖3已簡化以便于說明本發(fā) 明。第一主機(jī)320經(jīng)由具有媒體訪問控制(MAC)地址MAC_H1的端口連接到子網(wǎng)310。類似 地,第二主機(jī)320經(jīng)由MAC地址MAC_H2連接到子網(wǎng)350。由于SEND代理380具有到兩個子 網(wǎng)的連接,因此,它具有兩個MAC地址MAC_P1和MAC_P2,它們分別連接到子網(wǎng)310和350。 第一主機(jī)310、第二主機(jī)360及SEND代理380之間的交互相對于以下附圖進(jìn)行描述。圖4a、4b和4c示出描述本發(fā)明的方法的示范步驟的序列圖。圖4a、4b和4c的序 列中涉及第一主機(jī)和第二主機(jī)320和360以及相對于圖3的描述引入的SEND代理380及 信任錨點(diǎn)400。添加信任錨點(diǎn)400到圖3的網(wǎng)絡(luò)允許包括主機(jī)320和360及信任基礎(chǔ)設(shè)施 內(nèi)的SEND代理。方法可選擇性地在步驟403開始,在該步驟中,知道它將需要通過SEND代理380 與其它主機(jī)通信的第一主機(jī)320可請求來自信任錨點(diǎn)400的、用于SEDN代理380的安全證 書。如果這樣,信任錨點(diǎn)400在步驟406利用SEND代理380的證書做出響應(yīng),包括SEND代 理380的公共密鑰。類似地,第二主機(jī)360可選擇性地在步驟409請求來自信任錨點(diǎn)400 的SEND代理380的證書。如果這樣,信任錨點(diǎn)在步驟412利用SEND代理380的安全證書 做出響應(yīng)。當(dāng)然,第一主機(jī)和第二主機(jī)可在存儲器中將信任錨點(diǎn)400的安全證書的其副本 保持更長的時間段。步驟403-412因此無需在每次執(zhí)行圖4a、4b和4c的序列時重復(fù)進(jìn)行。在步驟415,第一主機(jī)320希望進(jìn)入與第二主機(jī)360的通信。即使當(dāng)?shù)谝恢鳈C(jī)和第 二主機(jī)在更早時間已在通信中的情況下,也可能有最好是再次執(zhí)行ND過程的情況,如下所 述,這是因?yàn)槔绲诙鳈C(jī)360可能修改了其第2層連接。第二主機(jī)360修改其第2層連 接的一個示例將是在以太網(wǎng)連接斷開(unplugged)并且WLAN連接接管第二主機(jī)360的業(yè)務(wù)時。由于第一主機(jī)和第二主機(jī)位于不同的子網(wǎng)上,因此,簡單ND過程不可用,并且發(fā)現(xiàn)信 令需要通過連接兩個子網(wǎng)的橋接器、提供橋接功能的SEND代理380傳送。在步驟418,第一 主機(jī)320構(gòu)建RSA簽名。RSA簽名可以是常規(guī)式,并且例如可根據(jù)圖2的RSA簽名格式200 構(gòu)建。RSA簽名可根據(jù)各種各樣的參數(shù)構(gòu)建,至少包括源鏈路層地址(SLLA),這是第一主機(jī) 320的MAC地址MAC_H1。在步驟421,第一主機(jī)320在子網(wǎng)310的鏈路上通過使用具有地址 MAC_H1的端口發(fā)送鄰居請求消息。在子網(wǎng)310的同一鏈路上連接的SEND代理380利用其 自己的MAC地址MAC_P1檢測鄰居請求消息。在步驟424,SEND代理380構(gòu)建代理簽名以便 在向第二主機(jī)360轉(zhuǎn)發(fā)修改的鄰居請求的步驟中使用。該代理簽名被添加到根據(jù)上述PSI 格式的、修改的鄰居請求。 如圖4a的步驟424中一樣構(gòu)建代理簽名的方式的細(xì)節(jié)在圖5中示出,圖5示出了 根據(jù)本發(fā)明的一些方面,計(jì)算代理簽名的示范方法。圖5的方法還相對于根據(jù)本發(fā)明的一 些方面、示出簡化的鄰居發(fā)現(xiàn)消息內(nèi)容的圖6進(jìn)行描述。參照圖6,ND消息600包括發(fā)起ND 消息的主機(jī)(源主機(jī))的原始地址字段610和RSA簽名620。原始地址字段610還包括源 主機(jī)的MAC地址612、源主機(jī)的IP地址,也稱為源IP614及ND消息預(yù)期向其發(fā)送的主機(jī)的 目的地地址,也稱為目的地IP616。圖6所示的其它字段包括補(bǔ)充地址字段630和代理簽 名640,這些字段將在下面涉及。圖5的方法在步驟500SEND代理380接收ND消息、例如如 圖4a的步驟421中的鄰居請求消息時開始。在步驟510,SEND代理380從ND消息讀取源 MAC地址612。在步驟520可選擇性地在補(bǔ)充地址字段630中復(fù)制源MAC地址612,由此修 改ND消息600。隨后,在步驟530,SEND代理380還通過在原始地址字段610中寫入其自 己的MAC地址以改寫源MAC 612來修改ND消息。SEND代理380自己的MAC地址例如可以 是MAC_P2,如圖3所示,這是與第二主機(jī)360在同一子網(wǎng)上的SEND代理380的第2層地址。 在步驟540,SEND代理380計(jì)算代理簽名640,并將它添加到修改的ND消息。此簽名優(yōu)選 是SEND代理380的RSA簽名,優(yōu)選根據(jù)PSI格式構(gòu)建。優(yōu)選的是代理簽名640基于ND消 息的完整信息字段,包括如在步驟530修改的原始地址字段610和源主機(jī)的RSA簽名620。 簽名也優(yōu)選基于補(bǔ)充地址字段630。當(dāng)然,代理簽名640也可基于其它參數(shù)?;氐綀D4a、4b和4c的序列,在SEND代理380在步驟424構(gòu)建了代理簽名640后, SEND代理380在步驟427通過使用其具有地址MAC_P2的端口,將消息放在第二子網(wǎng)350的 鏈路層上,向第二主機(jī)360轉(zhuǎn)發(fā)修改的鄰居請求消息。在子網(wǎng)350的同一鏈路上連接的第 二主機(jī)360經(jīng)由其自己的具有MAC地址MAC_H2的端口接收修改的鄰居請求消息。此時,第 二主機(jī)360可能以前在可選步驟409和412獲得了 SEND代理380的證書。如果在接收修 改的鄰居請求后證書在第二主機(jī)360中不存在,則第二主機(jī)360在步驟430和433獲得證 書。隨后,在步驟436,第二主機(jī)360通過使用在SEND代理380的證書中包含的SEND代理 380的公共密鑰來驗(yàn)證SEND代理380的RSA簽名。此驗(yàn)證允許第二主機(jī)360斷定修改的 鄰居請求由合法的節(jié)點(diǎn)發(fā)送。在SEND代理380是第二主機(jī)360已知的受信任基礎(chǔ)設(shè)施的 一部分時,在步驟436SEND代理RSA簽名的驗(yàn)證足以使第二主機(jī)360認(rèn)為修改的鄰居請求 的全部內(nèi)容是有效的。該過程隨后可直接在步驟445繼續(xù)。然而,如果第二主機(jī)360不完 全信任SEND代理380,則它也可驗(yàn)證鄰居請求最初是由合法節(jié)點(diǎn)發(fā)起。為此,第二主機(jī)360 可執(zhí)行步驟439和442。在步驟439,第二主機(jī)360通過將現(xiàn)在存在于原始地址字段610中 的SEND代理380的MAC地址改寫為在補(bǔ)充地址字段630中發(fā)現(xiàn)的值,重構(gòu)原始鄰居請求消息。例如,可從補(bǔ)充字段630讀取值MAC_H1,并將其作為源MAC 612返回到原始地址字段。 在步驟442,驗(yàn)證第一主機(jī)320的RSA簽名620 ;由于鄰居請求的原始源MAC地址612已返 回到消息中的其原始位置,因此,此驗(yàn)證可能提供。
在步驟445,假設(shè)第二主機(jī)360對通過SEND代理RSA簽名,或通過驗(yàn)證第一主機(jī) 320的RSA簽名進(jìn)行的修改的鄰居請求的驗(yàn)證感到滿意,它在鄰居高速緩存中將代理的MAC 地址、例如MAC_P2與第一主機(jī)320的IP地址關(guān)聯(lián)存儲。以后,它將使用此地址對與第一主 機(jī)320通信。如果第二主機(jī)360以前具有第一主機(jī)320的高速緩存條目,則步驟445由高速 緩存條目的更新組成。第二主機(jī)360隨后在步驟448構(gòu)建RSA簽名。如在步驟418中的情 況一樣,此RSA簽名可以是常規(guī)式,并且可根據(jù)圖2的RSA簽名格式200構(gòu)建。RSA簽名可 至少部分基于第二主機(jī)360的目標(biāo)鏈路層地址(TLLA)構(gòu)建,該地址是第二主機(jī)360的MAC 地址MAC_H2。在步驟451,第二主機(jī)360在子網(wǎng)320的鏈路上通過使用具有地址MAC_H2的 端口發(fā)送鄰居通告消息。在子網(wǎng)320的同一鏈路上連接的SEND代理380利用其自己的MAC 地址MAC_P2檢測鄰居通告消息。在步驟454,SEND代理380構(gòu)建另一代理簽名640以便在 向第一主機(jī)320轉(zhuǎn)發(fā)修改的鄰居通告的步驟中使用。如圖5所示的方法再次用于構(gòu)建代理 簽名640。從步驟454開始,作為例如TLLA MAC_H2等源MAC 612包含在原始鄰居通告中 的第二主機(jī)360的原始MAC地址被移到修改的鄰居通告中的補(bǔ)充字段630,并且SEND代理 380自己的MAC地址改寫鄰居通告的源MAC地址612。SEND代理380自己的MAC地址例如 可以是MAC_P1,如圖3所示,這是與第一主機(jī)320在同一子網(wǎng)上的SEND代理380的第2層 地址。也基于兩個地址字段610和630的當(dāng)前內(nèi)容添加代理簽名640。如在修改的鄰居請 求的情況一樣,修改的鄰居通告包括優(yōu)選根據(jù)PSI格式的代理簽名640。在SEND代理380在步驟454構(gòu)建了代理簽名640后,SEND代理380在步驟457通 過使用其具有地址MSC_P1的端口,將消息放在第一子網(wǎng)310的鏈路層上,向第一主機(jī)320 轉(zhuǎn)發(fā)修改的鄰居通告消息。在子網(wǎng)310的同一鏈路上連接的第一主機(jī)320利用其自己的 MAC地址MAC_H1檢測修改的鄰居通告消息。此時,第一主機(jī)320可能以前在可選步驟403 和406獲得了 SEND代理380的證書。如果在接收修改的鄰居通告后證書在第一主機(jī)320 中不存在,則第一主機(jī)320在步驟460和463獲得證書。隨后,在步驟466,第一主機(jī)320通 過使用在證書中包含的SEND代理380的公共密鑰來驗(yàn)證SEND代理380的RSA簽名。此驗(yàn) 證允許第一主機(jī)320斷定修改的鄰居通告由合法的節(jié)點(diǎn)發(fā)送。可選的是,第一主機(jī)320也 驗(yàn)證鄰居通告最初是由合法節(jié)點(diǎn)發(fā)起。為此,第一主機(jī)320可執(zhí)行步驟469和472。在步驟 469,第一主機(jī)320通過將源MAC 612字段改寫為在補(bǔ)充地址字段630中發(fā)現(xiàn)的值,例如,值 MAC_H2,重構(gòu)原始鄰居通告消息。在步驟472,驗(yàn)證第二主機(jī)360的RSA簽名620 ;由于鄰居 通告的原始源MAC地址612已返回到消息中的其原始位置,因此,此驗(yàn)證有可能提供。在步 驟475,第一主機(jī)在鄰居高速緩存中將例如MAC_P1等代理的MAC地址與第二主機(jī)360的IP 地址關(guān)聯(lián)存儲或更新?,F(xiàn)在將參照示出根據(jù)本發(fā)明的一個方面構(gòu)建的示范代理的圖7,描述代理的一個 示范構(gòu)造。代理700包括處理器710和至少兩個第2層連接720和730。代理700可包括 存儲器(未示出),但為描述本發(fā)明,代理700的操作可以是無存儲器的。如連網(wǎng)裝置領(lǐng)域 中所熟知的一樣,本發(fā)明的代理700可還包括在常規(guī)代理、橋接器或轉(zhuǎn)換器中找到的多出 許多的要素。為便于說明,本文未示出這些另外的要素。
處理器710例如可包括任何商用可編程處理器。第2層連接720和730每個可實(shí) 現(xiàn)為一個單一裝置或者不同的裝置以便接收(輸入)和發(fā)送(輸出)信令、消息和數(shù)據(jù)。代 理700連接到多個主機(jī);用于將代理700連接到主機(jī)的方式可不同,例如可提供與一個主機(jī) 的通信的一個第2層連接可能在以太網(wǎng)鏈路上,而到另一第2層連接上的另一主機(jī)的連接 可能在異步傳送模式(ATM)鏈路上。因此,代理700可包括用于在不同類型的多個鏈路上 連接的多個裝置。為便于陳述本發(fā)明,只示出了兩個第2層連接。 在操作中,代理700在例如第2層連接720等第一第2層連接上、在MAC地址MAC_ Pl上接收來自第一主機(jī)的ND消息。ND消息可以是ND請求或ND通告。第2層連接720通 知處理器710。處理器710通過先從ND消息讀取包括第一主機(jī)的原始MAC地址的第一字段 和包括第一主機(jī)的第一簽名的第二字段來修改ND消息。處理器710將第一主機(jī)的MAC地 址復(fù)制到第三字段,該字段添加到修改的ND消息。處理器710隨后在第一字段中將第一主 機(jī)的MAC地址改寫為另一第2層連接730的MAC地址,即,MAC_P2。處理器710最后在修改 的ND消息中插入代理700的第二簽名,該簽名基于在其當(dāng)前值中的第一字段、基于第一簽 名且基于第三字段。處理器710隨后請求第二第2層連接730在第二鏈路上向第二主機(jī)發(fā) 送修改的ND消息。圖8示出根據(jù)本發(fā)明的一個方面構(gòu)建的示范主機(jī)。主機(jī)800包括第2層連接820、 處理器810和存儲器840。由于主機(jī)800可表示各種各樣的不同裝置,因此,它可還包括顯 示器、鍵盤、鼠標(biāo)、若干另外的處理器及許多其它組件(未示出)。處理器810可專用于ND 信令,或者也可支持主機(jī)800的其它任務(wù)。存儲器840是能電擦除和重新編程以及可實(shí)現(xiàn) 為例如閃存或數(shù)據(jù)存儲模塊的非易失性存儲器或永久性存儲器。第2層連接820可實(shí)現(xiàn)為 一個單一裝置或者不同的裝置以便接收(輸入)和發(fā)送(輸出)信令、消息和數(shù)據(jù)。主機(jī) 800可包括不止一個第2層連接。因此,為便于說明對圖8進(jìn)行了簡化。存儲器840永久性地或半永久性地存儲與主機(jī)800本身有關(guān)的信息845。這包括 例如第2層連接820的第2層地址MAC_Hn、分配到主機(jī)800的IP地址、用于計(jì)算RSA簽名 的主機(jī)800的私有密鑰和公共密鑰及諸如此類。如本領(lǐng)域所熟知的一樣,分配到主機(jī)800 的IP地址可以是永久性的,或者可以由主機(jī)800當(dāng)前連接到的網(wǎng)絡(luò)分配。存儲器400也可 在表847中存儲諸如代理、路由器和其它主機(jī)等其它節(jié)點(diǎn)的IP地址、鏈路層地址和公共密 鑰。存儲器400還可存儲如本領(lǐng)域熟知的其它數(shù)據(jù)。在操作中,如果主機(jī)800需要發(fā)起與另一主機(jī)的通信,則它需要獲得用于與該主 機(jī)通信的鏈路層地址。它可先通過諸如路由查找表等熟知的方式獲得該主機(jī)的IP地址。為 獲得引導(dǎo)向另一主機(jī)的該鏈路層地址,它需要在其第2層連接820上發(fā)送ND請求。ND請求 包括MACJln地址,該地址又成為用于此事務(wù)的源鏈路層地址(SLLA)。處理器810從存儲器 840讀取SLLA、此主機(jī)800的IP地址和另一主機(jī)的IP地址及主機(jī)800的私有密鑰。處理 器基于這些和其它參數(shù)構(gòu)建RSA簽名,并且指示第2層連接820將ND請求放置在它附接到 的第2層鏈路上。第2層連接820可接收ND請求消息。它將此ND請求及其內(nèi)容轉(zhuǎn)發(fā)到處理器810。 如果ND請求包括PSI,則處理器810將它檢測為關(guān)于如下的指示由始發(fā)主機(jī)發(fā)起的ND請 求已被代理修改以及在ND請求中包括的鏈路層地址是代理的MAC地址而不是始發(fā)主機(jī)的 原始地址。處理器810從表847讀取代理的公共密鑰。如果找到代理的公共密鑰,則將它用于驗(yàn)證PSI中包括的代理簽名。如果此驗(yàn)證失敗,則只需丟棄ND請求。否則,處理器810 可優(yōu)選從PSI讀取發(fā)起了 ND請求的主機(jī)的SLLA。通過在ND請求內(nèi)將代理的MAC地址改寫 為始發(fā)主機(jī)的SLLA,處理器810可隨后驗(yàn)證始發(fā)主機(jī)的RSA簽名。RSA簽名的驗(yàn)證要求處 理器810從表847讀取始發(fā)主機(jī)的公共密鑰。假設(shè)RSA簽名有效,則處理器810在表847 中存儲代理的MAC地址及始發(fā)主機(jī)的IP地址,由此在表847內(nèi)創(chuàng)建用于始發(fā)主機(jī)的高速緩 存條目。處理器隨后從存儲器840讀取主機(jī)800自己的第2層地址MAC_Hn,并將它放置在 ND通告消息中目標(biāo)鏈路層地址(TLLA)字段內(nèi)。代理的MAC地址、主機(jī)800的IP地址及其 它參數(shù)也放置在ND通告中。處理器810計(jì)算RSA簽名并將它插入ND通告中。處理器810 隨后請求第2層連接820將ND通告放置在第2層鏈路上。
第2層連接820可接收ND通告。它將此ND通告及其內(nèi)容轉(zhuǎn)發(fā)到處理器810。 如果ND通告包括PSI,則處理器810將它檢測為關(guān)于如下的指示由做出響應(yīng)的主機(jī) (responding host)發(fā)起的ND通告已被代理修改以及在ND通告中包括的MAC地址或鏈路 層地址是代理的地址而不是做出響應(yīng)的主機(jī)的原始TLLA。處理器810從表847讀取代理的 公共密鑰。如果找到代理的公共密鑰,則將它用于驗(yàn)證PSI中包括的代理簽名。如果此驗(yàn) 證失敗,則只需丟棄ND通告。否則,處理器810可優(yōu)選從PSI讀取發(fā)起了 ND通告的主機(jī)的 TLLA。通過將代理的MAC地址改寫為做出響應(yīng)的主機(jī)的TLLA,處理器810隨后可驗(yàn)證做出 響應(yīng)的主機(jī)的RSA簽名。RSA簽名的驗(yàn)證要求處理器810從存儲器840讀取做出響應(yīng)的主 機(jī)的公共密鑰。假設(shè)RSA簽名有效,則處理器810在存儲器840中存儲代理的MAC地址及 做出響應(yīng)的主機(jī)的IP地址。雖然在附圖中顯示且在上面的詳細(xì)說明中描述了本發(fā)明的方法和代理的優(yōu)選實(shí) 施例的多個方面,但是,將理解本發(fā)明并不限于公開的實(shí)施例,而是在不脫離如隨附權(quán)利要 求陳述和定義的本發(fā)明的精神的情況下,能夠進(jìn)行多種重置、修改和替代。
權(quán)利要求
一種在通過代理連接的主機(jī)之間的安全鄰居發(fā)現(xiàn)的方法,所述方法包括以下步驟-在所述代理從第一主機(jī)接收預(yù)期發(fā)往第二主機(jī)的鄰居發(fā)現(xiàn)(ND)消息,所述ND消息包括所述第一主機(jī)的因特網(wǎng)協(xié)議(IP)地址、所述第一主機(jī)的第二層地址及至少部分基于所述第一主機(jī)的所述第二層地址的所述第一主機(jī)的第一簽名;-在所述代理通過以下方式修改所述ND消息-將所述第一主機(jī)的所述第二層地址改寫為所述代理的第二層地址;-插入至少部分基于所述代理的所述第二層地址的所述代理的第二簽名;以及-向所述第二主機(jī)發(fā)送所述修改的ND消息。
2.如權(quán)利要求1所述的方法,還包括以下步驟 -在所述第二主機(jī)接收所述修改的ND消息;-在所述第二主機(jī)驗(yàn)證所述第二簽名;以及-在所述第二主機(jī)將所述代理的所述第二層地址與所述第一主機(jī)的所述IP地址相關(guān) 存儲。
3.如權(quán)利要求2所述的方法,還包括以下步驟-在所述第二主機(jī)驗(yàn)證所述第二簽名前,從信任錨點(diǎn)獲得所述代理的公共密鑰。
4.如權(quán)利要求2所述的方法,還包括以下步驟-在所述代理從所述第二主機(jī)接收數(shù)據(jù)分組,所述數(shù)據(jù)分組包括所述第一主機(jī)的IP地 址和所述代理的所述第二層地址。
5.如權(quán)利要求1所述的方法,其中-在所述代理修改所述ND消息還包括從所述ND消息將所述第一主機(jī)的所述第二層 地址復(fù)制到另外的消息字段中。
6.如權(quán)利要求5所述的方法,還包括以下步驟 -在所述第二主機(jī)接收所述修改的ND消息;-在所述第二主機(jī)驗(yàn)證所述第二簽名;-通過將所述代理的所述第二層地址改寫為所述第一主機(jī)的所述第二層地址,在所述 第二主機(jī)重構(gòu)所述ND消息;-驗(yàn)證所述第一主機(jī)的所述第一簽名;以及-在所述第二主機(jī)將所述代理的所述第二層地址與所述第一主機(jī)的所述IP地址相關(guān) 存儲。
7.如權(quán)利要求1所述的方法,其中-所述代理的所述第二簽名還基于所述第一主機(jī)的所述IP地址、所述第二主機(jī)的IP地 址、所述第一主機(jī)的所述第二層地址及所述第一主機(jī)的所述第一簽名。
8.如權(quán)利要求7所述的方法,其中-所述代理的所述第二簽名基于所述ND消息的完整信息字段。
9.一種在主機(jī)中安全接收鄰居發(fā)現(xiàn)(ND)消息的方法,所述方法包括以下步驟-在所述主機(jī)中接收包括代理的第二層地址、對端主機(jī)的第二層地址、所述對端主機(jī)的 簽名及所述代理的簽名的所述ND消息;-通過使用所述代理的公共密鑰,驗(yàn)證所述代理簽名;-通過將所述代理的所述第二層地址替換為所述對端主機(jī)的所述第二層地址,修改所述ND消息;-通過使用所述對端主機(jī)的公共密鑰,驗(yàn)證所述對端主機(jī)的所述簽名;以及 -將所述代理的所述第二層地址存儲為用于與所述對端主機(jī)通信的第二層地址。
10.一種代理,包括_第一第二層連接,用于從第一主機(jī)接收鄰居發(fā)現(xiàn)(ND)消息; -處理器,用于從所述第一第二層連接接收所述ND消息和用于修改所述ND消息,所述 處理器通過以下方式修改所述ND消息-從所述ND消息讀取第一字段和第二字段,所述第一字段包括至少一個原始地址,所 述第二字段包括所述第一主機(jī)的第一簽名,-從所述收到的ND消息將至少一個原始地址復(fù)制到第三字段中, -在所述第一字段中將所述至少一個原始地址之一改寫為所述代理的地址, -插入基于所述代理的所述地址且基于所述至少一個原始地址的所述代理的第二簽 名;以及-第二第二層連接,用于向第二主機(jī)發(fā)送所述修改的ND消息。
11.如權(quán)利要求10所述的代理,其中-由所述代理改寫的所述至少一個原始地址是所述第一主機(jī)的第二層地址;以及 -所述代理的所述地址是第二層地址。
12.—種主機(jī),包括-存儲器,用于存儲對端主機(jī)的公共密鑰、代理的公共密鑰和用于與所述對端主機(jī)通信 的第二層地址;-第二層連接,用于在鏈路上從代理接收鄰居發(fā)現(xiàn)(ND)消息,所述ND消息包括所述代 理的第二層地址、所述對端主機(jī)的第二層地址、所述對端主機(jī)的簽名及所述代理的簽名;以 及-處理器,用于-通過使用所述代理的所述公共密鑰,驗(yàn)證所述代理的所述簽名, -通過將所述代理的所述第二層地址替換為所述對端主機(jī)的所述第二層地址,修改所 述ND消息,-通過使用所述對端主機(jī)的所述公共密鑰,驗(yàn)證所述對端主機(jī)的所述簽名,以及 -在所述存儲器中將所述代理的所述第二層地址存儲為用于與所述對端主機(jī)通信的所 述第二層地址。
13.如權(quán)利要求12所述的主機(jī),其中-所述第二層連接還用于在所述鏈路上發(fā)送ND響應(yīng); -所述存儲器還用于存儲所述主機(jī)的第二層地址和私有密鑰;以及 -所述處理器還用于從所述存儲器讀取所述私有密鑰和所述主機(jī)的所述第二層地址, 用于將所述私有密鑰用于做出基于所述主機(jī)的所述第二層地址的所述主機(jī)的簽名,用于做 出包括所述主機(jī)的所述第二層地址和所述簽名的所述ND響應(yīng),以及用于請求所述第二層 連接發(fā)送所述ND響應(yīng)。
全文摘要
主機(jī)通過代理連接時提供用于在主機(jī)之間保護(hù)鄰居發(fā)現(xiàn)(ND)信令安全的方法、代理和主機(jī)。第一主機(jī)發(fā)送包括基于第一主機(jī)的地址的第一簽名的原始ND消息。代理去除第一主機(jī)的地址,并在修改的ND消息中替代為其自己的地址。隨后,代理在新字段中放置第一主機(jī)的地址的副本,并構(gòu)建基于代理自己的地址和新字段的代理簽名。新字段和代理簽名添加到修改的ND消息。第二主機(jī)從代理接收修改的ND消息并驗(yàn)證代理簽名。第二主機(jī)重構(gòu)原始ND消息內(nèi)容,并隨后驗(yàn)證第一簽名。
文檔編號H04L29/06GK101843075SQ200880114865
公開日2010年9月22日 申請日期2008年10月8日 優(yōu)先權(quán)日2007年11月1日
發(fā)明者S·克里什南 申請人:愛立信電話股份有限公司