劉 鏑 徐聞含 王文東 李大偉 關(guān)振宇 劉建偉
(北京航空航天大學(xué)網(wǎng)絡(luò)空間安全學(xué)院 北京 100191)
網(wǎng)絡(luò)空間測(cè)繪是指對(duì)網(wǎng)絡(luò)空間中的各種資源進(jìn)行探測(cè)、獲取資源的各種屬性、分析資源之間的關(guān)系,并通過邏輯拓?fù)浠蚓W(wǎng)絡(luò)地圖等形式將資源屬性和分析結(jié)果呈現(xiàn)出來的過程。其目的在于獲取網(wǎng)絡(luò)空間資源屬性的整體態(tài)勢(shì),掌握資源之間的交互關(guān)系和發(fā)展趨勢(shì),以及感知網(wǎng)絡(luò)空間的動(dòng)態(tài)變化。網(wǎng)絡(luò)空間測(cè)繪的對(duì)象為網(wǎng)絡(luò)空間中的各種物理資源和虛擬資源,而探測(cè)的范圍可能為整個(gè)互聯(lián)網(wǎng)、某個(gè)局域網(wǎng)或一個(gè)特定的網(wǎng)絡(luò)范圍。
之前的研究[1–3]總結(jié)了網(wǎng)絡(luò)空間資源測(cè)繪的相關(guān)概念和技術(shù),但未給出具體的測(cè)繪實(shí)例。傳統(tǒng)的資源測(cè)繪技術(shù)通過發(fā)送請(qǐng)求數(shù)據(jù)包來獲取目標(biāo)資源的IP地址、端口號(hào)等信息,使用的工具包括Nmap[4], Zmap[5], Masscan[6], Shodan[7]等。但這些測(cè)繪工具只集中于網(wǎng)絡(luò)層測(cè)繪,無法獲得物理設(shè)備獨(dú)有的物理特性。一旦目標(biāo)設(shè)備更改其IP地址等虛擬屬性,這些工具會(huì)視其為新設(shè)備,導(dǎo)致資源丟失或重復(fù)測(cè)繪,并且不能對(duì)目標(biāo)設(shè)備進(jìn)行持續(xù)追蹤。本文提出的測(cè)繪框架專注于物理層,通過真實(shí)局域網(wǎng)環(huán)境下的物理資源測(cè)繪,提取資源的物理指紋、構(gòu)建資源畫像、獲取資源間行為關(guān)系,并準(zhǔn)確標(biāo)識(shí)和追蹤目標(biāo)資源。
該框架為暗網(wǎng)測(cè)繪帶來新的方法,因?yàn)槟承┡渲昧硕鄠€(gè)網(wǎng)卡的設(shè)備常同時(shí)接入互聯(lián)網(wǎng)和暗網(wǎng),但它們?cè)诓煌W(wǎng)絡(luò)中表現(xiàn)出來的身份及屬性不同,難以通過傳統(tǒng)測(cè)繪方法標(biāo)識(shí)。然而,這些設(shè)備在每次連接不同網(wǎng)絡(luò)時(shí)都使用相同的內(nèi)存模塊,因此基于內(nèi)存模塊的物理指紋不會(huì)改變。在互聯(lián)網(wǎng)和暗網(wǎng)中分別進(jìn)行測(cè)繪,通過比較設(shè)備唯一的物理指紋來識(shí)別位于互聯(lián)網(wǎng)和暗網(wǎng)邊界的設(shè)備,實(shí)現(xiàn)暗網(wǎng)的準(zhǔn)確測(cè)繪。
本框架也可用于組織內(nèi)部的網(wǎng)絡(luò)準(zhǔn)入管理。組織內(nèi)部網(wǎng)絡(luò)實(shí)行白名單準(zhǔn)入機(jī)制,只有經(jīng)過認(rèn)證的設(shè)備才能夠獲得網(wǎng)絡(luò)訪問權(quán)限。組織管理員為組織內(nèi)每臺(tái)白名單設(shè)備生成設(shè)備指紋,唯一標(biāo)識(shí)該設(shè)備。由于每個(gè)動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(Dynamic Random-Access Memory, DRAM)都不可克隆,攻擊者將無法生成合法指紋以偽造白名單設(shè)備。即使攻擊者物理接觸白名單設(shè)備并將其DRAM更換至惡意設(shè)備中,也會(huì)由于不同CPU緩存模式與內(nèi)存地址映射的差異而導(dǎo)致無法生成合法物理不可克隆函數(shù)(Physical Unclonable Function, PUF)響應(yīng),從而保障網(wǎng)絡(luò)準(zhǔn)入機(jī)制的正常運(yùn)行。
此外,本框架還可用于軟件授權(quán)場(chǎng)景,收費(fèi)軟件可能會(huì)限制單個(gè)授權(quán)下的可用設(shè)備數(shù),利用本框架唯一標(biāo)識(shí)設(shè)備,有效防止使用者篡改設(shè)備序列號(hào),生成多個(gè)相同指紋的設(shè)備,以繞過設(shè)備數(shù)限制。
(1)物理指紋獲取。主要存在兩個(gè)難點(diǎn):一是由于測(cè)繪目標(biāo)是未知的且無法物理接觸,需要通過一種可靠的遠(yuǎn)程代碼執(zhí)行和數(shù)據(jù)回傳的方法來完成測(cè)繪;二是需要獲取能唯一標(biāo)識(shí)目標(biāo)設(shè)備的物理指紋,且保證獲取的指紋是穩(wěn)定和可重復(fù)的。同時(shí),生成物理指紋的過程不應(yīng)該影響目標(biāo)設(shè)備的正常運(yùn)行,例如導(dǎo)致目標(biāo)設(shè)備重啟或服務(wù)異常。
(2)設(shè)備動(dòng)態(tài)標(biāo)識(shí)和追蹤。完成測(cè)繪后,雖然可以得到資源的畫像和拓?fù)潢P(guān)系,但網(wǎng)絡(luò)空間中的數(shù)據(jù)流動(dòng)和資源變化隨時(shí)都在發(fā)生。因此,需要對(duì)資源進(jìn)行定期測(cè)繪來更新數(shù)據(jù)并掌握網(wǎng)絡(luò)空間的發(fā)展態(tài)勢(shì)。IP地址、MAC地址等虛擬屬性是易于更改的,但我們希望通過物理指紋持續(xù)標(biāo)識(shí)和追蹤目標(biāo)設(shè)備,忽略這些變動(dòng)帶來的影響。
(1)本文提出一種基于物理不可克隆函數(shù)(PUF)的測(cè)繪框架。通過設(shè)計(jì)的PUF算法提取目標(biāo)設(shè)備的物理指紋,并結(jié)合設(shè)備的其他屬性構(gòu)建設(shè)備畫像,并使用知識(shí)圖譜的形式實(shí)現(xiàn)測(cè)繪結(jié)果的可視化。
(2)本文實(shí)現(xiàn)了一個(gè)基于Rowhammer的DRAM PUF,可在配備第四代雙倍速率(Data Rate Fourth,DDR4)內(nèi)存和運(yùn)行Linux操作系統(tǒng)的個(gè)人電腦上運(yùn)行。訪問內(nèi)存模塊運(yùn)行PUF實(shí)現(xiàn)代碼即可,無需額外添加硬件。
(3)本文在兩種指標(biāo)下評(píng)估了Rowhammer PUF的性能。評(píng)估結(jié)果表明,所實(shí)現(xiàn)的PUF表現(xiàn)出接近理想值的唯一性和良好的可靠性,能夠完美地區(qū)分不同的設(shè)備。據(jù)我們所知,本文所做工作是第1個(gè)在個(gè)人電腦上實(shí)現(xiàn)和評(píng)估Rowhammer PUF的研究。
(4)本文在局域網(wǎng)環(huán)境中進(jìn)行了3次測(cè)繪實(shí)驗(yàn)。實(shí)驗(yàn)結(jié)果表明,即使目標(biāo)設(shè)備更改了MAC地址、IP地址甚至操作系統(tǒng)等虛擬屬性,通過物理指紋仍能對(duì)目標(biāo)設(shè)備進(jìn)行識(shí)別和跟蹤。
網(wǎng)絡(luò)空間測(cè)繪是一個(gè)探測(cè)、分析、繪制和應(yīng)用的完整過程[1]。首先,通過各種探測(cè)技術(shù)獲取網(wǎng)絡(luò)空間物理資源和虛擬資源的數(shù)據(jù),包括資源屬性值等相關(guān)信息。其目的是為后續(xù)的分析過程提供基礎(chǔ)數(shù)據(jù)。例如,使用網(wǎng)絡(luò)掃描軟件獲得目標(biāo)設(shè)備的IP地址、MAC地址、端口號(hào)、流量包等數(shù)據(jù)。分析是從探測(cè)得到的數(shù)據(jù)中提取資源屬性,對(duì)資源進(jìn)行標(biāo)識(shí),構(gòu)建資源畫像的過程。其目的是形成關(guān)于網(wǎng)絡(luò)空間資源的知識(shí)庫,為系統(tǒng)提供大網(wǎng)測(cè)繪數(shù)據(jù)、互聯(lián)網(wǎng)暴露資產(chǎn)及其脆弱性的數(shù)據(jù)等,有助于網(wǎng)絡(luò)資產(chǎn)云監(jiān)測(cè)、漏洞響應(yīng)等業(yè)務(wù)的開展[2]。例如,通過數(shù)據(jù)挖掘等手段對(duì)探測(cè)得到的數(shù)據(jù)進(jìn)行分析,提取出關(guān)鍵詞和主題,構(gòu)建出有關(guān)網(wǎng)絡(luò)安全的知識(shí)庫。可視化是基于網(wǎng)絡(luò)空間資源的屬性和映射關(guān)系構(gòu)造網(wǎng)絡(luò)拓?fù)洳⑦M(jìn)行可視化的過程。其目的是動(dòng)態(tài)顯示網(wǎng)絡(luò)空間資源的分布和狀態(tài),幫助用戶理解網(wǎng)絡(luò)空間的結(jié)構(gòu)和運(yùn)作機(jī)制。例如,使用圖論等算法構(gòu)建網(wǎng)絡(luò)拓?fù)洌员阒庇^地展示網(wǎng)絡(luò)空間中各項(xiàng)關(guān)鍵指標(biāo)的分布情況,從而為分析和決策提供支持。
測(cè)繪的目標(biāo)對(duì)象包括物理資源和虛擬資源。物理資源包括諸如路由器、交換機(jī)、基站等交換設(shè)備,以及移動(dòng)電話、計(jì)算機(jī)、攝像頭等接入設(shè)備。虛擬資源包括域名系統(tǒng)(Domain Name System,DNS)、郵件等虛擬服務(wù),以及視頻、文本、社交媒體賬號(hào)等虛擬內(nèi)容[1,3]。網(wǎng)絡(luò)空間資源具有的特定屬性反映了資源的特征和資源之間的關(guān)系。資源屬性可以根據(jù)物理層、邏輯層、認(rèn)知層等層次進(jìn)行劃分。物理層反映了資源的物理屬性,比如設(shè)備坐標(biāo)、尺寸、設(shè)備的具體信息等。邏輯層反映了資源的網(wǎng)絡(luò)屬性,比如IP、域名、端口號(hào)、操作系統(tǒng)等。認(rèn)知層反映了資源的社會(huì)屬性,比如服務(wù)類型、服務(wù)對(duì)象和組織等[1]。
Rowhammer是一種DRAM內(nèi)存利用技術(shù),自2014年起研究人員對(duì)其進(jìn)行了廣泛的研究和應(yīng)用。表現(xiàn)形式為,當(dāng)重復(fù)且快速訪問內(nèi)存中的某一行(內(nèi)存訪問行)時(shí),其鄰接行(受害者行)中的某些比特位置可能會(huì)翻轉(zhuǎn)。這是由于重復(fù)且快速訪問某一DRAM行會(huì)加速鄰接行的電荷泄露過程[8]。為了快速訪問DRAM內(nèi)存行,需要繞過CPU和內(nèi)存之間的緩存機(jī)制。一般使用的方法有使用clflush,clflushopt指令刷新緩存[9],使用緩存逐出指令回收緩存[10,11],或使用未緩存的內(nèi)存[12]等。要成功獲得比特翻轉(zhuǎn),首先需要確定虛擬地址映射到物理地址再到DRAM內(nèi)存地址之間的關(guān)系,然后確定合適的內(nèi)存訪問模式以實(shí)現(xiàn)可靠的比特翻轉(zhuǎn)。
DRAM芯片如圖1所示,分為w個(gè)Bank,每個(gè)Bank由d個(gè)cell(存儲(chǔ)單元)組成。這樣的芯片儲(chǔ)存了d·w bit信息。存儲(chǔ)單元組織成陣列。每個(gè)存儲(chǔ)單元都有自己的地址:(i,j)。i表示行,j表示列。圖1中的DRAM芯片有8個(gè)Bank(所含字節(jié)的位數(shù)),每個(gè)Bank由16個(gè)cell組成,4行4列。信息可以通過引腳進(jìn)行傳輸。每個(gè)引腳攜帶1 bit的信號(hào)。圖1中有兩組引腳,2個(gè)地址引腳,用于傳輸超單元的行與列的地址。8個(gè)數(shù)據(jù)引腳,可傳送8 bit的信息。DRAM芯片會(huì)與內(nèi)存控制器相連,內(nèi)存控制器可以與DRAM芯片進(jìn)行數(shù)據(jù)的傳送,一次可傳送8 bit的信息。每個(gè)存儲(chǔ)單元包括一個(gè)晶體管和電容器。對(duì)于true cell,一個(gè)充滿電的電容表示1 bit數(shù)據(jù)“1”,一個(gè)完全放電的電容表示1 bit數(shù)據(jù)“0”。Anti cell 則完全相反[13]。

