基於邊信道的硬件攻擊小綜述


1. 什么是邊信道攻擊?

邊信道攻擊:side channel attack,簡稱SCA,也稱為側信道攻擊。不同於一般的攻擊形式,這是一種對加密電子設備在運行過程中的時間消耗、功率消耗或電磁輻射之類的側信道信息進行利用,從而獲取密碼信息的方法。這類攻擊的有效性遠高於傳統針對密碼算法進行數學分析或暴力破解的方法,給加密設備帶來了嚴重的威脅。

1.1 一般分類

  1. 緩存攻擊,通過獲取對緩存的訪問權而獲取緩存內的一些敏感信息,例如攻擊者獲取雲端主機物理主機的訪問權而獲取存儲器的訪問權;

  2. 計時攻擊,通過設備運算的用時來推斷出所使用的運算操作,或者通過對比運算的時間推定數據位於哪個存儲設備,或者利用通信的時間差進行數據竊取;

  3. 基於功耗監控的旁路攻擊,同一設備不同的硬件電路單元的運作功耗也是不一樣的,因此一個程序運行時的功耗會隨着程序使用哪一種硬件電路單元而變動,據此推斷出數據輸出位於哪一個硬件單元,進而竊取數據;

  4. 電磁攻擊,設備運算時會泄漏電磁輻射,經過得當分析的話可解析出這些泄漏的電磁輻射中包含的信息(比如文本、聲音、圖像等),這種攻擊方式除了用於密碼學攻擊以外也被用於非密碼學攻擊等竊聽行為,如TEMPEST攻擊(例如范·埃克竊聽、輻射監測);

  5. 聲學密碼分析,通過捕捉設備在運算時泄漏的聲學信號捉取信息(與功率分析類似);

  6. 差別錯誤分析,隱密數據在程序運行發生錯誤並輸出錯誤信息時被發現;

  7. 數據殘留,可使理應被刪除的敏感數據被讀取出來(例如冷啟動攻擊);

  8. 軟件初始化錯誤攻擊,現時較為少見,Row hammer是該類攻擊方式的一個實例,在這種攻擊實現中,被禁止訪問的存儲器位置旁邊的存儲器空間如果被頻繁訪問將會有狀態保留丟失的風險;

  9. 光學方式,即隱密數據被一些視覺光學儀器(如高清晰度相機、高清晰度攝影機等設備)捕捉。

1.2 已實現的邊信道攻擊

  1. 通過CPU緩存來監視用戶在瀏覽器中的快捷鍵及鼠標操作

    這種攻擊對最新型號的英特爾CPU有效,如Core i7,需運行在支持HTML5的瀏覽器上。帶有惡意JS的網頁在受害者電腦上執行后,會收集與之並行的其它進程的信息,有了這個信息,攻擊者可以繪制內存對按下按鍵和鼠標移動的反應情況,進而重塑用戶使用情景。(哥倫比亞大學)

  2. “聽譯”電子郵件密鑰

    通過智能手機從運行PGP程序的計算機中“聽譯”密鑰。這項最新的密鑰提取攻擊技術,能夠准確地捕捉計算機CPU解碼加密信息時的高頻聲音,並提取密鑰。(同時提出GnuPG來應對這種攻擊)

  3. 非智能手機+惡意軟件+目標PC

    從采購供應鏈下手,將特制難以檢測的惡意軟件植入電腦,該軟件會強制計算機的內存總線成為天線,通過蜂窩頻率將數據無線傳輸到手機上。攻擊者將接受和處理信號的軟件嵌入在手機的固件基帶中,這種軟件可以通過社會工程攻擊、惡意App或者直接物理接觸目標電話來安裝。

  4. 用手觸碰電腦即可破解密碼

    電腦CPU運算時造成“地”電勢的波動,用手觸碰筆記本電腦的外殼,接着再測量釋放到皮膚上的電勢,然后用復雜的軟件進行分析,最終得到計算機正在處理的數據。例如:當加密軟件使用密鑰解密時,監測這種波動就可得到密鑰。(GnuPG可以應對這種攻擊)

