關機時擦除 RAM 以防止冷啟動攻擊

關機時擦除 RAM 以防止冷啟動攻擊

我的系統使用全碟加密進行加密,即 /boot 以外的所有內容都使用 dmcrypt/luks 進行加密。我擔心冷啟動攻擊,其中研究人員證明了,該內容可以提取為約5分鐘

能否提供以下說明:

  • 如何在關閉/重新啟動過程的最後一步觸發 kexec 進入新核心(以確保乾淨卸載,防止檔案系統損壞,確保舊核心被覆蓋)
  • 如何創建擦除所有記憶體的內核

你能解釋一下如何在 Ubuntu 上做同樣的事情嗎?

如何偵測關機?如何開始RAM擦除?當使用者點擊「關機」或啟動「緊急腳本」時,RAM 應該被擦除。

感謝您的努力!

之前的工作:

如果您希望看到該功能成為現實,請為 Ubuntu Brainstorm 投票!

http://brainstorm.ubuntu.com/idea/30076/

答案1

如果您不使用 DDR2、512 MB 或 1024 MB 等舊 RAM,那麼您不必擔心 CBA。

看看原始研究這裡(PDF)。

如果您仔細閱讀,您會發現只有 DDR2 及更早版本才容易受到這種攻擊。 DDR3 失去電壓太快,無法讓電腦機殼拆卸並凍結程式。因此,只需在開門前拔掉插頭即可。

也,這張紙確認 DDR3 不受 CBA 影響。如果實際上您想保護自己,因為您有 DDR2 RAM,請在 BIOS 中啟用:

  1. 斷電後自動啟動
  2. 啟動時檢查 RAM

並執行與 DDR3 相同的操作,但拔掉插頭後,將其重新插入。如果擦除效率不夠,引導過程將再次將系統載入到 RAM。考慮到 CBA 的實施還太快了。

來自關聯您在評論中提供:

因此,總而言之,冷啟動攻擊不應被視為獲取可疑電腦系統記憶體的主要方法。相反,在對所述系統進行冷啟動攻擊之前,應嘗試其他技術,包括基於軟體和硬體的獲取(即 FireWire)。然而,如果出現上述技術不可用(即缺少火線連接或系統登入控制台或無法進行遠端記憶體取得)或無效的情況,則可以假設調查員了解這兩種技術來實施冷啟動攻擊問題可能如何以及在哪裡出現和出錯。
如本研究所示,冷啟動攻擊不能被認為是在取證上特別合理或可靠的,因為在本文進行的大多數實驗中,記憶體駐留加密金鑰無法一致地找到或提取,儘管它們應該如此。對於各種字串和關鍵字搜尋也可以這樣說,這些搜尋應該會出現比大多數實驗發現的更多的字串和關鍵字。此外,正如已經證明的那樣,僅閃存凍結電腦記憶體的行為並不能保證成功取得所述記憶體。已經研究的其他因素和變數已經充分研究了這些問題及其根本原因。因此,本研究的作者認為,冷啟動攻擊在某些情況下可能有助於獲取可疑系統的內存,但這種方法不應被視為萬能藥,而應作為最後的手段。 。
最後,即使成功獲得的記憶幾乎沒有受到任何退化,也可能無法在法庭上作為可靠的證據,至少在判例出現並且可以使用健全和可靠的證據證明所獲得的記憶的完整性是完整的之前。理解的方法論。搜索工作仍在繼續,以建立一種更合適、更可靠的方式來獲取嫌疑人電腦的記憶體…

Also if you check the experiment results, you will realize that they successfully extracted the AES keys only in the system 2 and 6 and those were Warm Boot Attacks when you look at the specs of system 2 - 1024 MB RAM 533 MHz - this is old東西.另一個系統 - 具有 256 RAM / 128 RAM 的系統 6 - 我想這個是不言自明的。

這就是為什麼他們的結論是:

搜索工作仍在繼續,以建立一種更合適、更可靠的方式來獲取嫌疑人電腦的記憶體…

實際上,我相信,如果您有非常非常重要的數據,您不僅應該使用全驅動器加密,還應該將其保存在單獨的加密檔案中。使用級聯演算法和與磁碟加密期間使用的密碼不同的密碼進行加密。您想要一種安全的方式來關閉電腦嗎?這裡是:

  1. 將安全資料保存在 True Crypt 級聯演算法加密檔案中
  2. 使用蛇
  3. 建立一個腳本來處理關閉:

對於 Windows:

truecrypt.exe /wipecache
shutdown -s -f -t 1

對於Linux:

truecrypt /wipecache
shutdown -h now

擦除快取可確保關機後 RAM 中不會殘留任何易受攻擊的資料。如果有人執行冷啟動攻擊,他們最多只能存取您的系統。他們不會將資料儲存在單獨的加密檔案中。