圖1 128 bit的DRAM芯片的高級(jí)視圖
虛擬地址和物理地址之間的映射由操作系統(tǒng)通過訪問pagemap接口或者分配hugepage來完成。但是物理地址到DRAM內(nèi)存地址的映射關(guān)系卻不是完全公開的。AMD公司公開了地址映射函數(shù),但英特爾公司沒有。對(duì)于英特爾CPU,需要通過逆向工程的技術(shù)來得到內(nèi)存地址的映射函數(shù)[14]。
DRAMA[15]和DRAMDig[16]是兩種純軟件實(shí)現(xiàn)的DRAM地址映射逆向工具,這兩個(gè)工具都通過時(shí)間側(cè)信道來確定內(nèi)存地址中的bank位。具體來說,DRAM中的每個(gè)bank都有一個(gè)用于訪問內(nèi)存行的row buffer。通過選擇一些地址對(duì),重復(fù)交替進(jìn)行訪問,并測(cè)量平均訪問時(shí)間,如果一對(duì)地址位于同一bank中,則它們的訪問平均時(shí)間會(huì)顯著高于那些不在同一bank中的地址對(duì),這種現(xiàn)象被稱為row buffer沖突。因此,可以通過這種方法找到位于同一bank中的地址集合并確定內(nèi)存地址中的bank位。
內(nèi)存訪問模式是指同時(shí)訪問的內(nèi)存行的組合方式。不同的訪問模式導(dǎo)致的比特翻轉(zhuǎn)發(fā)生的概率差別很大。通過選擇合適的內(nèi)存訪問模式,可以獲得更多的比特翻轉(zhuǎn)數(shù)量。目前主流的訪問模式有以下4種:
(1)One-location訪問模式。只重復(fù)訪問bank中的某一行,因此不會(huì)導(dǎo)致row buffer沖突的發(fā)生[17]。這種模式導(dǎo)致的比特翻轉(zhuǎn)的數(shù)量較少,但是在一些情況下可以繞過基于內(nèi)存訪問模式分析的保護(hù)機(jī)制,并成功導(dǎo)致比特翻轉(zhuǎn)。
(2)Single-sided訪問模式。重復(fù)訪問bank中的某兩行,但是這兩行之間沒有特定的位置關(guān)系。
(3)Double-sided訪問模式。重復(fù)訪問bank中滿足鄰接關(guān)系的兩行,即訪問的兩行與同一受害者行相鄰接[18]。這種模式可以提高比特翻轉(zhuǎn)的概率。對(duì)于大多數(shù)缺少目標(biāo)行刷新(Target Row Refresh, TRR)機(jī)制的DDR3內(nèi)存來說,Single-sided和Doublesided這兩種模式都可以導(dǎo)致比特翻轉(zhuǎn)。但是對(duì)于具有TRR機(jī)制的DDR4內(nèi)存,很難通過這兩種模式導(dǎo)致比特翻轉(zhuǎn)。
(4)Many-sided訪問模式。重復(fù)訪問bank中的多行,且任意兩個(gè)內(nèi)存訪問行之間滿足與Doublesided訪問模式一樣的鄰接關(guān)系。Frigo等人[19]首先提出了一種Many-sided Rowhammer工具,可以自動(dòng)識(shí)別訪問模式,并通過抑制DRAM中的TRR機(jī)制對(duì)DDR4 DRAM進(jìn)行可靠的位翻轉(zhuǎn)。由于TRR采樣器只能跟蹤有限數(shù)量的攻擊者行,一旦攻擊者行的數(shù)量超過TRR采樣器的大小,攻擊者可能成功誘發(fā)位翻轉(zhuǎn)。
此外,之前的一些研究表明[8,20],在DRAM中發(fā)生比特翻轉(zhuǎn)的位置是比較穩(wěn)定的。并且,DRAM在制造過程中引入的隨機(jī)差異導(dǎo)致即使相同結(jié)構(gòu)的兩個(gè)DIMM也會(huì)具有不同的比特翻轉(zhuǎn)位置。因此,這種Rowhammer導(dǎo)致的比特翻轉(zhuǎn)效應(yīng)可以被用來實(shí)現(xiàn)物理不可克隆函數(shù)(PUF)。
要實(shí)現(xiàn)動(dòng)態(tài)跟蹤網(wǎng)絡(luò)空間中物理設(shè)備的目標(biāo),需要一種方法來識(shí)別設(shè)備,即使設(shè)備的IP地址、地理位置甚至操作系統(tǒng)發(fā)生變化。一種實(shí)現(xiàn)方法是獲取設(shè)備的物理指紋,并將其與設(shè)備的其他屬性進(jìn)行綁定。本文提出了一種利用設(shè)備DRAM中實(shí)現(xiàn)Rowhammer PUF的算法,以獲取設(shè)備的唯一物理指紋。具體的測(cè)繪實(shí)施方案如圖2所示。

