iVNMM是nvmm安全的解決方案
本文很高興向大家推薦了i-NVMM,這是由Intel的Siddhartha Chhabra博士和北卡羅來納州立大學Yan Solihin博士共同研究的一種針對上文提到的風險解決方案。在這兩位開發者的論文《i-NVMM:帶增量加密的非易失性主記憶體系統》中,對於i-NVMM的解釋是這樣的:“針對NVMM的數據隱私保護系統。I-NVMM基於一種記憶體端的加密引擎對電腦主記憶體進行加密,因此不受作業系統和硬體架構限制。”
這段話聽上去很簡單,但實際上並不簡單。首先讓我們先看一下下面這個結構圖:
下面是這兩位開發者的解釋:
“圖中顯示的是在NVMM上添加的一個硬體組件。其中一個組件是頁面狀態表Page Status Table (PST), 即通過一個SRAM結構隨時跟蹤每個頁面的狀態:
· 1-bit表示當前頁面是否處於加密狀態(Enc-Status)
· 該頁面的最後訪問時間(LastAcc)
· 該頁面被訪問的總次數(numAcc)
· 本頁之後的下一個訪問頁(NextPage)
· 1-bit表示一個頁面是否正處在加密/解密過程中(Pending)
LastAcc被用於Inert Page Prediction(IPP)技術,用來預測一個非活動頁面並進行加密。NumAcc是用來記錄某個已加密數據頁已經收到了多少訪問請求,進而判斷是否要將這個加密頁進行解密。”
這樣看來似乎還是不夠明白,於是作者決定直接打電話聯繫這個技術的研發人員。Dr. Chhabra同意回答作者有關i-NVMM的一些問題。下面是作者對Dr. Chhabra的電話採訪記錄供讀者參考:
Kassner: 首先要說一下,我對非易失性存儲器(NVM)比較熟悉,但是之前沒有聽說過非易失性主存儲器(NVMM)。這兩者有什麼區別嗎?
Chhabra: 你可以把NVM看作是電腦中的存儲系統,可以在斷電後繼續保持其中的存儲內容不發生改變,目前的隨身碟還有硬碟等,都可以看作是NVM。因此NVM並不是什麼新概念,早在上世紀60年代就已經出現了。而NVMM是一個新的概念。你可以把它想像成目前DRAM的替代品。在其它方面,NVMM包含了NVM的各種技術,類似於相變記憶體(PCM)或者磁阻RAM(MRAM)等技術。
Kassner: NVM的非易失性特性可以說是一把雙刃劍,對於電腦存儲來說是好事,但是對於安全來說不見得是好事。我猜上世紀60年代,人們在推出NVM這個概念時沒有過多的考慮過安全性問題。你和Solihin博士在這方面給出了解決方案:i-NVMM。你能不能大致的介紹一下i-NVMM的技術原理呢?
Chhabra: 我們意識到對於存儲來說,不論是否安全,主記憶體的非易失性都是一個相當重要的特性。因此我們決定找出一種解決方案,能夠在既保證規避安全風險,又能讓非易失性這個特性在當今的電腦系統中充分發揮作用下面是我們論文中的一段話,也是對於我們的工作最好的總結:
作為一種新出現的技術,非易失性主記憶體(NVMM)系統存在一個安全隱患,即存儲在其中的數據在斷電後仍然長時間留存,使得黑客可以在獲取物理硬體設備後進行數據提取,獲得主記憶體中的非加密敏感數據。此次研究工作的目的就是要找到一種安全解決方案,避免上述安全隱患。
根據我們的研究,我們推出了i-NVMM,這是一種針對NVMM的數據隱私保護方案,主記憶體中的數據採用增量(incrementally)方式被加密,即不同的數據在記憶體中被加密的時間不同,加密時間的選擇則是根據其是否還會被處理器使用而定。
之所以採用增量加密方式,是因為每個應用程式在執行過程中,同一時刻需要處理的數據體積遠小於程式進入主記憶體的體積。因此,只要判斷出正在接受處理的數據,並把那些暫時不需要處理的數據進行加密,i-NVMM就可以確保記憶體中的大部分數據都處於加密保護狀態,同時也不會對性能造成明顯影響。
我們的實驗證明這個想法是可行的。根據SPEC2006 benchmarks統計i-NVMM保證了主記憶體中78%的數據處於加密保護狀態,同時程式延遲只比非加密狀態多了3.7%,對於NVMM寫入次數的影響更是微不足道。所有加密機制都是在記憶體模組中通過簡單的硬體結構實現的。
Kassner: 當你在談論NVMM和i-NVMM時,你是否建議大家將DRAM替換為NVMM?
Chhabra: NVMM目前還處於研究中,未來有很多種可能。
從物理接口來說,很久前就出現的NVM技術完全可以取代DRAM,但是NVM的讀寫速度一般來說要比DRAM慢,而且寫入次數也不如DRAM。這兩大問題,迫使計算機的存儲系統成為如今這種混合型的系統。即為了利用DRAM的高速性能和更高的讀寫耐久度,在主記憶體系統中使用DRAM,而在對速度要求不高的環境下使用諸如PCM這樣的非易失性存儲器。
而在我們的加密研究中,我們所說的NVMM是可以完全取代DRAM的。不過這種安全結局方案也可以套用於我上面所說的目前這種混合型的存儲系統。
Kassner: 在論文中,您涉及到了i-NVMM在加密和解密數據時,對數據是否需要被加密有一個選擇過程。這種選擇可靠嗎?
Chhabra: i-NVMM通過預測來判斷某段數據是否會被程式使用。實際上,一個程式涉及的數據要比他實際運行時需要的數據多很多。程式涉及的數據,我們可以稱其為常駐集,而程式在穩定狀態下會使用到數據我們稱其為工作集。
如果加密方案無法區分程式數據的這種不同,就會將整個記憶體數據都進行加密。這將導致程式運行效率大大降低,因為程式用到的所有數據都需要隨時進行解密供程式使用,然後再被加密存放,有的數據可能因此被反覆加密解密。
通過檢測不活躍的記憶體頁面(通過記憶體模組的硬體計數功能),記憶體端的加密引擎可以預測哪些記憶體頁面數據不屬於常駐集(或者叫惰性頁面)。一旦某個頁面被判斷為惰性頁面,就會被記憶體端的加密引擎進行加密。
Kassner: 你是怎么設計i-NVMM的?是通過增加固件的方式,還是在記憶體模組附加輔助硬體?
Chhabra: 我們認為i-NVMM的實現應該完全在記憶體模組內部,不需要在記憶體模組外增加額外的硬體、軟體、固件支持等。
Kassner: 除了加密數據外,i-NVMM在安全性方面還做了哪些改進呢?我想既然i-NVMM帶有記憶體預測能力,是否表示它能預防緩衝溢出?
Chhabra: 這個不行,i-NVMM並不是設計用來防止你提到的這種軟體攻擊的。它只是用來保護NVMM中的非易失數據。看來我應該在人們選擇NVMM時明確說明,i-NVMM並不能保護系統數據不被攻擊。
Kassner: 當電腦關機時會怎么樣呢?記憶體會徹底清空?或者i-NVMM會將記憶體中的全部數據都加密儲存?這方面的問題才是人們選擇i-NVMM時最關心的吧?
Chhabra: 我們不希望在電腦關閉時,記憶體中的數據出於安全考慮而全部被清空,因為這樣就沒有必要選擇NVM存儲技術了。實際上,當電腦關機時, i-NVMM會將記憶體中未加密的數據進行加密(這些數據是程式正在使用的數據)。
在攻擊情節中,攻擊者會竊取一個正在運行的系統上的記憶體,而我們要做的就是確保攻擊者無法從該記憶體中獲取任何有用數據。i-NVMM記憶體中帶有一個小型CMOS電池,確保一旦斷電後,記憶體模組有足夠的電力維持將其中的未加密數據進行加密。
Kassner: 未來i-NVMM會有什麼發展嗎?
Chhabra: 目前我們正在尋找對這種技術感興趣的廠商,對技術進行專利化並生產處原型i-NVMM記憶體。
總結
本文讓我們看到了存儲領域的進步,尤其是針對安全實踐硬體技術的進步。由此可見,安全已經成為了如今軟硬體開發過程中都必須考慮的環節。