劉 鏑 徐聞含 王文東 李大偉 關(guān)振宇 劉建偉
(北京航空航天大學網(wǎng)絡(luò)空間安全學院 北京 100191)
網(wǎng)絡(luò)空間測繪是指對網(wǎng)絡(luò)空間中的各種資源進行探測、獲取資源的各種屬性、分析資源之間的關(guān)系,并通過邏輯拓撲或網(wǎng)絡(luò)地圖等形式將資源屬性和分析結(jié)果呈現(xiàn)出來的過程。其目的在于獲取網(wǎng)絡(luò)空間資源屬性的整體態(tài)勢,掌握資源之間的交互關(guān)系和發(fā)展趨勢,以及感知網(wǎng)絡(luò)空間的動態(tài)變化。網(wǎng)絡(luò)空間測繪的對象為網(wǎng)絡(luò)空間中的各種物理資源和虛擬資源,而探測的范圍可能為整個互聯(lián)網(wǎng)、某個局域網(wǎng)或一個特定的網(wǎng)絡(luò)范圍。
之前的研究[1–3]總結(jié)了網(wǎng)絡(luò)空間資源測繪的相關(guān)概念和技術(shù),但未給出具體的測繪實例。傳統(tǒng)的資源測繪技術(shù)通過發(fā)送請求數(shù)據(jù)包來獲取目標資源的IP地址、端口號等信息,使用的工具包括Nmap[4], Zmap[5], Masscan[6], Shodan[7]等。但這些測繪工具只集中于網(wǎng)絡(luò)層測繪,無法獲得物理設(shè)備獨有的物理特性。一旦目標設(shè)備更改其IP地址等虛擬屬性,這些工具會視其為新設(shè)備,導(dǎo)致資源丟失或重復(fù)測繪,并且不能對目標設(shè)備進行持續(xù)追蹤。本文提出的測繪框架專注于物理層,通過真實局域網(wǎng)環(huán)境下的物理資源測繪,提取資源的物理指紋、構(gòu)建資源畫像、獲取資源間行為關(guān)系,并準確標識和追蹤目標資源。
該框架為暗網(wǎng)測繪帶來新的方法,因為某些配置了多個網(wǎng)卡的設(shè)備常同時接入互聯(lián)網(wǎng)和暗網(wǎng),但它們在不同網(wǎng)絡(luò)中表現(xiàn)出來的身份及屬性不同,難以通過傳統(tǒng)測繪方法標識。然而,這些設(shè)備在每次連接不同網(wǎng)絡(luò)時都使用相同的內(nèi)存模塊,因此基于內(nèi)存模塊的物理指紋不會改變。在互聯(lián)網(wǎng)和暗網(wǎng)中分別進行測繪,通過比較設(shè)備唯一的物理指紋來識別位于互聯(lián)網(wǎng)和暗網(wǎng)邊界的設(shè)備,實現(xiàn)暗網(wǎng)的準確測繪。
本框架也可用于組織內(nèi)部的網(wǎng)絡(luò)準入管理。組織內(nèi)部網(wǎng)絡(luò)實行白名單準入機制,只有經(jīng)過認證的設(shè)備才能夠獲得網(wǎng)絡(luò)訪問權(quán)限。組織管理員為組織內(nèi)每臺白名單設(shè)備生成設(shè)備指紋,唯一標識該設(shè)備。由于每個動態(tài)隨機存取存儲器(Dynamic Random-Access Memory, DRAM)都不可克隆,攻擊者將無法生成合法指紋以偽造白名單設(shè)備。即使攻擊者物理接觸白名單設(shè)備并將其DRAM更換至惡意設(shè)備中,也會由于不同CPU緩存模式與內(nèi)存地址映射的差異而導(dǎo)致無法生成合法物理不可克隆函數(shù)(Physical Unclonable Function, PUF)響應(yīng),從而保障網(wǎng)絡(luò)準入機制的正常運行。
此外,本框架還可用于軟件授權(quán)場景,收費軟件可能會限制單個授權(quán)下的可用設(shè)備數(shù),利用本框架唯一標識設(shè)備,有效防止使用者篡改設(shè)備序列號,生成多個相同指紋的設(shè)備,以繞過設(shè)備數(shù)限制。
(1)物理指紋獲取。主要存在兩個難點:一是由于測繪目標是未知的且無法物理接觸,需要通過一種可靠的遠程代碼執(zhí)行和數(shù)據(jù)回傳的方法來完成測繪;二是需要獲取能唯一標識目標設(shè)備的物理指紋,且保證獲取的指紋是穩(wěn)定和可重復(fù)的。同時,生成物理指紋的過程不應(yīng)該影響目標設(shè)備的正常運行,例如導(dǎo)致目標設(shè)備重啟或服務(wù)異常。
(2)設(shè)備動態(tài)標識和追蹤。完成測繪后,雖然可以得到資源的畫像和拓撲關(guān)系,但網(wǎng)絡(luò)空間中的數(shù)據(jù)流動和資源變化隨時都在發(fā)生。因此,需要對資源進行定期測繪來更新數(shù)據(jù)并掌握網(wǎng)絡(luò)空間的發(fā)展態(tài)勢。IP地址、MAC地址等虛擬屬性是易于更改的,但我們希望通過物理指紋持續(xù)標識和追蹤目標設(shè)備,忽略這些變動帶來的影響。
(1)本文提出一種基于物理不可克隆函數(shù)(PUF)的測繪框架。通過設(shè)計的PUF算法提取目標設(shè)備的物理指紋,并結(jié)合設(shè)備的其他屬性構(gòu)建設(shè)備畫像,并使用知識圖譜的形式實現(xiàn)測繪結(jié)果的可視化。
(2)本文實現(xiàn)了一個基于Rowhammer的DRAM PUF,可在配備第四代雙倍速率(Data Rate Fourth,DDR4)內(nèi)存和運行Linux操作系統(tǒng)的個人電腦上運行。訪問內(nèi)存模塊運行PUF實現(xiàn)代碼即可,無需額外添加硬件。
(3)本文在兩種指標下評估了Rowhammer PUF的性能。評估結(jié)果表明,所實現(xiàn)的PUF表現(xiàn)出接近理想值的唯一性和良好的可靠性,能夠完美地區(qū)分不同的設(shè)備。據(jù)我們所知,本文所做工作是第1個在個人電腦上實現(xiàn)和評估Rowhammer PUF的研究。
(4)本文在局域網(wǎng)環(huán)境中進行了3次測繪實驗。實驗結(jié)果表明,即使目標設(shè)備更改了MAC地址、IP地址甚至操作系統(tǒng)等虛擬屬性,通過物理指紋仍能對目標設(shè)備進行識別和跟蹤。
網(wǎng)絡(luò)空間測繪是一個探測、分析、繪制和應(yīng)用的完整過程[1]。首先,通過各種探測技術(shù)獲取網(wǎng)絡(luò)空間物理資源和虛擬資源的數(shù)據(jù),包括資源屬性值等相關(guān)信息。其目的是為后續(xù)的分析過程提供基礎(chǔ)數(shù)據(jù)。例如,使用網(wǎng)絡(luò)掃描軟件獲得目標設(shè)備的IP地址、MAC地址、端口號、流量包等數(shù)據(jù)。分析是從探測得到的數(shù)據(jù)中提取資源屬性,對資源進行標識,構(gòu)建資源畫像的過程。其目的是形成關(guān)于網(wǎng)絡(luò)空間資源的知識庫,為系統(tǒng)提供大網(wǎng)測繪數(shù)據(jù)、互聯(lián)網(wǎng)暴露資產(chǎn)及其脆弱性的數(shù)據(jù)等,有助于網(wǎng)絡(luò)資產(chǎn)云監(jiān)測、漏洞響應(yīng)等業(yè)務(wù)的開展[2]。例如,通過數(shù)據(jù)挖掘等手段對探測得到的數(shù)據(jù)進行分析,提取出關(guān)鍵詞和主題,構(gòu)建出有關(guān)網(wǎng)絡(luò)安全的知識庫。可視化是基于網(wǎng)絡(luò)空間資源的屬性和映射關(guān)系構(gòu)造網(wǎng)絡(luò)拓撲并進行可視化的過程。其目的是動態(tài)顯示網(wǎng)絡(luò)空間資源的分布和狀態(tài),幫助用戶理解網(wǎng)絡(luò)空間的結(jié)構(gòu)和運作機制。例如,使用圖論等算法構(gòu)建網(wǎng)絡(luò)拓撲,以便直觀地展示網(wǎng)絡(luò)空間中各項關(guān)鍵指標的分布情況,從而為分析和決策提供支持。
測繪的目標對象包括物理資源和虛擬資源。物理資源包括諸如路由器、交換機、基站等交換設(shè)備,以及移動電話、計算機、攝像頭等接入設(shè)備。虛擬資源包括域名系統(tǒng)(Domain Name System,DNS)、郵件等虛擬服務(wù),以及視頻、文本、社交媒體賬號等虛擬內(nèi)容[1,3]。網(wǎng)絡(luò)空間資源具有的特定屬性反映了資源的特征和資源之間的關(guān)系。資源屬性可以根據(jù)物理層、邏輯層、認知層等層次進行劃分。物理層反映了資源的物理屬性,比如設(shè)備坐標、尺寸、設(shè)備的具體信息等。邏輯層反映了資源的網(wǎng)絡(luò)屬性,比如IP、域名、端口號、操作系統(tǒng)等。認知層反映了資源的社會屬性,比如服務(wù)類型、服務(wù)對象和組織等[1]。
Rowhammer是一種DRAM內(nèi)存利用技術(shù),自2014年起研究人員對其進行了廣泛的研究和應(yīng)用。表現(xiàn)形式為,當重復(fù)且快速訪問內(nèi)存中的某一行(內(nèi)存訪問行)時,其鄰接行(受害者行)中的某些比特位置可能會翻轉(zhuǎn)。這是由于重復(fù)且快速訪問某一DRAM行會加速鄰接行的電荷泄露過程[8]。為了快速訪問DRAM內(nèi)存行,需要繞過CPU和內(nèi)存之間的緩存機制。一般使用的方法有使用clflush,clflushopt指令刷新緩存[9],使用緩存逐出指令回收緩存[10,11],或使用未緩存的內(nèi)存[12]等。要成功獲得比特翻轉(zhuǎn),首先需要確定虛擬地址映射到物理地址再到DRAM內(nèi)存地址之間的關(guān)系,然后確定合適的內(nèi)存訪問模式以實現(xiàn)可靠的比特翻轉(zhuǎn)。
DRAM芯片如圖1所示,分為w個Bank,每個Bank由d個cell(存儲單元)組成。這樣的芯片儲存了d·w bit信息。存儲單元組織成陣列。每個存儲單元都有自己的地址:(i,j)。i表示行,j表示列。圖1中的DRAM芯片有8個Bank(所含字節(jié)的位數(shù)),每個Bank由16個cell組成,4行4列。信息可以通過引腳進行傳輸。每個引腳攜帶1 bit的信號。圖1中有兩組引腳,2個地址引腳,用于傳輸超單元的行與列的地址。8個數(shù)據(jù)引腳,可傳送8 bit的信息。DRAM芯片會與內(nèi)存控制器相連,內(nèi)存控制器可以與DRAM芯片進行數(shù)據(jù)的傳送,一次可傳送8 bit的信息。每個存儲單元包括一個晶體管和電容器。對于true cell,一個充滿電的電容表示1 bit數(shù)據(jù)“1”,一個完全放電的電容表示1 bit數(shù)據(jù)“0”。Anti cell 則完全相反[13]。
圖1 128 bit的DRAM芯片的高級視圖
虛擬地址和物理地址之間的映射由操作系統(tǒng)通過訪問pagemap接口或者分配hugepage來完成。但是物理地址到DRAM內(nèi)存地址的映射關(guān)系卻不是完全公開的。AMD公司公開了地址映射函數(shù),但英特爾公司沒有。對于英特爾CPU,需要通過逆向工程的技術(shù)來得到內(nèi)存地址的映射函數(shù)[14]。
DRAMA[15]和DRAMDig[16]是兩種純軟件實現(xiàn)的DRAM地址映射逆向工具,這兩個工具都通過時間側(cè)信道來確定內(nèi)存地址中的bank位。具體來說,DRAM中的每個bank都有一個用于訪問內(nèi)存行的row buffer。通過選擇一些地址對,重復(fù)交替進行訪問,并測量平均訪問時間,如果一對地址位于同一bank中,則它們的訪問平均時間會顯著高于那些不在同一bank中的地址對,這種現(xiàn)象被稱為row buffer沖突。因此,可以通過這種方法找到位于同一bank中的地址集合并確定內(nèi)存地址中的bank位。
內(nèi)存訪問模式是指同時訪問的內(nèi)存行的組合方式。不同的訪問模式導(dǎo)致的比特翻轉(zhuǎn)發(fā)生的概率差別很大。通過選擇合適的內(nèi)存訪問模式,可以獲得更多的比特翻轉(zhuǎn)數(shù)量。目前主流的訪問模式有以下4種:
(1)One-location訪問模式。只重復(fù)訪問bank中的某一行,因此不會導(dǎo)致row buffer沖突的發(fā)生[17]。這種模式導(dǎo)致的比特翻轉(zhuǎn)的數(shù)量較少,但是在一些情況下可以繞過基于內(nèi)存訪問模式分析的保護機制,并成功導(dǎo)致比特翻轉(zhuǎn)。
(2)Single-sided訪問模式。重復(fù)訪問bank中的某兩行,但是這兩行之間沒有特定的位置關(guān)系。
(3)Double-sided訪問模式。重復(fù)訪問bank中滿足鄰接關(guān)系的兩行,即訪問的兩行與同一受害者行相鄰接[18]。這種模式可以提高比特翻轉(zhuǎn)的概率。對于大多數(shù)缺少目標行刷新(Target Row Refresh, TRR)機制的DDR3內(nèi)存來說,Single-sided和Doublesided這兩種模式都可以導(dǎo)致比特翻轉(zhuǎn)。但是對于具有TRR機制的DDR4內(nèi)存,很難通過這兩種模式導(dǎo)致比特翻轉(zhuǎn)。
(4)Many-sided訪問模式。重復(fù)訪問bank中的多行,且任意兩個內(nèi)存訪問行之間滿足與Doublesided訪問模式一樣的鄰接關(guān)系。Frigo等人[19]首先提出了一種Many-sided Rowhammer工具,可以自動識別訪問模式,并通過抑制DRAM中的TRR機制對DDR4 DRAM進行可靠的位翻轉(zhuǎn)。由于TRR采樣器只能跟蹤有限數(shù)量的攻擊者行,一旦攻擊者行的數(shù)量超過TRR采樣器的大小,攻擊者可能成功誘發(fā)位翻轉(zhuǎn)。
此外,之前的一些研究表明[8,20],在DRAM中發(fā)生比特翻轉(zhuǎn)的位置是比較穩(wěn)定的。并且,DRAM在制造過程中引入的隨機差異導(dǎo)致即使相同結(jié)構(gòu)的兩個DIMM也會具有不同的比特翻轉(zhuǎn)位置。因此,這種Rowhammer導(dǎo)致的比特翻轉(zhuǎn)效應(yīng)可以被用來實現(xiàn)物理不可克隆函數(shù)(PUF)。
要實現(xiàn)動態(tài)跟蹤網(wǎng)絡(luò)空間中物理設(shè)備的目標,需要一種方法來識別設(shè)備,即使設(shè)備的IP地址、地理位置甚至操作系統(tǒng)發(fā)生變化。一種實現(xiàn)方法是獲取設(shè)備的物理指紋,并將其與設(shè)備的其他屬性進行綁定。本文提出了一種利用設(shè)備DRAM中實現(xiàn)Rowhammer PUF的算法,以獲取設(shè)備的唯一物理指紋。具體的測繪實施方案如圖2所示。
圖2 基于PUF的測繪框架
在測繪框架中,PUF的功能是為網(wǎng)絡(luò)空間中的物理資源分配唯一的物理指紋。通過發(fā)送構(gòu)造的PUF挑戰(zhàn)到網(wǎng)絡(luò)空間中的物理設(shè)備,獲得對應(yīng)的PUF響應(yīng),并將其轉(zhuǎn)化為設(shè)備的物理指紋。
傳統(tǒng)的PUF很難適用于本文的測繪場景。由于測繪到的網(wǎng)絡(luò)空間資源是未知的且無法物理接觸,因此那些基于FPGA專用電路的PUF無法滿足測繪的實際需求,例如仲裁器PUF[21]。一個合適的選擇是通過網(wǎng)絡(luò)空間資源自身的部件來實現(xiàn)PUF,比如靜態(tài)隨機存取存儲器(Static Random-Access Memory,SRAM)和DRAM,這些部件被廣泛用于互聯(lián)網(wǎng)設(shè)備中,特別是個人計算機,需要用到DRAM作為內(nèi)存。
設(shè)備的正常運行在測繪過程中不應(yīng)受到影響。具體來說,獲取設(shè)備的物理指紋的過程不應(yīng)導(dǎo)致設(shè)備重新啟動或崩潰。因此,那些需要在設(shè)備的啟動階段利用初始化的隨機特性來獲得響應(yīng)的固有PUF[22]也不符合測繪的需求。
最近,許多研究人員對DRAM內(nèi)存的比特翻轉(zhuǎn)特性進行了較為全面的研究。網(wǎng)絡(luò)空間中的大多數(shù)物理資源都具有DRAM內(nèi)存部件,因此DRAM內(nèi)存可以被視為網(wǎng)絡(luò)空間中物理資源的共同特征。因此,本文采用Rowhammer技術(shù)在設(shè)備的DRAM內(nèi)存中實現(xiàn)Rowhammer PUF,可以在設(shè)備運行時獲得其唯一的物理指紋,并且不會干擾設(shè)備的正常運行。
在此過程中,需將特殊設(shè)計的PUF挑戰(zhàn)以及Rowhammer PUF實現(xiàn)代碼發(fā)送到目標設(shè)備,以獲取其物理指紋。同時,可以通過構(gòu)建的腳本來獲取目標設(shè)備的CPU型號、內(nèi)存型號、操作系統(tǒng)版本、IP地址、網(wǎng)絡(luò)行為和其他設(shè)備屬性信息。
為獲得設(shè)備的物理指紋,必須在目標設(shè)備上運行構(gòu)造好的PUF響應(yīng)代碼。針對運行Linux操作系統(tǒng)的設(shè)備,可以利用Linux遠程代碼執(zhí)行漏洞,在目標設(shè)備上運行構(gòu)造好的代碼。通過關(guān)鍵詞“l(fā)inux”和“remote”在CVE(Common Vulnerabilities and Exposures)網(wǎng)站上搜索可得到,此類漏洞版本跨度大,覆蓋范圍廣,從CVE-1999-0002到CVE-2023-29257共有1 295個。通過該方式,可將代碼遠程植入目標設(shè)備,執(zhí)行代碼并獲取設(shè)備的物理指紋和網(wǎng)絡(luò)屬性,最終將得到的信息返回以進行后續(xù)分析。
物理資源在網(wǎng)絡(luò)空間的畫像可以通過圖3展示的信息來描述。在資源畫像中,除了物理指紋屬性不會改變,其他屬性都可以修改,因此其余屬性也可以被稱為虛擬屬性。物理指紋用于唯一標識物理資源,而虛擬屬性用于描述物理資源之間的拓撲關(guān)系。在這里,本文沒有按照級別來劃分屬性,而是將資源的所有屬性放在一個畫像中。網(wǎng)絡(luò)層中資源之間的拓撲關(guān)系可以分為IP接口層、路由器層和PoP(Presence of Point)層拓撲發(fā)現(xiàn)。資源拓撲可以以知識圖譜的形式進行可視化。圖3中的橢圓形節(jié)點表示資源實體,圓形節(jié)點表示資源的畫像,資源之間的關(guān)系由橢圓形節(jié)點之間的邊來表示。
圖3 資源畫像及拓撲
本節(jié)介紹了Rowhammer PUF的實現(xiàn)過程,并在兩個評價指標下對PUF的整體性能進行了評估。
本文基于Frigo等人[19]提出的many-sided rowhammer工具在運行Linux操作系統(tǒng)的個人電腦上實現(xiàn)了Rowhammer PUF。我們首先定義PUF的挑戰(zhàn)和響應(yīng),然后提供實現(xiàn)PUF的算法。
PUF挑戰(zhàn)由多個參數(shù)組成,包括PUF地址、內(nèi)存訪問模式、數(shù)據(jù)模式、測量次數(shù)等。在算法實現(xiàn)中,每個參數(shù)都會影響PUF的響應(yīng)值,通過選擇合適的挑戰(zhàn)參數(shù),可以獲得更穩(wěn)定的響應(yīng)。需要考慮的參數(shù)包括:
(1)PUF地址。PUF地址由行基址和地址偏移量組成。行基址定義為每個bank的第1行,通過更改地址偏移量來更改PUF的起始地址。PUF地址的選取對PUF挑戰(zhàn)有直接的影響,因此對于不同的PUF挑戰(zhàn),PUF地址不應(yīng)相同。
(2)Hammering模式。本文使用Many-sided內(nèi)存訪問模式,其中變量是內(nèi)存訪問行的數(shù)量n,其鄰接行是受害行(即PUF行)。PUF地址和內(nèi)存訪問模式共同決定了PUF的大小,對于不同的PUF挑戰(zhàn),內(nèi)存訪問行和PUF行不應(yīng)重疊。
(3)數(shù)據(jù)模式。數(shù)據(jù)模式由寫入內(nèi)存訪問行和PUF行的初始值決定。由于內(nèi)存單元存在兩種不同的比特邏輯,該參數(shù)也對PUF的響應(yīng)值有很大影響。通過為內(nèi)存訪問行和PUF行選擇合適的初始值,可以獲得更多的比特翻轉(zhuǎn)。例如,將內(nèi)存訪問行初始化為0x00,將PUF行初始化為0xFF,或分別將二者初始化為0x55和0xAA。
(4)測量次數(shù)。測量次數(shù)包括訪問的bank數(shù)量以及訪問每個內(nèi)存訪問行的次數(shù),對于每個bank,PUF地址、內(nèi)存訪問模式和數(shù)據(jù)模式都應(yīng)該是相同的設(shè)置。
PUF挑戰(zhàn)中參數(shù)的設(shè)置決定了PUF響應(yīng),本文使用發(fā)生位翻轉(zhuǎn)的cell位置集作為PUF響應(yīng)。更直觀地說,PUF響應(yīng)集合中的一個元素表示發(fā)生比特翻轉(zhuǎn)的位置,其格式為(bank,row,column)=(x,y,z),表示在第x個bank中的y行和z列中發(fā)生比特翻轉(zhuǎn)。
PUF查詢是指通過輸入PUF挑戰(zhàn)得到PUF響應(yīng)的過程。Rowhammer PUF的查詢過程在算法1中進行了描述,其中變量m是對測量次數(shù)的計數(shù),變量b是對bank數(shù)量的計數(shù)。首先根據(jù)PUF地址、內(nèi)存訪問模式和數(shù)據(jù)模式初始化內(nèi)存訪問行和PUF行。定義的每個bank都需要相同的初始化操作,然后在定義的各個bank中,根據(jù)內(nèi)存訪問模式訪問定義的內(nèi)存訪問行。之后掃描PUF行并輸出發(fā)生比特翻轉(zhuǎn)的位置,最后所有比特翻轉(zhuǎn)位置的集合就構(gòu)成了PUF響應(yīng)。
算法1 Rowhammer PUF查詢過程
本文對兩塊相同設(shè)計、規(guī)格和生產(chǎn)批次的DIMM進行了Rowhammer PUF的可靠性和唯一性測試。測試計算機的CPU型號是Intel(R) Core(TM) i7-10700 CPU @ 2.90 GHz, CPU架構(gòu)是Comet lake,操作系統(tǒng)是Ubuntu 20.04。其中內(nèi)存采用了大小為8 GB、頻率為2 932 MHz的三星DDR4 SDRAM,沒有ECC(Error Checking and Correcting)功能。
DRAM PUF和SRAM PUF之間的一個區(qū)別在于,DRAM PUF的響應(yīng)反映的是內(nèi)存中比特翻轉(zhuǎn)的位置。因此,經(jīng)典指標中使用的漢明距離并不適合于評價DRAM PUF的特性。本文使用Jaccard指標來評價Rowhammer PUF的可靠性和唯一性[23],其中獲得的PUF響應(yīng)集合用S表示。計算兩個PUF響應(yīng)集合之間相似性的Jaccard指標公式為
可靠性衡量同一PUF在不同測量中對相同挑戰(zhàn)的響應(yīng)之間的差異。本文使用指標Jintra(S1,S2)表示Rowhammer PUF的可靠性。由于存在測量噪聲,每個測量結(jié)果都不完全相同,但理想情況下,兩個集合中包含的比特翻轉(zhuǎn)位置應(yīng)該相同,因此Jintra的理想值為1。
唯一性衡量不同PUF在不同測量中對相同挑戰(zhàn)的響應(yīng)之間的差異。本文使用指標Jinter(S1,S2)表示Rowhammer PUF的唯一性。理想情況下,兩個集合中包含的比特翻轉(zhuǎn)位置不應(yīng)重疊,因此Jinter的理想值為0。
在測試中,每一次PUF查詢都使用相同的PUF挑戰(zhàn),其參數(shù)設(shè)置如表1所示。本文將PUF地址固定在每個bank的第1行,一共測量了5個bank。由于某些 DDR4 DRAM具有TRR機制,因此某些具有比特翻轉(zhuǎn)的行可能會在下一次測量中被刷新,從而導(dǎo)致沒有比特翻轉(zhuǎn)。為此,本文將內(nèi)存訪問行數(shù)設(shè)置為22行,并在每次PUF查詢中進行10次測量。PUF行和內(nèi)存訪問行分別初始化為0x55和0xAA,以滿足鄰接行對應(yīng)的cell的值是相反的,這樣可以滿足導(dǎo)致比特翻轉(zhuǎn)的條件。
表1 PUF 參數(shù)設(shè)置
在給定的PUF挑戰(zhàn)參數(shù)下,本文對兩塊DIMM進行了20次PUF查詢,隨機選擇2次查詢結(jié)果構(gòu)成集合S1和S2,并測試了所有可能的組合。兩塊DIMM之間的唯一性為0,DIMM1的平均可靠性為0.62,DIMM2的平均可靠性為0.63,評估結(jié)果如圖4所示。
圖4 Jaccard指標下的唯一性和可靠性評價
在測繪的主動探測過程中,需要使用Rowhammer PUF為網(wǎng)絡(luò)空間中的物理資源分配唯一的物理指紋,并對目標設(shè)備進行標識和追蹤。根據(jù)在PUF評估中的觀察結(jié)果,不同PUF查詢中包含的比特翻轉(zhuǎn)位置的數(shù)量是不一樣的。當各集合的大小相差很大時,通過原始Jaccard指標計算出的值無法準確反映PUF可靠性的實際情況。
原始的Jaccard指標并不適合在測繪場景中用于計算目標設(shè)備的相似性。因此,本文修改Jaccard指標為
其中,Sd表示從前幾個查詢中獲得的PUF響應(yīng)集合的組合,例如Sd=S1∪S2∪S3。Sn表示新查詢的PUF響應(yīng)集。
使用 J accard′指標獲得的評估結(jié)果如圖5所示。本文從20個PUF響應(yīng)查詢中任意選擇3個查詢結(jié)果來形成數(shù)據(jù)庫Sd,然后將剩余的其他單個查詢結(jié)果作為Sn。并測試了所有可能的組合,得到了兩塊測試DIMM的可靠性以及兩塊DIMM之間的唯一性。在現(xiàn)有的測試數(shù)據(jù)下,兩塊DIMM之間的唯一性值為0,DIMM1的可靠性平均值為0.88,DIMM2的可靠性平均值也是0.88。結(jié)果表明唯一性和可靠性值的分布差異非常大,這意味著可以完美地區(qū)分和標識兩個不同的設(shè)備。
圖5 J accard′指標下的唯一性和可靠性評價
本文在實驗室環(huán)境中進行了3組測繪實驗,以模擬真實世界中的測繪場景。實驗結(jié)果表明,本文提出的測繪框架能夠準確識別網(wǎng)絡(luò)空間中的設(shè)備,并獲得目標設(shè)備的畫像。
測繪實驗架構(gòu)如圖6所示。實驗網(wǎng)絡(luò)環(huán)境為局域網(wǎng)環(huán)境,網(wǎng)關(guān)地址設(shè)置為192.168.171.1。以筆記本電腦作為探測主機,部署Nmap, Zmap等傳統(tǒng)網(wǎng)絡(luò)掃描軟件,Hydra, MetaSploit等漏洞利用軟件,以及FTP(File Transfer Protocol)文件共享軟件等。其他4臺計算機作為待探測的目標設(shè)備。
本文進行了3組實驗,每組實驗分為以下3個步驟:
(1)獲取系統(tǒng)權(quán)限。通過安全外殼協(xié)議(Secure Shell Protocol, SSH)服務(wù)的漏洞獲取當前操作系統(tǒng)的超級管理員權(quán)限。
(2)獲取目標設(shè)備的物理指紋。使用第1步中獲得的超級管理員權(quán)限,執(zhí)行構(gòu)造的PUF實現(xiàn)代碼,以獲取目標設(shè)備的物理指紋和其他屬性,并通過FTP服務(wù)將結(jié)果回傳探測主機。此步驟需要收集目標設(shè)備盡可能多的PUF響應(yīng),以形成目標設(shè)備的物理指紋數(shù)據(jù)庫。
(3)分析和可視化。分析在第2步獲得的數(shù)據(jù),形成目標設(shè)備的物理指紋數(shù)據(jù)庫,構(gòu)建目標設(shè)備的畫像。分析目標設(shè)備之間的網(wǎng)絡(luò)行為并可視化網(wǎng)絡(luò)拓撲。
本文設(shè)置多組對照實驗,通過更改目標設(shè)備的虛擬屬性,例如IP地址和MAC地址等,對比證明本文所涉及方案可以通過探測到的物理指紋唯一準確識別目標設(shè)備。
第1組實驗使用4臺計算機作為目標設(shè)備。其中A1和A2模擬用戶使用的終端電腦,A3模擬網(wǎng)站服務(wù)器,A4模擬數(shù)據(jù)庫服務(wù)器,為網(wǎng)站提供服務(wù)。通過分析掃描的端口數(shù)據(jù),可以得到設(shè)備之間的拓撲結(jié)構(gòu),如圖7所示。
圖7 網(wǎng)絡(luò)拓撲
根據(jù)探測結(jié)果中繪制的目標設(shè)備畫像如表2所示。目標設(shè)備的畫像由物理指紋、MAC地址、IP地址、端口號、網(wǎng)關(guān)、內(nèi)存序列號、操作系統(tǒng)版本和CPU型號組成。對于每個目標設(shè)備,探測過程中收集足夠的PUF響應(yīng),以形成相應(yīng)的物理指紋數(shù)據(jù)庫,數(shù)據(jù)庫存儲與PUF挑戰(zhàn)對應(yīng)的比特翻轉(zhuǎn)位置的結(jié)果。
第2組實驗修改4臺設(shè)備的操作系統(tǒng)MAC地址、IP地址和開放的服務(wù),然后執(zhí)行新的探測,獲得的新目標設(shè)備的畫像如表3所示。
對于傳統(tǒng)的網(wǎng)絡(luò)探測方法,這4個設(shè)備將被標識為4個新設(shè)備B1, B2, B3和B4。本文的目標是識別新探測到的目標設(shè)備和先前探測到的設(shè)備之間的對應(yīng)關(guān)系。換句話說,即使目標設(shè)備更換了其所有的虛擬屬性,仍然可以通過其唯一的物理指紋來識別目標設(shè)備。
將新探測到的目標設(shè)備的PUF查詢結(jié)果與先前探測到的設(shè)備的物理指紋數(shù)據(jù)庫進行匹配,根據(jù)Jaccard′指標計算的結(jié)果如表4所示。結(jié)果表明,雖然設(shè)備A1改變了其IP地址、MAC地址和操作系統(tǒng)版本,但仍然可以通過物理指紋識別出設(shè)備A1。設(shè)備B1是以前的設(shè)備A1,而設(shè)備B2是以前的設(shè)備A3,設(shè)備B3是以前的設(shè)備A2,設(shè)備B4仍然是以前的設(shè)備A4。
表4 實驗2與實驗1設(shè)備之間的J accard′值
在第2組實驗的基礎(chǔ)上,用新設(shè)備替換了第2組實驗中4個設(shè)備中的兩個,另外兩個設(shè)備保持不變。操作系統(tǒng)版本、MAC地址、IP地址、端口等屬性也保持不變,與表3一致。
實驗3的目標是標識出新添加的設(shè)備,新設(shè)備的所有虛擬屬性與第2組實驗中的設(shè)備相同。根據(jù)Jaccard′指標計算的結(jié)果如表5所示,可以知道C1和C3是新添加的設(shè)備,設(shè)備C2和C4是以前的設(shè)備B2和B4。
表5 實驗3與實驗1設(shè)備之間的J accard′值
Schaller等人[24]提出了第1個利用Rowhammer效應(yīng)實現(xiàn)PUF的工作。他們在裝有DDR2內(nèi)存的PandaBoard上實現(xiàn)了Rowhammer PUF,并測試了PUF在不同條件下的性能。這項工作是開創(chuàng)性的,給我們的工作帶來了很多啟發(fā)。但PandaBoard上Rowhammer PUF的實現(xiàn)不需要考慮地址映射問題且不存在任何針對Rowhammer的防護機制,本文在個人電腦上實現(xiàn)的Rowhammer PUF需要進行地址映射并需要繞過相關(guān)的軟硬件防護機制,因此難度更大。
現(xiàn)有的DRAM PUF都是在嵌入式設(shè)備中實現(xiàn)的,無法直接應(yīng)用于個人電腦,或是可應(yīng)用于個人電腦但不適用于測繪場景?;谒p的DRAM PUF[25]需要禁用一段時間的內(nèi)存刷新,禁用時間過久將導(dǎo)致系統(tǒng)崩潰。為了實現(xiàn)運行時獲取PUF響應(yīng),程序需要在設(shè)備啟動時執(zhí)行,或刷新內(nèi)存的關(guān)鍵區(qū)域以防止崩潰。無法滿足不影響被檢測設(shè)備正常功能的要求,不適用于本文的測繪場景。
基于延時的DRAM PUF[23]通過操縱特定的定時參數(shù)使內(nèi)存處于未定義行為的特殊狀態(tài),通過這種方式,可以在系統(tǒng)運行時獲得PUF響應(yīng),但在運行時修改DRAM的tRCD等定時參數(shù)。據(jù)我們所知,大多數(shù)個人電腦只能在BIOS中修改這些定時參數(shù),這不符合測繪情景的要求。
Sutar等人[26]提出的D-PUF在基于Altera Stratix IV GX FPGA 的 Terasic TR4-230 開發(fā)板和DDR3 DRAM內(nèi)存上實現(xiàn),Najafi等人[23]提出的Deep PUF在Xilinx XC6SLX45 FPGA和DDR3 DRAM上實現(xiàn),Talukder等人[27]提出的PreLatPUF在Xilinx Virtex-6 FPGA和DDR3 DRAM上實現(xiàn)。這些工作并未考慮PUF在個人電腦中的使用情景。
本文提出一個完整而詳細的測繪實例。首先,本文提出一個基于PUF的測繪框架,其中PUF的作用是生成可以唯一標識目標設(shè)備的物理指紋。其次,本文給出了在配備DDR4內(nèi)存的個人計算機上實現(xiàn)Rowhammer PUF的詳細過程,并評估了實現(xiàn)PUF的性能。最后,本文在構(gòu)建的局域網(wǎng)中進行了測繪實驗。結(jié)果表明,本文提出的方法能夠準確地識別和追蹤目標設(shè)備,即使目標設(shè)備改變了其IP地址、MAC地址,甚至操作系統(tǒng)。
本文基于PUF的測繪框架目前使用Rowhammer PUF來生成物理指紋。當前的Rowhammer技術(shù)無法保證在所有的DDR4內(nèi)存,尤其是具有ECC功能的內(nèi)存上導(dǎo)致比特翻轉(zhuǎn)。同時也還存在許多保護機制,如TRR機制等被用于檢測和防止比特翻轉(zhuǎn)。但與此同時,新的Rowhammer技術(shù)也在不斷開發(fā),且互聯(lián)網(wǎng)上部署的大多數(shù)設(shè)備都不是最新生產(chǎn)的,仍有大量的舊設(shè)備受到Rowhammer的影響。因此,本文計劃在未來開發(fā)適合測繪場景的新的設(shè)備指紋生成方法,并在未來進行真實環(huán)境下的網(wǎng)絡(luò)空間測繪。