圖2 基于PUF的測(cè)繪框架
在測(cè)繪框架中,PUF的功能是為網(wǎng)絡(luò)空間中的物理資源分配唯一的物理指紋。通過發(fā)送構(gòu)造的PUF挑戰(zhàn)到網(wǎng)絡(luò)空間中的物理設(shè)備,獲得對(duì)應(yīng)的PUF響應(yīng),并將其轉(zhuǎn)化為設(shè)備的物理指紋。
傳統(tǒng)的PUF很難適用于本文的測(cè)繪場(chǎng)景。由于測(cè)繪到的網(wǎng)絡(luò)空間資源是未知的且無法物理接觸,因此那些基于FPGA專用電路的PUF無法滿足測(cè)繪的實(shí)際需求,例如仲裁器PUF[21]。一個(gè)合適的選擇是通過網(wǎng)絡(luò)空間資源自身的部件來實(shí)現(xiàn)PUF,比如靜態(tài)隨機(jī)存取存儲(chǔ)器(Static Random-Access Memory,SRAM)和DRAM,這些部件被廣泛用于互聯(lián)網(wǎng)設(shè)備中,特別是個(gè)人計(jì)算機(jī),需要用到DRAM作為內(nèi)存。
設(shè)備的正常運(yùn)行在測(cè)繪過程中不應(yīng)受到影響。具體來說,獲取設(shè)備的物理指紋的過程不應(yīng)導(dǎo)致設(shè)備重新啟動(dòng)或崩潰。因此,那些需要在設(shè)備的啟動(dòng)階段利用初始化的隨機(jī)特性來獲得響應(yīng)的固有PUF[22]也不符合測(cè)繪的需求。
最近,許多研究人員對(duì)DRAM內(nèi)存的比特翻轉(zhuǎn)特性進(jìn)行了較為全面的研究。網(wǎng)絡(luò)空間中的大多數(shù)物理資源都具有DRAM內(nèi)存部件,因此DRAM內(nèi)存可以被視為網(wǎng)絡(luò)空間中物理資源的共同特征。因此,本文采用Rowhammer技術(shù)在設(shè)備的DRAM內(nèi)存中實(shí)現(xiàn)Rowhammer PUF,可以在設(shè)備運(yùn)行時(shí)獲得其唯一的物理指紋,并且不會(huì)干擾設(shè)備的正常運(yùn)行。
在此過程中,需將特殊設(shè)計(jì)的PUF挑戰(zhàn)以及Rowhammer PUF實(shí)現(xiàn)代碼發(fā)送到目標(biāo)設(shè)備,以獲取其物理指紋。同時(shí),可以通過構(gòu)建的腳本來獲取目標(biāo)設(shè)備的CPU型號(hào)、內(nèi)存型號(hào)、操作系統(tǒng)版本、IP地址、網(wǎng)絡(luò)行為和其他設(shè)備屬性信息。
為獲得設(shè)備的物理指紋,必須在目標(biāo)設(shè)備上運(yùn)行構(gòu)造好的PUF響應(yīng)代碼。針對(duì)運(yùn)行Linux操作系統(tǒng)的設(shè)備,可以利用Linux遠(yuǎn)程代碼執(zhí)行漏洞,在目標(biāo)設(shè)備上運(yùn)行構(gòu)造好的代碼。通過關(guān)鍵詞“l(fā)inux”和“remote”在CVE(Common Vulnerabilities and Exposures)網(wǎng)站上搜索可得到,此類漏洞版本跨度大,覆蓋范圍廣,從CVE-1999-0002到CVE-2023-29257共有1 295個(gè)。通過該方式,可將代碼遠(yuǎn)程植入目標(biāo)設(shè)備,執(zhí)行代碼并獲取設(shè)備的物理指紋和網(wǎng)絡(luò)屬性,最終將得到的信息返回以進(jìn)行后續(xù)分析。
物理資源在網(wǎng)絡(luò)空間的畫像可以通過圖3展示的信息來描述。在資源畫像中,除了物理指紋屬性不會(huì)改變,其他屬性都可以修改,因此其余屬性也可以被稱為虛擬屬性。物理指紋用于唯一標(biāo)識(shí)物理資源,而虛擬屬性用于描述物理資源之間的拓?fù)潢P(guān)系。在這里,本文沒有按照級(jí)別來劃分屬性,而是將資源的所有屬性放在一個(gè)畫像中。網(wǎng)絡(luò)層中資源之間的拓?fù)潢P(guān)系可以分為IP接口層、路由器層和PoP(Presence of Point)層拓?fù)浒l(fā)現(xiàn)。資源拓?fù)淇梢砸灾R(shí)圖譜的形式進(jìn)行可視化。圖3中的橢圓形節(jié)點(diǎn)表示資源實(shí)體,圓形節(jié)點(diǎn)表示資源的畫像,資源之間的關(guān)系由橢圓形節(jié)點(diǎn)之間的邊來表示。