答案2

加州大學洛杉磯分校的 Peter AH Peterson 編寫了概念驗證技術,並開發了使用加密 RAM 安全運行系統的理論,解決方案是明確地旨在防止冷啟動攻擊。他的論文名稱是 Cryptkeeper。我不知道他是否提供該軟體下載,或者是否可以從加州大學洛杉磯分校獲得許可。然而,至少在原則上,顯然可以為 RAM 設計一個即使 RAM 的全部內容被公開也是安全的密碼系統。

經測量,該解決方案的效能影響在 9% 的開銷和 10 倍的速度下降之間9,取決於場景的「病態」程度。 9% 的數字被引用為適用於使用 Firefox 瀏覽網頁,但他們沒有說明什麼用例會使效能降低 9 倍。

彼得森的解決方案不會按照您的建議「擦除」RAM。相反,它使用「安全金鑰隱藏機制」來防止僅透過取得 RAM 的內容來洩漏解密金鑰。我不確定實施的細節,但我認為論文中對此進行了解釋。

該論文發表於2010年。

它可以在 IEEE 的 ieeexplore 網站上購買。也可以從某人的網站直接免費下載 PDF 版本;它出現在谷歌搜尋結果“cryptkeeper RAM”上......但我不確定這個結果會在那裡停留多久。

我很想將此作為評論而不是答案,因為此解決方案不會按照您的要求“擦除”RAM。然而,我相信,如果彼得森的研究在技術上是正確的,那麼這將具有與擦除 RAM 相同的實際效果,甚至可能是「更好」的效果。原因是,熟練的物理攻擊者可能會中斷您的系統程式擦除 RAM 的嘗試(如果他們期望發生此類操作),例如,在操作之前將電池從設備中拔出或按住電源按鈕。 。彼得森的解決方案更安全,因為它不基於允許電腦繼續執行指令以完成擦除的必要時間視窗。相反,記憶是不斷地即使 CPU 本身在您有機會對攻擊者做出反應之前就被某些令人難以置信的技術壯舉瞬間殺死,也受到保護。

我所說的「令人難以置信的技術壯舉」是指像Stuxnet這樣的東西。

答案3

我會想像記憶體測試86非常擅長擦除 RAM。我一直想嘗試以下但還沒有。如果我嘗試的話我會更新它。

閱讀kexec手冊頁。不要嘗試使用kexec.iso,但您需要解壓縮該 iso 並獲取可啟動的二進位。在上面的 memtest86 網站上,您只需下載二進位。

您必須使用kexec命令來首先載入您要啟動的內容。

所以我認為你可以做的是:

kexec -l {path-to-memtest86-bootable-binary} --append=console=ttyS0,115200n8

當你準備扣下板機時:

kexec -e

我在想(但可能是錯的)讓--append=console=ttyS0,115200n8memtest86 通過串行端口工作。因此,如果您有一個,即使它沒有顯示在視訊輸出上,您也可以驗證它是否正常工作,這是一種可能性,因為 memtest86 不執行視訊初始化。終止任何正在運行的 X 實例可能是個好主意。

Debiankexec-tools軟體包(在 Ubuntu 上也可用)將其掛接到關閉腳本中,因此如果您進行編輯,/etc/default/kexec您可以告訴關閉進程kexec作為最後的事情調用,而不是重新啟動。也就是說,如果您對乾淨關閉感興趣。

在緊急情況下,async; kexec -e會起作用。

但是,某些晶片組在初始化後,如果對某些記憶體區域進行尋址,則可能會導致鎖定。我不知道這在實踐中會如何運作。

kexec如果不起作用,一個好的折衷方案是將 memtest86 安裝到引導程序,將其作為預設引導項,並有 1 秒的延遲直到自動選擇(或沒有延遲並依靠按鍵來調出 memu)。這可以讓你很快地從「全新啟動」狀態進入 memtest86,但不是立即。

請注意,這不考慮視訊 RAM。一個解決方案是將您的視訊 RAM 設定為區塊設備,並輸出/dev/random到區塊設備進行幾次迭代。

答案4

問題在於您的電腦是否正在運作並且螢幕已鎖定。此時,AES 密鑰儲存在 RAM 中,並且使用者遠離電腦。入侵者可以打開電腦機殼並取出 RAM 模組,同時保持它們通電,並將它們放置在讀取其內容的單獨裝置中。提取前無需關閉系統或凍結模組。 RAM 無法可靠地保存 AES 金鑰,但處理器的快取可以,就像名為 TRESOR 的解決方案一樣。不幸的是,這需要舊的 Linux 內核,以及修補和編譯內核的高級知識。

相關內容