1.3 針對CPU緩存的幾種邊信道攻擊

  • Prime+Probe

    步驟1. Prime: 攻擊者用預先准備的數據填充特定多個cache 組;

    步驟2. Trigger: 等待目標虛擬機響應服務請求,將cache數據更新;

    步驟3. Probe: 重新讀取Prime 階段填充的數據,測量並記錄各個cache 組讀取時間。

  • Flush+Reload

    Flush-Reload方法是prime-probe方法的變種,基於共享內存實現,是一種跨內核、跨虛擬機的Cache 探測方法。在Flush 階段,攻擊者將監控的內存塊從cache中驅逐出去,然后在Trigger階段等待目標用戶訪問共享內存。在Reload階段,攻擊者重新加載監控的共享內存塊。如果在等待的期間,目標虛擬機訪問過的內存塊不需要重新加載,時間將會較短,因為這些數據已經被緩存在cache中。根據加載時間長短,可判定目標虛擬機訪問過的數據。

    Flush-Reload具體步驟如下:

    步驟1. Flush:將共享內存中特定位置映射的cache數據驅逐;

    步驟2. Trigger:等待目標虛擬機響應服務請求,更新Cache;

    步驟3. Reload:重新加載Flush階段驅逐的內存塊,測量並記錄cache組的重載時間。

  • Evict+Reload

    Evict+Reload和Flasu+Reload的攻擊流程基本一致,只是,通過驅逐(eviction)的方式,即從從Cache中移出一個行從而為新數據騰出空間的過程,用於替代Flush+Reload中的Flush指令缺失的情況。

  • Flush+Flush

    與Flush-Reload不同的是,Flush-Flush攻擊是基於clflush指令執行時間的長短來實施攻擊的。如果數據沒在Cache中則clflush指令執行時間會比較短,反之若有數據在cache中則執行時間會比較長。與其它Cache攻擊不同,Flush Flush側信道攻擊技術在整個攻擊過程中是不需要對內存進行存取的,因此該攻擊技術更加隱蔽。然而根據作者的經驗,由於有無數據情況下Cache被flush的時間差別其實並非特別明顯,因此在攻擊過程中數據判斷的精度並不高。

    Flush-Flush具體步驟如下:

    步驟1:通過flush清空Cache原始數據;

    步驟2:等待目標進程運行,更新Cache,並刷新共享緩存行,測量刷新時間;

    步驟3:根據測量時間判斷原始數據是否被緩存。

    該方法攻擊原理如圖所示:

2. 測信道如何應用到硬件攻擊

參考資料:https://meltdownattack.com

2.1 熔斷攻擊(meltdown)

​ 亂序執行可以簡單的分為三個階段,如下圖所示:

​ 每個階段執行的操作如下:

1. 獲取指令,解碼后存放到執行緩沖區(保留站);
2. 亂序執行指令,結果保存在一個結果序列中;
3. 退休期,重新排列結果序列及安全檢查(如地址訪問的權限檢查),提交結果到寄存器。
Meltdown利用代碼:
1 	; rcx = kernel address, rbx = probe array
2 	xor rax, rax
3 	retry:
4 	mov al, byte [rcx]			//step 1
5 	shl rax, 0xc				//rax*4096
6	jz retry
7 	mov rbx, qword [rbx + rax]

結合Meltdown利用的代碼片段來看,Meltdown漏洞的利用過程有4步:

1. 指令獲取解碼;
2. 亂序執行3條指令,line 5和line 7要等line 4中的讀取內存地址的內容完成后才開始執行,line 7會將要訪問的rbx數組元素所在的頁加載到CPU Cache中;
3. 對2的結果進行重新排列,對line 4、line5、line7這3條指令進行安全檢測,發現訪問違例,會丟棄當前執行的所有結果,恢復CPU狀態到亂序執行之前的狀態,但是並不會恢復CPU Cache的狀態;
4. 通過緩存測信道攻擊,可以知道哪一個數組元素被訪問過,也即對應的內存頁存放在中,從而推測出內核地址的內容。

2.2 幽靈攻擊

​ 與Meltdown類似,Spectre的原理是,當CPU發現分支預測錯誤時會丟棄分支執行的結果,恢復CPU的狀態,但是不會恢復CPU Cache的狀態,利用這一點可以突破進程間的訪問限制,從而獲取其他進程的數據。

幽靈攻擊代碼示例:
if (x < array1_size) {
	y = array2[array1[x] * 4096];
	// do something detectable when
	// speculatively executed
}

​ 具體攻擊過程可以分為三個階段:

1. 訓練CPU的分支預測單元使其在運行利用代碼時會進行特定的預測執行;
2. 預測執行使得CPU將要訪問的地址的內容讀取到CPU Cache中;
3. 通過緩存測信道攻擊,可以知道哪一個數組元素被訪問過,也即對應的內存頁存放在CPU Cache中,從而推測出地址的內容。