圖3 資源畫像及拓?fù)?/p>
本節(jié)介紹了Rowhammer PUF的實(shí)現(xiàn)過程,并在兩個(gè)評(píng)價(jià)指標(biāo)下對(duì)PUF的整體性能進(jìn)行了評(píng)估。
本文基于Frigo等人[19]提出的many-sided rowhammer工具在運(yùn)行Linux操作系統(tǒng)的個(gè)人電腦上實(shí)現(xiàn)了Rowhammer PUF。我們首先定義PUF的挑戰(zhàn)和響應(yīng),然后提供實(shí)現(xiàn)PUF的算法。
PUF挑戰(zhàn)由多個(gè)參數(shù)組成,包括PUF地址、內(nèi)存訪問模式、數(shù)據(jù)模式、測(cè)量次數(shù)等。在算法實(shí)現(xiàn)中,每個(gè)參數(shù)都會(huì)影響PUF的響應(yīng)值,通過選擇合適的挑戰(zhàn)參數(shù),可以獲得更穩(wěn)定的響應(yīng)。需要考慮的參數(shù)包括:
(1)PUF地址。PUF地址由行基址和地址偏移量組成。行基址定義為每個(gè)bank的第1行,通過更改地址偏移量來更改PUF的起始地址。PUF地址的選取對(duì)PUF挑戰(zhàn)有直接的影響,因此對(duì)于不同的PUF挑戰(zhàn),PUF地址不應(yīng)相同。
(2)Hammering模式。本文使用Many-sided內(nèi)存訪問模式,其中變量是內(nèi)存訪問行的數(shù)量n,其鄰接行是受害行(即PUF行)。PUF地址和內(nèi)存訪問模式共同決定了PUF的大小,對(duì)于不同的PUF挑戰(zhàn),內(nèi)存訪問行和PUF行不應(yīng)重疊。
(3)數(shù)據(jù)模式。數(shù)據(jù)模式由寫入內(nèi)存訪問行和PUF行的初始值決定。由于內(nèi)存單元存在兩種不同的比特邏輯,該參數(shù)也對(duì)PUF的響應(yīng)值有很大影響。通過為內(nèi)存訪問行和PUF行選擇合適的初始值,可以獲得更多的比特翻轉(zhuǎn)。例如,將內(nèi)存訪問行初始化為0x00,將PUF行初始化為0xFF,或分別將二者初始化為0x55和0xAA。
(4)測(cè)量次數(shù)。測(cè)量次數(shù)包括訪問的bank數(shù)量以及訪問每個(gè)內(nèi)存訪問行的次數(shù),對(duì)于每個(gè)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)集合中的一個(gè)元素表示發(fā)生比特翻轉(zhuǎn)的位置,其格式為(bank,row,column)=(x,y,z),表示在第x個(gè)bank中的y行和z列中發(fā)生比特翻轉(zhuǎn)。
PUF查詢是指通過輸入PUF挑戰(zhàn)得到PUF響應(yīng)的過程。Rowhammer PUF的查詢過程在算法1中進(jìn)行了描述,其中變量m是對(duì)測(cè)量次數(shù)的計(jì)數(shù),變量b是對(duì)bank數(shù)量的計(jì)數(shù)。首先根據(jù)PUF地址、內(nèi)存訪問模式和數(shù)據(jù)模式初始化內(nèi)存訪問行和PUF行。定義的每個(gè)bank都需要相同的初始化操作,然后在定義的各個(gè)bank中,根據(jù)內(nèi)存訪問模式訪問定義的內(nèi)存訪問行。之后掃描PUF行并輸出發(fā)生比特翻轉(zhuǎn)的位置,最后所有比特翻轉(zhuǎn)位置的集合就構(gòu)成了PUF響應(yīng)。

