姚志強,竺智榮,葉幗華
(1.福建師范大學計算機與網(wǎng)絡空間安全學院,福建 福州 350108;2.福建省公共服務大數(shù)據(jù)挖掘與應用工程技術(shù)研究中心,福建 福州 350108)
動態(tài)主機設置協(xié)議(DHCP,dynamic host configuration protocol)簡化了訪問網(wǎng)絡的配置過程,方便了網(wǎng)絡管理員對IP 地址的管理,有效緩解了由于IPv4 地址不足所導致的問題,但DHCP 所受到的安全威脅也越來越嚴重,它在設計之初并未充分考慮安全問題。當互聯(lián)網(wǎng)呈現(xiàn)高移動特性時,需由配套的安全協(xié)議來保障DHCP 安全,其中防范中間人攻擊成為DHCP 安全保障體系中最重要的問題[1-2]。中間人攻擊是指敵手隱藏在2 個或多個受害者之間,利用欺騙、冒充等手段截取信道中的數(shù)據(jù),破壞數(shù)據(jù)的機密性、完整性和可用性[3]。如圖1 所示,當2 個受害者開始傳輸公鑰M1和M2而被敵手截獲并替換成M′1和M′2時,敵手冒充受害者參與通信。這種類型的攻擊由來已久,理論上可以發(fā)生在每一次的信息交互中,既可以獨立的攻擊方式造成危害,也可作為實施更高級攻擊之前的準備。例如在當前快速發(fā)展的5G 或6G 網(wǎng)絡時代,自動駕駛和車路協(xié)同應用場景網(wǎng)絡部署具有廣泛密集與異構(gòu)融合的特點,相關(guān)設備均具有高移動性,將會在不同制式的開放網(wǎng)絡下頻繁切換配置信息,這對DHCP 的安全性和效率都提出了更高的要求。
圖1 典型的中間人攻擊
為此,本文研究一種輕量化的DHCP安全方案,防止惡意的第三方攻擊,同時考慮效率和開銷并兼容原有協(xié)議,做到在原有基礎設施上的有效部署和運行。隨著互聯(lián)網(wǎng)協(xié)議第6 版(IPv6,Internet protocol version 6)應用進程,所提方案可兼容IPv6 的部分場景,實現(xiàn)DHCP 第4 版(DHCPv4)到DHCP 第6 版(DHCPv6)的平滑演進。所提方案分為2 個部分:執(zhí)行協(xié)議前的實體認證與密鑰協(xié)商,以及協(xié)議主體中的消息認證。前者利用密碼學理論進行身份認證并產(chǎn)生會話密鑰,后者通過密鑰生成相關(guān)簽名以保證消息的完整性和可用性。此外,所提方案在提供目標安全的前提下考慮協(xié)議執(zhí)行效率,以達到輕量化的目的。本文的主要貢獻總結(jié)如下。
1) 提出一種輕量級的安全DHCP,實體間的雙向認證可以抵抗中間人攻擊,數(shù)字簽名可以確保消息的完整性和合法性。此外,該協(xié)議可以同時兼容DHCPv4 與DHCPv6 設置。
2) 分析協(xié)議安全性,經(jīng)分析該協(xié)議可以有效抵御中間人攻擊、參數(shù)竊取攻擊,并能防止前后密鑰泄露。實驗結(jié)果表明,該協(xié)議相較于現(xiàn)有方案具有更高的執(zhí)行效率。
DHCP 所面臨的中間人攻擊通常是惡意的服務器給出錯誤的配置信息,使客戶機所得到的服務降級,或是重定向流量為更高級的攻擊做準備;也可以是惡意的客戶機非法占用服務器的網(wǎng)絡資源,使合法客戶機無法進行正常的網(wǎng)絡活動。國際互聯(lián)網(wǎng)工程任務組在DHCP 中加入了身份驗證選項[4],為DHCP 身份驗證提供了2 種方法:延遲身份認證和配置令牌,但是前者容易受到拒絕服務攻擊且不能用于域間認證,后者存在大量的密鑰管理問題且未得到廣泛使用。文獻[5]提出S-DHCP 方案來強化DHCP 的安全性,通過綜合運用橢圓曲線密碼技術(shù)、單向哈希函數(shù)與數(shù)字簽名技術(shù),提供消息認證和實體認證,但該方案基于一個預共享的秘密,與延遲認證沒有本質(zhì)區(qū)別,同樣存在密鑰的管理問題,還需配合傳統(tǒng)安全信道,影響效率與增加成本,并且在密鑰協(xié)商階段缺少服務器對發(fā)起者的身份驗證以及對消息新鮮性的檢測,容易遭受重放攻擊及其帶來的拒絕服務攻擊。文獻[6]提出應用橢圓加密曲線提高DHCP保護程度的方法,包括密鑰協(xié)商算法、消息驗證碼和消息令牌來保證完整性、防止重放攻擊。文獻[7]的安全認證模型OTP_SAM 結(jié)合當前系統(tǒng)時間來計算一次性密鑰,利用哈希算法生成消息認證碼,通過驗證Option 字段中的認證碼進行安全認證;該模型具有良好的兼容性,不用修改原數(shù)據(jù)分組長度,客戶機可以自主選擇是否開啟該模塊功能,但是基于時間的會話密鑰要求客戶機與服務器的時鐘同步,其實現(xiàn)條件較高。
另一類DHCP 安全方案不采用DHCP 驗證選項。如文獻[8]提出基于公鑰密碼學和數(shù)字證書的認證方案,使用不同的密鑰長度配合不同的證書類型測試通信開銷和處理時間,但客戶機無法檢測服務器的證書撤銷狀態(tài)。文獻[9]提出針對耗竭攻擊的檢測方案,通過收集正常時段DHCP 請求的概率分布作為標準來檢測異常情況,但對異常數(shù)據(jù)敏感,易出現(xiàn)誤報現(xiàn)象。文獻[10]收集和標記DHCP 欺騙產(chǎn)生的網(wǎng)絡流量,為定量分析提供了數(shù)據(jù)支持,并討論若干欺騙攻擊行為引起的流量異常表現(xiàn)。文獻[11]提出一種基于隱馬爾可夫模型的惡意域名檢測方案,配合Baum-Welch 算法和Viterbi 算法的馬爾可夫模型可以快速準確分類未知域名,從而實現(xiàn)有效檢測,然而,因訓練數(shù)據(jù)的隨機性和不確定性,建模過程中容易產(chǎn)生誤差。
綜上所述,現(xiàn)有方案普遍存在難以部署、與原始協(xié)議不兼容以及密鑰管理等問題,本文方案將針對這些問題展開研究,并在滿足目標安全性的前提下提升方案效率,以達到輕量化的目的。
本節(jié)主要描述方案的威脅模型和設計目標。首先,本文方案考慮4 種類型的安全威脅。
1) 惡意服務器攻擊。敵手假冒合法的DHCP,服務器向客戶機提供虛假的網(wǎng)絡配置,從而使客戶機服務降級,無法正常享受網(wǎng)絡服務;或借此重定向客戶機流量到非法的釣魚網(wǎng)站,為進一步的攻擊做準備。
2) 惡意客戶機攻擊。敵手假冒合法的客戶機向DHCP 服務器請求配置相關(guān)參數(shù),從而非法占用網(wǎng)絡服務;或進一步發(fā)動耗竭攻擊耗盡服務器有限的IP 地址,使合法客戶機無法享受網(wǎng)絡服務。
3) 參數(shù)竊取攻擊。敵手攻擊服務器并竊取數(shù)據(jù)庫中的客戶端信息,例如網(wǎng)絡標識、密碼與驗證參數(shù)等,最后嘗試使用這些信息冒充合法客戶機。
4) 前/后向安全威脅。對應到本文場景指的是,當會話密鑰泄露時,敵手以此推算出上一個會話密鑰或下一個會話密鑰,同時獲得受其保護的內(nèi)容。
其次,本文方案旨在實現(xiàn)3 個方面的設計目標。
1) 安全目標。方案要能抵御威脅模型中定義的攻擊類型。
2) 效率目標。在達到安全目標的前提下,較同類型方案具有更高的執(zhí)行效率。
3) 兼容目標。方案要與DHCP 原始協(xié)議具有良好的兼容性,具體表現(xiàn)在:①滿足協(xié)議基本格式要求;②不引入新的狀態(tài)、消息類型和參與方;③方案部署后可選擇是否啟用。
本節(jié)主要構(gòu)造一種防范DHCP攻擊的密鑰協(xié)商算法,包括系統(tǒng)初始化、客戶機注冊和密鑰協(xié)商等過程。在此之前,介紹該算法涉及的主要符號和含義,如表1 所示。
表1 符號說明
1) 系統(tǒng)初始化
①橢圓曲線初始化。選定2 個大素數(shù)p和q,構(gòu)造有限域Fp上的橢圓曲線y2=x3+ax+b,其中a、b滿足4a3+27b2≠0(modp),選定階為q的基點P構(gòu)成加法循環(huán)群G,選擇單向函數(shù)。
② 系統(tǒng)參數(shù)初始化。選擇服務器Si的私鑰,計算公鑰Sp。
2) 客戶機注冊
①客戶機發(fā)出注冊申請??蛻魴C或網(wǎng)絡管理員為客戶機Ui選擇網(wǎng)絡標識IDi,客戶機選擇部分私鑰,計算部分公鑰Xi以及,并將發(fā)送給服務器Si,其中MAC 是設備的物理地址??蛻魴C可以通過廣播同時向多個服務器注冊,也可以按照優(yōu)先級向指定的服務器注冊。
② 服務器驗證注冊信息。服務器收到消息后先判斷是否注冊過,有則跳過,沒有則選擇隨機數(shù),并計算,存儲{IDi,MAC,c1},同時將發(fā)送給客戶機。
③客戶機對服務器進行反向驗證。客戶機在收到回復后首先判斷AUi是否是新鮮的,接著驗證等式是否成立,若驗證失敗,則重新申請;若驗證成功,則結(jié)合2 個部分私鑰計算客戶機的完整私鑰di和公鑰iD,存儲注冊成功。
客戶機注冊過程如圖2 所示。
圖2 客戶機注冊過程
3) 密鑰協(xié)商
② 服務器驗證客戶機信息。服務器在收到客戶機的協(xié)商請求后首先判斷是否是新鮮的,接著驗證等式是否成立,若不成立,則拒絕;若成立,則接收并計算k2,同時選擇隨機數(shù),并計算Auth1,存儲,然后將{Si,c3,Auth1}發(fā)送給客戶機。
③客戶機對服務器進行反向驗證??蛻魴C在接收到服務器發(fā)來的信息后,首先驗證Auth1=c2c3Sp是否成立,若不成立,則重新發(fā)起申請;若成立,則計算skA以及Auth2,并將{Auth2}發(fā)送給服務器。
④ 服務器進行最后確認。服務器驗證Auth2=H3(1,IDi,Si,k2)是否成立,若不成立,則拒絕;若成立,則計算skB。協(xié)商完成,協(xié)商所產(chǎn)生的會話密鑰為skA=skB。
協(xié)商過程如圖3 所示。
圖3 密鑰協(xié)商
為使新的方案能夠匹配現(xiàn)行DHCP,需遵循RFC 3118 中定義的認證選項格式[4],因此,在本文方案應用時將Protocol 字段置為6,并將Algorithm置為8,同時將驗證信息附加在options180 中,采用默認RDM(replay detection method)字段值,RD(replay detection)字段使用計數(shù)器模式來抵抗重放攻擊。此外,設置簽名默認長度為256 B,滿足DHCP長度限制[12-14]。
出于兼容DHCPv4 與DHCPv6 的考慮,方案應遵循RFC 3315 中的相關(guān)定義。DHCPv6 是DHCP針對IPv6 的改進,IPv6 地址分配方式大致可以分為2 種:無狀態(tài)地址自動配置和有狀態(tài)地址自動配置[15]。DHCPv6 是一種有狀態(tài)地址自動配置協(xié)議[16],在配置過程中服務器分配一個完整的IPv6地址給主機,并提供DNS 服務器地址等其他配置信息,將分配的地址與客戶機進行綁定,從而增強了網(wǎng)絡的可管理性。DHCPv6 協(xié)議下客戶機與服務器的交互分為4 步交互與2 步快速交互,其報文與DHCPv4 類似,具有對應關(guān)系[17]。
當客戶機與服務器完成第4 節(jié)的注冊與密鑰協(xié)商過程,生成skA與skB后便可發(fā)起DHCP 服務,如圖4 所示,詳述過程如下。
圖4 DHCPv4/DHCPv6 消息認證
①客戶機發(fā)起 DHCP 請求??蛻魴C發(fā)送Discover/Solicit 報文,并在報文的相關(guān)字段中表明啟用本文方案,要求服務器進行消息認證;如果客戶機啟用2 步快速分配,則還需在報文中攜帶Rapid Commit 選項(僅在DHCPv6 中)。
② 服務器處理客戶機請求。收到報文的服務器首先判斷客戶機選擇的請求方案,如果采用本文方案,則先驗證RD 字段是否符合標準,不符合則跳過,符合則開始準備Offer/Advertise 報文;若消息中攜帶有Rapid Commit 選項,并且服務器支持快速分配過程,則跳到步驟④開始構(gòu)建Reply 報文,否則繼續(xù)。Offer/Advertise 報文中包含提供給客戶機的IP 地址、租賃期以及默認網(wǎng)關(guān)等配置信息,同時更新RD 字段。此外,為了認證消息,需要將服務器的簽名附加在 Offer/Advertise 報文的options180 字段中,簽名為SS1=H4(IDi,Si,skB,MAC,IP,GW,RD1),其中MAC 是設備的物理地址,此外,還包含之前協(xié)商的會話密鑰以及主要配置信息,同時加入RD 值保證消息的新鮮性。
③客戶機驗證服務器。收到Offer/Advertise消息的客戶機首先檢測RD 值是否嚴格高于舊的RD 值,若不滿足,則丟棄;若滿足,則提取報文中的配置信息,并計算CS1=H4(IDi,Si,skA,MAC,IP,GW,RD1),驗證CS1=SS1是否成立,若不成立,則丟棄;若成立,則開始準備Request報文。Request 報文是客戶機用來確認所要申請的具體IP 地址以及其他網(wǎng)絡參數(shù),其主要內(nèi)容與Offer/Advertise 報文類似,同時更新RD 值,并計算CS2=H4(IDi,Si,skA,MAC,IP,GW,RD2),附加在Request 報文中,發(fā)送給服務器。
④ 服務器驗證客戶機。服務器收到消息后首先驗證RD 是否符合要求,同時提取報文中的配置信息計算SS2=H4(IDi,Si,skB,MAC,IP,GW,RD2),驗證SS2=CS2是否成立,若不成立,則丟棄;若成立,則用相同的方法構(gòu)建ACK/Reply 報文,發(fā)送給客戶機。
⑤ 客戶機最后確認??蛻魴C在接收到ACK/Reply 報文后用相同的方法進行驗證,若驗證失敗,則丟棄;若驗證成功,則開始配置相關(guān)網(wǎng)絡參數(shù)。
對DHCPv6,上述過程和圖4 中SS1、CS1、CS2和SS2的計算是將IDi和Si分別替換為客戶機設備唯一標識符 DUIDc 和服務器設備唯一標識符DUIDs。另外,在實際應用中會有更多的狀態(tài)和過程,都可以用相同的方式制作簽名。
本文方案的安全性體現(xiàn)在2 個方面:密鑰協(xié)商過程的安全性以及DHCP認證過程中簽名的不可偽造性,而后者的安全性依賴于前者的會話密鑰安全,故本節(jié)主要對協(xié)商算法進行安全分析。
BAN 邏輯是一種形式化的分析方法,普遍用來分析協(xié)議的正確性和安全性。本節(jié)將使用BAN 邏輯對密鑰協(xié)商算法進行形式化分析?,F(xiàn)將符號表示如下:C和S表示主體,Kij表示主體i和j之間共享的密鑰,Ki和分別表示i的公鑰與私鑰。
由于協(xié)議具有對稱的結(jié)構(gòu),因此C相信S一定也能得出相同的信仰,即
根據(jù)以上推理,得出全部4 個安全目標,達到本文方案預期目的。
1) 抗惡意服務器攻擊
在客戶機注冊階段,客戶機Ui首先通過檢查參數(shù)的新鮮性來抵抗重放攻擊;接著通過參數(shù)來檢測參數(shù)是否被篡改,同時驗證服務器的身份,敵手若想偽造,需捕獲參數(shù)和參數(shù),通過服務器的公鑰Sp,利用Sp=SsP反解出私鑰Ss,為橢圓曲線上的離散對數(shù)問題;在密鑰協(xié)商階段,客戶機通過參數(shù)Auth1來檢測參數(shù)c3是否被篡改,同時驗證服務器的身份,敵手若想偽造Auth1,需捕獲參數(shù)c3和參數(shù),以同樣的方法求解私鑰Ss,這在計算上是不可行的[18-19]。
2) 抗惡意客戶機攻擊證明
在密鑰協(xié)商階段,服務器Si為首次驗證客戶機,通過檢查參數(shù)FUi的新鮮性來抵抗重放攻擊;接著通過參數(shù)cd 來檢測參數(shù)FUi是否被篡改,同時驗證客戶機的身份,敵手若想偽造cd,需要捕獲參數(shù)c2和客戶機私鑰di,但這2 個參數(shù)都未在信道中傳輸過,只能通過FUi=c2P和Di=diP進行反解,也是離散對數(shù)問題;在密鑰協(xié)商階段,服務器Si第二次驗證客戶機是通過參數(shù)Auth2來判斷客戶機身份,敵手若想偽造Auth2,需要同時捕獲參數(shù)IDi和參數(shù)Si,以計算私鑰di是不可行的。
3) 抗參數(shù)竊取攻擊證明
服務器中存有客戶機的IDi和MAC,但缺少客戶機私鑰則無法完美冒充合法客戶機,客戶機私鑰由客戶機自身和服務器兩部分選取產(chǎn)生,只竊取一部分則無法計算出完整私鑰。
4) 防前/后向安全威脅證明
會話密鑰中除客戶機、服務器的各自私鑰外,還包含客戶機與服務器各自選擇的隨機數(shù),而隨機數(shù)的選取依賴于所使用的偽隨機數(shù)算法,如果客戶機與服務器采用不同的偽隨機數(shù)算法,敵手想要同時破解難度很大;即使敵手以極小的概率猜測出隨機數(shù)變化的規(guī)律,想要影響前/后安全性還需要同時獲得客戶機與服務器的私鑰,所以認為會話密鑰的產(chǎn)生是動態(tài)變化的,即使敵手獲得某一時刻的密鑰也不會造成前/后向的安全威脅。
本文實驗分析利用開放密碼庫OpenSSL 測試方案的性能[20],在2.6 GHz 處理器和8 GB 內(nèi)存的Windows 10 環(huán)境上運行。忽略前期的密鑰協(xié)商,對比方案主體部分與原始DHCP 的時間開銷。從圖5中可以看出,加入數(shù)字簽名和驗證給協(xié)議帶來一定的時延。雖然本文方案在原始協(xié)議的基礎上會引入一些安全開銷,但與此同時也提供了可靠的安全性,數(shù)字簽名與消息摘要的加入使參與方可以進行實體認證與消息認證,安全分析也表明其能有效緩解中間人攻擊的威脅,并且其帶來的額外開銷是輕量的。
圖5 本文方案與原始方案的性能對比
本文方案與文獻[5]的CA、S-DHCP 方案和文獻[2]的DSec 方案的仿真數(shù)據(jù)如圖6 所示。從圖6可以看出,本文方案在性能上要明顯優(yōu)于另外3 種方案,且隨著客戶機數(shù)量的增加而越來越明顯。從這些方案的安全性上看,本文方案與S-DHCP 方案默認使用基于橢圓曲線的256 bit 長度的密鑰,CA方案與DSec 方案默認使用基于RSA 的3 072 bit 長度的密鑰,兩者的密鑰安全性相當[21-22],然而CA方案中的證書長度很容易超出DHCP 限制,需將消息分段傳輸,因而增加了遭遇中間人攻擊的風險;S-DHCP 方案在密鑰協(xié)商階段缺少服務器對發(fā)起者的身份驗證和消息新鮮性的檢測,容易遭受重放攻擊及其帶來的拒絕服務攻擊;DSec 與S-DHCP 方案的前提都是基于一個預共享的秘密,與延遲認證同樣存在密鑰的管理問題。
圖6 本文方案與不同方案的性能對比
綜上所述,本文方案能夠有效緩解中間人攻擊的威脅,且在性能表現(xiàn)上優(yōu)于同類型方案,是更加輕量的安全方案。
本文針對互聯(lián)網(wǎng)中普遍存在的中間人攻擊問題,以DHCP 為背景,提出安全快速的交互方案,旨在緩解有關(guān)網(wǎng)絡攻擊和安全威脅,即通過實體認證與密鑰協(xié)商,結(jié)合數(shù)字簽名與摘要進行消息認證。協(xié)商算法結(jié)構(gòu)緊湊,通過雙向認證防范攻擊行為,有較高的執(zhí)行效率;使用協(xié)商后的會話密鑰構(gòu)造數(shù)字簽名,簽名包含配置參數(shù)保持消息關(guān)聯(lián)性,且容易附著在常規(guī)協(xié)議中對信息進行完整性和可靠性驗證;遵循格式規(guī)范,不引入新的狀態(tài)與參與方,使方案可以同時兼容DHCPv4 與DHCPv6;通過安全性分析本文方案防御攻擊的能力,通過性能分析其執(zhí)行效率的提高程度。下一步工作是研究在保證安全性的前提下如何減少參與方之間的交互次數(shù)。