3. 目前研究進展怎樣?

熔斷攻擊和幽靈攻擊提出之后,先后出現了一系列利用計算機硬件設計時遺留下來的缺陷進行攻擊的方法。

3.1 Foreshadow

Foreshadow是針對Intel處理器SGX技術的攻擊,它使攻擊者能夠竊取存儲在個人計算機或第三方雲中的敏感信息。Foreshadow有兩種版本,一種是旨在從SGX安全區提取數據的原始攻擊,另一種是影響虛擬機(VM),虛擬機管理程序(VMM),操作系統(OS)內核內存和系統管理模式(SMM)內存的下一代版本。

從較高層次來說,SGX是現代Intel CPU的一項新功能,即使整個系統都在攻擊者的控制之下,它也可以使計算機保護用戶的數據。 雖然以前認為SGX可以抵抗推測性執行攻擊(例如Meltdown和Spectre),但Foreshadow演示了如何利用推測性執行來讀取SGX保護的內存的內容以及提取機器的專用證明密鑰。更糟的是,由於SGX的隱私功能,一份證明報告無法與其簽名人的身份聯系在一起。 因此,僅需使用一台受損的SGX計算機即可破壞對整個SGX生態系統的信任。

3.2 MDS(ZombieLoad, Fallout, RIDL)

參考資料:https://mdsattacks.com

  • ZombieLoad

    在Meltdown,Spectre和Foreshadow之后,作者發現了現代處理器中的更多關鍵漏洞。 ZombieLoad攻擊允許在計算機訪問敏感數據和密鑰時竊取它們。盡管程序通常只能看到自己的數據,但是惡意程序可以利用內部CPU緩沖區來掌握當前由其他正在運行的程序處理的機密。這些秘密可以是用戶級別的秘密,例如瀏覽器歷史記錄,網站內容,用戶密鑰和密碼,也可以是系統級別的秘密,例如磁盤加密密鑰。

    更新:ZombieLoad的新變體可以對耐MDS的CPU進行攻擊。在2019年11月14日,作者提出了ZombieLoad的新變體,可以對CPU進行攻擊,其中包括針對芯片中MDS的硬件緩解措施。使用Variant 2(TAA),數據仍然可以在諸如Cascade Lake之類的微體系結構上泄漏,而其他MDS攻擊(如RIDL或Fallout)是不可能的。此外,作者表明,結合微碼更新作為基於MDS攻擊的對策,基於軟件的緩解措施是不夠的。

  • RIDL

    RIDL顯示,攻擊者可以利用MDS漏洞在實際環境中發起攻擊並泄漏敏感數據。通過分析對CPU流水線的影響,作者開發了各種實用的漏洞利用方法,它們從不同的內部CPU緩沖區(例如,行填充緩沖區和加載端口)泄漏運行中的數據,這些緩沖區在CPU從內存加載或存儲數據時使用。實驗表明,RIDL可以在搭載最新英特爾CPU的計算機上運行非特權代碼,無論是使用共享的雲計算資源,還是在惡意網站或廣告上使用JavaScript,都可以跨越任何安全邊界從同一台計算機上運行的其他程序竊取數據: 其他應用程序,操作系統內核,其他VM(例如在雲中),甚至是安全(SGX)區域。

  • Fallout

    參考資料:https://foreshadowattack.eu

    ​ Fallout表明攻擊者可以從存儲緩沖區泄漏數據,每次CPU流水線需要存儲任何數據時都會使用該存儲緩沖區。更糟糕的是,沒有特權的攻擊者隨后可以從CPU的存儲緩沖區中選擇泄漏的數據。實驗證明,Fallout可用於打破內核地址空間布局隨機化(KASLR),以及泄漏由操作系統內核寫入內存的敏感數據。具有諷刺意味的是,與較早的硬件相比,英特爾在最新的Coffee Lake Refresh i9 CPU中采用的最新硬件對策可防止Meltdown崩潰,但是,這使他們更容易受到Fallout的影響。

  • RAMBleed

    ​ 熔斷攻擊和幽靈攻擊的主要提出者,他們的最新工作將發表在2020年的S&P(security&privacy)會議上,題為“RAMBleed: Reading Bits in Memory Without Accessing Them”。

    ​ Rowhammer是DRAM單元中的一個存在的問題,它可使無特權的攻擊者翻轉存儲模塊上相鄰行中的位值。先前的工作已經將此方法用於跨安全邊界的各類型錯誤攻擊,攻擊者在其中翻轉難以訪問的位,通常會導致特權升級。雖然攻擊者已經可以通過常規的寫操作來修改其私有內存,但是,人們普遍認為,攻擊者自己的私有內存中的位翻轉不會帶來安全隱患。通過采用Rowhammer作為讀取邊信道,作者證明了這種假設是不正確的。更具體地說,作者展示了無特權的攻擊者如何利用Rowhammer引起的位翻轉和附近行中的位之間的數據依賴性來推斷這些位,包括屬於其他進程和內核的值。因此,這項工作的主要貢獻是表明,Rowhammer不僅威脅到完整性,而且也威脅到機密性。此外,與需要持續進行位翻轉的Rowhammer寫端通道相反,即使ECC存儲器檢測並糾正了每個位翻轉,作者的讀取通道也可以成功。與以前的Rowhammer攻擊不同,RAMBleed攻擊不需要使用大頁面,並且可以在默認配置下在Ubuntu Linux上運行。