算法1 Rowhammer PUF查詢過程
本文對(duì)兩塊相同設(shè)計(jì)、規(guī)格和生產(chǎn)批次的DIMM進(jìn)行了Rowhammer PUF的可靠性和唯一性測(cè)試。測(cè)試計(jì)算機(jī)的CPU型號(hào)是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之間的一個(gè)區(qū)別在于,DRAM PUF的響應(yīng)反映的是內(nèi)存中比特翻轉(zhuǎn)的位置。因此,經(jīng)典指標(biāo)中使用的漢明距離并不適合于評(píng)價(jià)DRAM PUF的特性。本文使用Jaccard指標(biāo)來評(píng)價(jià)Rowhammer PUF的可靠性和唯一性[23],其中獲得的PUF響應(yīng)集合用S表示。計(jì)算兩個(gè)PUF響應(yīng)集合之間相似性的Jaccard指標(biāo)公式為
可靠性衡量同一PUF在不同測(cè)量中對(duì)相同挑戰(zhàn)的響應(yīng)之間的差異。本文使用指標(biāo)Jintra(S1,S2)表示Rowhammer PUF的可靠性。由于存在測(cè)量噪聲,每個(gè)測(cè)量結(jié)果都不完全相同,但理想情況下,兩個(gè)集合中包含的比特翻轉(zhuǎn)位置應(yīng)該相同,因此Jintra的理想值為1。
唯一性衡量不同PUF在不同測(cè)量中對(duì)相同挑戰(zhàn)的響應(yīng)之間的差異。本文使用指標(biāo)Jinter(S1,S2)表示Rowhammer PUF的唯一性。理想情況下,兩個(gè)集合中包含的比特翻轉(zhuǎn)位置不應(yīng)重疊,因此Jinter的理想值為0。
在測(cè)試中,每一次PUF查詢都使用相同的PUF挑戰(zhàn),其參數(shù)設(shè)置如表1所示。本文將PUF地址固定在每個(gè)bank的第1行,一共測(cè)量了5個(gè)bank。由于某些 DDR4 DRAM具有TRR機(jī)制,因此某些具有比特翻轉(zhuǎn)的行可能會(huì)在下一次測(cè)量中被刷新,從而導(dǎo)致沒有比特翻轉(zhuǎn)。為此,本文將內(nèi)存訪問行數(shù)設(shè)置為22行,并在每次PUF查詢中進(jìn)行10次測(cè)量。PUF行和內(nèi)存訪問行分別初始化為0x55和0xAA,以滿足鄰接行對(duì)應(yīng)的cell的值是相反的,這樣可以滿足導(dǎo)致比特翻轉(zhuǎn)的條件。

