為什麼BitLocker能給系統盤加密?

這樣真的可以在設備遺失後保護數據的安全嗎?如果可以,為什麼系統啟動的時候不需要輸入密鑰呢?


答主只是外行,建議大家去看專業人士的科普:

Bitlocker、TPM和系統安全

============================================================================

BitLocker為啥能加密系統盤,其實和UEFI、TPM沒有必然關係……用組策略啟用額外的驗證(開機時需要輸入解鎖密碼)即可在沒有TPM的機器上開啟BitLocker,無論走UEFI引導還是BIOS引導都是這樣。

回到一開始的問題:為啥可以加密Windows所在的分區?

因為Windows Boot Manager可以在Windows啟動前「獨立」解密BitLocker分區。

Windows Boot Manager先把內核和各種驅動(包括BitLocker、磁碟有關的驅動)解密出來,然後就把控制權轉交給Windows。藉助BitLocker驅動(fvevol.sys),Windows也可以自由讀寫被加密的分區了,然後可以繼續照常啟動,不再需要Windows Boot Manager提供拐棍。

PS:解密密鑰的來源取決於你的配置,可以是:TPM、數字密碼即「恢復密鑰」、存有密鑰文件的U盤。實際上這些東西並不是真正的密鑰,都不能直接解密數據。它們是用來解密FVEK的(實際上還不止一層加密),FVEK才是真正執行數據加密的密鑰,它被上面這些東西加密保存在硬碟上——可想而知,如果有關的扇區損壞了,那整個盤的數據就被判了死刑——當然,微軟的東西還是靠譜的,有做冗餘,並沒有那麼脆弱。

TPM可以讓BitLocker變得更安全便捷。

有了TPM,就可以不用輸入解鎖密碼了,密鑰由TPM負責保管,並由TPM來保證不會有人用WinPE偷窺硬碟里的文件,WinPE、KonBoot這些手段在TPM面前都會露餡:如果TPM發現啟動方式不對,就不會釋放密鑰。

沒有密鑰就無法解鎖BitLocker加密的C盤,正常情況下Windows就會報錯,無法正常啟動;WinPE的話,雖然能正常啟動,但缺少TPM里的密鑰,C盤無法解密,仍然是一堆亂碼。

既然Ubuntu LiveCD、WinPE、拆機換硬碟等等威脅已經被TPM幹掉了,只要Windows登錄密碼靠譜,那差不多就固若金湯了。

(開腦洞的話,這裡還有一個隱含的信任關係:Windows Boot Manager、Winlogon這些程序不能爆安全漏洞,比如CVE-2015-2552,還有類似Linux 爆新漏洞,長按回車 70 秒可獲得 root 許可權這種,如果爆了安全漏洞,那不需要Windows登錄密碼也可以直接訪問被加密的數據了)

但這樣並不是完全沒有弱點:

冷凍內存等Cold boot attack仍然可能奏效。內存被液氮冷卻後,即使斷電也可以讓數據保留一段時間。而且系統正常運行時,隨時需要讀寫被加密的盤,那內存里肯定能找到密鑰,因為讀寫時肯定需要執行加密/解密。所以,可以趁電腦沒關機時冷凍內存,然後把內存接到別的電腦上,再運行一個程序把密鑰搜出來。

冷凍內存攻擊能奏效的前提是:硬碟數據加密仍然是操作系統在CPU上完成的,所以在那根插在主板上的內存條里,還是可以直接找到密鑰。

如果把加密交給硬碟的主控晶元等硬體來做,讓硬碟主控去抵抗冷凍內存攻擊,那麼內存條里就再也不需要保留密鑰,那……也許就真的固若金湯了?好像還沒有。

如果系統中木馬了,那木馬自然也有機會訪問那些被加密的數據,拿到整個盤的解密密鑰也不是難事兒(這甚至有點多餘了,因為種了木馬以後,無論攻擊者想偷什麼文件,都已經可以直接拿到了)。

如果硬碟沒有AES加密之類高端功能,有一個緩解方法是讓TPM在開機時,多驗證一個PIN。必須輸對PIN才給密鑰,甚至在多次錯誤後毀掉密鑰。

這樣一來,如果電腦被偷時,就已經關機了,那麼就沒法等到Windows傻乎乎地問登錄密碼時,再偷偷冷凍內存干猥瑣的事情了。但如果偷到的電腦還沒關機,那說不定有可乘之機。

所以你想到了什麼?

沒錯……你不能把引導文件也放在BitLocker加密的分區里……就是這樣。


需要uefi和tpm與賬戶登錄密碼形成信任


推薦閱讀:

TAG:加密 | 硬碟 | 密碼學 | 隱私安全 |