Princeton的Center for Information Technology Policy最近發明了一個破解加密磁碟的超級必殺技Cold Boot Attacks(直接翻譯應該稱為冷開機攻擊法,但聽起來容易誤會。所以讓我們叫它做「急凍攻擊」吧。)
這方法之所以能稱得上「必殺」,是因為它不管你是什麼作業系統,或是用什麼需要一萬台電腦算上一億年的加密方法,只要電腦在已開機狀態,就能輕易取得解密用的key。這方法的關鍵是他們發現存在DRAM中的資訊,其實並不是一斷電就會消失。在室溫下,資料會有規則的慢慢消失,整個消失過程也要花上一分多鐘。也就是說,只要能碰到開機中的電腦,我們只要把它插頭拔掉,再用外接硬碟或光碟重開機,就能輕易地把剛才還存在DRAM中的資料dump出來。而任何硬碟加密保護技術,只要已經打過密碼進入系統,那麼解密用的key就一定存在RAM裡面,於是這個dump DRAM的方法就能輕易取得各種暫存在記憶體中的密碼,甚至是已解密的重要資料。
雖然這方法很厲害,但畢竟只有一分多鐘的時間能dump memory,實在有點太短了(光重開機就得花上個半分鐘吧)。於是他們提出更厲害的招數:只要將DRAM降溫,就能延長資料消失的時間。在下面的影片中,他們拿壓縮空氣罐對著DRAM噴一噴,就輕易的讓資料保存在DRAM裡超過10分鐘。十分鐘已經足夠把DRAM拔起來,拿到另一台電腦去慢慢dump了…。(他們甚至實驗過如果把DRAM泡在-196°C的液態氮中,即使過了一個小時資料都能完整保存。)
Princeton CITP還提供了一個簡單的實驗方法。
- 用任何程式語言,在記憶體中隨便塞入一串可辨認的字串。例如
#!/usr/bin/env python# a pirate's favorite chemical element
a = ""
while 1: a += "ARGON"
- 讓這程式跑個幾分鐘,以確定記憶體中有夠多份這個字串。
- 接著拔掉電腦插頭,再重開機。最後看看現在記憶體中還有沒有這個字串。Linux下可以用下面的指令來看raw memory內容。
sudo strings /dev/mem | grep "ARGON"
延伸閱讀:完整論文
本來想找一些特別的加密方案,沒想到居然找到這個,雖然不是想學解密但是也認識了 DRAM 的特性了吧,看來公司的外派間諜又需要多學一招了 xd
Pingback: comic glass 密碼 - 部落格熱搜- comic glass 密碼