表1 PUF 參數(shù)設(shè)置
在給定的PUF挑戰(zhàn)參數(shù)下,本文對(duì)兩塊DIMM進(jìn)行了20次PUF查詢,隨機(jī)選擇2次查詢結(jié)果構(gòu)成集合S1和S2,并測(cè)試了所有可能的組合。兩塊DIMM之間的唯一性為0,DIMM1的平均可靠性為0.62,DIMM2的平均可靠性為0.63,評(píng)估結(jié)果如圖4所示。

圖4 Jaccard指標(biāo)下的唯一性和可靠性評(píng)價(jià)
在測(cè)繪的主動(dòng)探測(cè)過程中,需要使用Rowhammer PUF為網(wǎng)絡(luò)空間中的物理資源分配唯一的物理指紋,并對(duì)目標(biāo)設(shè)備進(jìn)行標(biāo)識(shí)和追蹤。根據(jù)在PUF評(píng)估中的觀察結(jié)果,不同PUF查詢中包含的比特翻轉(zhuǎn)位置的數(shù)量是不一樣的。當(dāng)各集合的大小相差很大時(shí),通過原始Jaccard指標(biāo)計(jì)算出的值無法準(zhǔn)確反映PUF可靠性的實(shí)際情況。
原始的Jaccard指標(biāo)并不適合在測(cè)繪場(chǎng)景中用于計(jì)算目標(biāo)設(shè)備的相似性。因此,本文修改Jaccard指標(biāo)為
其中,Sd表示從前幾個(gè)查詢中獲得的PUF響應(yīng)集合的組合,例如Sd=S1∪S2∪S3。Sn表示新查詢的PUF響應(yīng)集。
使用 J accard′指標(biāo)獲得的評(píng)估結(jié)果如圖5所示。本文從20個(gè)PUF響應(yīng)查詢中任意選擇3個(gè)查詢結(jié)果來形成數(shù)據(jù)庫Sd,然后將剩余的其他單個(gè)查詢結(jié)果作為Sn。并測(cè)試了所有可能的組合,得到了兩塊測(cè)試DIMM的可靠性以及兩塊DIMM之間的唯一性。在現(xiàn)有的測(cè)試數(shù)據(jù)下,兩塊DIMM之間的唯一性值為0,DIMM1的可靠性平均值為0.88,DIMM2的可靠性平均值也是0.88。結(jié)果表明唯一性和可靠性值的分布差異非常大,這意味著可以完美地區(qū)分和標(biāo)識(shí)兩個(gè)不同的設(shè)備。