3.3 國內研究現狀

清華大學魏少軍、劉雷波團隊提出一種基於動態可重構計算處理器實時監控的至強®內核硬件安全增強服務器CPU芯片。

劉雷波老師主頁:https://www.tsinghua.edu.cn/publish/ime/5910/2016/20160812104827556853172/20160812104827556853172_.html

隨着計算機和半導體技術的發展,CPU 芯片已經成為高度復雜的芯片,其設計、制造、封裝及測試等過程涉及到全球化的產業分工,要對所有環節實施有效監管幾乎不可能。此外,要在組成 CPU 的數十億到上百億顆晶體管中發現僅由數十顆晶體管就可以組成的惡意硬件也是不可能完成的任務。而人為疏忽或技術限制而造成的硬件漏洞,更是難尋蹤跡,防不勝防。傳統的通過檢查 CPU 芯片的設計源碼、網表、版圖、管芯來查找惡意硬件和硬件漏洞的方法就如同大海撈針,完全不可行。2016 年,清華大學魏少軍團隊提出了基於高安全、高靈活可重構芯片架構的“CPU 硬件安全動態監測管控技術”。 該技術通過動態、實時監控 CPU 運行過程中的“合法行為”來發現“非法行為”,從根本上克服了傳統的 CPU 安全隱患、技術漏洞難以被監測和發現的困難。硬件木馬、硬件漏洞(如“熔斷”、“幽靈”)、硬件后門以及惡意利用硬件前門的行為,都能被該技術迅速發現並根據需要進行管控。

4. 發展前景怎樣?

對邊信道攻擊的學術研究起於1996-1999年,傳統的密碼分析技術往往基於數學算法,效果很不理想,邊信道攻擊是一種不依賴於軟件環境的攻擊方法,它主要依靠一些物理信號現來判斷電路中正在處理的數據,這種攻擊方式比傳統的方法更致命,更重要的一點,基於軟件的漏洞利用可以通過升級、打補丁等方式進行修復,如果要對基於硬件信號進行利用的漏洞進行修復,就變得十分困難。

早在1998年,有關利用Cache命中率進行密鑰分析的思路就已經被提出來。在過去十年,利用旁道技術對x86 CPU實施的Cache攻擊已經被證明是一項極其強大的攻擊方法。2017年,隨着幽靈攻擊(meltdown)和熔斷攻擊(spectre)的提出,利用旁信道技術針對CPU進行攻擊的研究受到越來越多的人關注。

伴隨着中美貿易戰的持續進行,發展中國自己的芯片產業變得尤為重要。如果要發展好自己的芯片產業,除了在芯片核心技術上進行研究,還必須要保證芯片安全性,如果在芯片已經投入生產並且應用在國內大量廠商、政務機關之后,才被發現存在漏洞,這對芯片生產公司而言,這是一場巨大的災難。在芯片投入生產前盡可能多地考慮安全問題,才能避免重復Intel目前的這種困境。

雖然清華大學魏少軍團隊提出的基於高安全、高靈活可重構芯片架構的“**CPU **硬件安全動態監測管控技術”已經投入生產,但是,針對芯片安全的研究仍然還有很大的空間和潛力。

津逮®CPU:http://www.montage-tech.com/cn/Jintide_CPU/index.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM