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

1. 什麼是邊信道攻擊?

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

1.1 通常分類

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

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

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

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

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

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

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

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

  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 四、line五、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

相關文章
相關標籤/搜索