圖5 J accard′指標(biāo)下的唯一性和可靠性評(píng)價(jià)
本文在實(shí)驗(yàn)室環(huán)境中進(jìn)行了3組測(cè)繪實(shí)驗(yàn),以模擬真實(shí)世界中的測(cè)繪場(chǎng)景。實(shí)驗(yàn)結(jié)果表明,本文提出的測(cè)繪框架能夠準(zhǔn)確識(shí)別網(wǎng)絡(luò)空間中的設(shè)備,并獲得目標(biāo)設(shè)備的畫像。
測(cè)繪實(shí)驗(yàn)架構(gòu)如圖6所示。實(shí)驗(yàn)網(wǎng)絡(luò)環(huán)境為局域網(wǎng)環(huán)境,網(wǎng)關(guān)地址設(shè)置為192.168.171.1。以筆記本電腦作為探測(cè)主機(jī),部署Nmap, Zmap等傳統(tǒng)網(wǎng)絡(luò)掃描軟件,Hydra, MetaSploit等漏洞利用軟件,以及FTP(File Transfer Protocol)文件共享軟件等。其他4臺(tái)計(jì)算機(jī)作為待探測(cè)的目標(biāo)設(shè)備。
本文進(jìn)行了3組實(shí)驗(yàn),每組實(shí)驗(yàn)分為以下3個(gè)步驟:
(1)獲取系統(tǒng)權(quán)限。通過安全外殼協(xié)議(Secure Shell Protocol, SSH)服務(wù)的漏洞獲取當(dāng)前操作系統(tǒng)的超級(jí)管理員權(quán)限。
(2)獲取目標(biāo)設(shè)備的物理指紋。使用第1步中獲得的超級(jí)管理員權(quán)限,執(zhí)行構(gòu)造的PUF實(shí)現(xiàn)代碼,以獲取目標(biāo)設(shè)備的物理指紋和其他屬性,并通過FTP服務(wù)將結(jié)果回傳探測(cè)主機(jī)。此步驟需要收集目標(biāo)設(shè)備盡可能多的PUF響應(yīng),以形成目標(biāo)設(shè)備的物理指紋數(shù)據(jù)庫。
(3)分析和可視化。分析在第2步獲得的數(shù)據(jù),形成目標(biāo)設(shè)備的物理指紋數(shù)據(jù)庫,構(gòu)建目標(biāo)設(shè)備的畫像。分析目標(biāo)設(shè)備之間的網(wǎng)絡(luò)行為并可視化網(wǎng)絡(luò)拓?fù)洹?/p>
本文設(shè)置多組對(duì)照實(shí)驗(yàn),通過更改目標(biāo)設(shè)備的虛擬屬性,例如IP地址和MAC地址等,對(duì)比證明本文所涉及方案可以通過探測(cè)到的物理指紋唯一準(zhǔn)確識(shí)別目標(biāo)設(shè)備。
第1組實(shí)驗(yàn)使用4臺(tái)計(jì)算機(jī)作為目標(biāo)設(shè)備。其中A1和A2模擬用戶使用的終端電腦,A3模擬網(wǎng)站服務(wù)器,A4模擬數(shù)據(jù)庫服務(wù)器,為網(wǎng)站提供服務(wù)。通過分析掃描的端口數(shù)據(jù),可以得到設(shè)備之間的拓?fù)浣Y(jié)構(gòu),如圖7所示。

圖7 網(wǎng)絡(luò)拓?fù)?/p>
根據(jù)探測(cè)結(jié)果中繪制的目標(biāo)設(shè)備畫像如表2所示。目標(biāo)設(shè)備的畫像由物理指紋、MAC地址、IP地址、端口號(hào)、網(wǎng)關(guān)、內(nèi)存序列號(hào)、操作系統(tǒng)版本和CPU型號(hào)組成。對(duì)于每個(gè)目標(biāo)設(shè)備,探測(cè)過程中收集足夠的PUF響應(yīng),以形成相應(yīng)的物理指紋數(shù)據(jù)庫,數(shù)據(jù)庫存儲(chǔ)與PUF挑戰(zhàn)對(duì)應(yīng)的比特翻轉(zhuǎn)位置的結(jié)果。
第2組實(shí)驗(yàn)修改4臺(tái)設(shè)備的操作系統(tǒng)MAC地址、IP地址和開放的服務(wù),然后執(zhí)行新的探測(cè),獲得的新目標(biāo)設(shè)備的畫像如表3所示。
對(duì)于傳統(tǒng)的網(wǎng)絡(luò)探測(cè)方法,這4個(gè)設(shè)備將被標(biāo)識(shí)為4個(gè)新設(shè)備B1, B2, B3和B4。本文的目標(biāo)是識(shí)別新探測(cè)到的目標(biāo)設(shè)備和先前探測(cè)到的設(shè)備之間的對(duì)應(yīng)關(guān)系。換句話說,即使目標(biāo)設(shè)備更換了其所有的虛擬屬性,仍然可以通過其唯一的物理指紋來識(shí)別目標(biāo)設(shè)備。
將新探測(cè)到的目標(biāo)設(shè)備的PUF查詢結(jié)果與先前探測(cè)到的設(shè)備的物理指紋數(shù)據(jù)庫進(jìn)行匹配,根據(jù)Jaccard′指標(biāo)計(jì)算的結(jié)果如表4所示。結(jié)果表明,雖然設(shè)備A1改變了其IP地址、MAC地址和操作系統(tǒng)版本,但仍然可以通過物理指紋識(shí)別出設(shè)備A1。設(shè)備B1是以前的設(shè)備A1,而設(shè)備B2是以前的設(shè)備A3,設(shè)備B3是以前的設(shè)備A2,設(shè)備B4仍然是以前的設(shè)備A4。

表4 實(shí)驗(yàn)2與實(shí)驗(yàn)1設(shè)備之間的J accard′值
在第2組實(shí)驗(yàn)的基礎(chǔ)上,用新設(shè)備替換了第2組實(shí)驗(yàn)中4個(gè)設(shè)備中的兩個(gè),另外兩個(gè)設(shè)備保持不變。操作系統(tǒng)版本、MAC地址、IP地址、端口等屬性也保持不變,與表3一致。
實(shí)驗(yàn)3的目標(biāo)是標(biāo)識(shí)出新添加的設(shè)備,新設(shè)備的所有虛擬屬性與第2組實(shí)驗(yàn)中的設(shè)備相同。根據(jù)Jaccard′指標(biāo)計(jì)算的結(jié)果如表5所示,可以知道C1和C3是新添加的設(shè)備,設(shè)備C2和C4是以前的設(shè)備B2和B4。

表5 實(shí)驗(yàn)3與實(shí)驗(yàn)1設(shè)備之間的J accard′值
Schaller等人[24]提出了第1個(gè)利用Rowhammer效應(yīng)實(shí)現(xiàn)PUF的工作。他們?cè)谘b有DDR2內(nèi)存的PandaBoard上實(shí)現(xiàn)了Rowhammer PUF,并測(cè)試了PUF在不同條件下的性能。這項(xiàng)工作是開創(chuàng)性的,給我們的工作帶來了很多啟發(fā)。但PandaBoard上Rowhammer PUF的實(shí)現(xiàn)不需要考慮地址映射問題且不存在任何針對(duì)Rowhammer的防護(hù)機(jī)制,本文在個(gè)人電腦上實(shí)現(xiàn)的Rowhammer PUF需要進(jìn)行地址映射并需要繞過相關(guān)的軟硬件防護(hù)機(jī)制,因此難度更大。
現(xiàn)有的DRAM PUF都是在嵌入式設(shè)備中實(shí)現(xiàn)的,無法直接應(yīng)用于個(gè)人電腦,或是可應(yīng)用于個(gè)人電腦但不適用于測(cè)繪場(chǎng)景。基于衰減的DRAM PUF[25]需要禁用一段時(shí)間的內(nèi)存刷新,禁用時(shí)間過久將導(dǎo)致系統(tǒng)崩潰。為了實(shí)現(xiàn)運(yùn)行時(shí)獲取PUF響應(yīng),程序需要在設(shè)備啟動(dòng)時(shí)執(zhí)行,或刷新內(nèi)存的關(guān)鍵區(qū)域以防止崩潰。無法滿足不影響被檢測(cè)設(shè)備正常功能的要求,不適用于本文的測(cè)繪場(chǎng)景。
基于延時(shí)的DRAM PUF[23]通過操縱特定的定時(shí)參數(shù)使內(nèi)存處于未定義行為的特殊狀態(tài),通過這種方式,可以在系統(tǒng)運(yùn)行時(shí)獲得PUF響應(yīng),但在運(yùn)行時(shí)修改DRAM的tRCD等定時(shí)參數(shù)。據(jù)我們所知,大多數(shù)個(gè)人電腦只能在BIOS中修改這些定時(shí)參數(shù),這不符合測(cè)繪情景的要求。
Sutar等人[26]提出的D-PUF在基于Altera Stratix IV GX FPGA 的 Terasic TR4-230 開發(fā)板和DDR3 DRAM內(nèi)存上實(shí)現(xiàn),Najafi等人[23]提出的Deep PUF在Xilinx XC6SLX45 FPGA和DDR3 DRAM上實(shí)現(xiàn),Talukder等人[27]提出的PreLatPUF在Xilinx Virtex-6 FPGA和DDR3 DRAM上實(shí)現(xiàn)。這些工作并未考慮PUF在個(gè)人電腦中的使用情景。
本文提出一個(gè)完整而詳細(xì)的測(cè)繪實(shí)例。首先,本文提出一個(gè)基于PUF的測(cè)繪框架,其中PUF的作用是生成可以唯一標(biāo)識(shí)目標(biāo)設(shè)備的物理指紋。其次,本文給出了在配備DDR4內(nèi)存的個(gè)人計(jì)算機(jī)上實(shí)現(xiàn)Rowhammer PUF的詳細(xì)過程,并評(píng)估了實(shí)現(xiàn)PUF的性能。最后,本文在構(gòu)建的局域網(wǎng)中進(jìn)行了測(cè)繪實(shí)驗(yàn)。結(jié)果表明,本文提出的方法能夠準(zhǔn)確地識(shí)別和追蹤目標(biāo)設(shè)備,即使目標(biāo)設(shè)備改變了其IP地址、MAC地址,甚至操作系統(tǒng)。
本文基于PUF的測(cè)繪框架目前使用Rowhammer PUF來生成物理指紋。當(dāng)前的Rowhammer技術(shù)無法保證在所有的DDR4內(nèi)存,尤其是具有ECC功能的內(nèi)存上導(dǎo)致比特翻轉(zhuǎn)。同時(shí)也還存在許多保護(hù)機(jī)制,如TRR機(jī)制等被用于檢測(cè)和防止比特翻轉(zhuǎn)。但與此同時(shí),新的Rowhammer技術(shù)也在不斷開發(fā),且互聯(lián)網(wǎng)上部署的大多數(shù)設(shè)備都不是最新生產(chǎn)的,仍有大量的舊設(shè)備受到Rowhammer的影響。因此,本文計(jì)劃在未來開發(fā)適合測(cè)繪場(chǎng)景的新的設(shè)備指紋生成方法,并在未來進(jìn)行真實(shí)環(huán)境下的網(wǎng)絡(luò)空間測(cè)繪。