驗證的啓動

介紹


Android 4.4和後續版本通過可選的dm-verity內核特徵來支持驗證啓動,其會提供透明的塊設備的完整性檢查.dm-verity能幫助阻止root組件,該組件能夠獲取root特權.該實驗特徵能夠幫助在啓動設備的時候檢查是否和上次使用過的一樣.

帶有root特權的聰明的惡意軟件能夠隱藏檢測程序,因此能夠隱藏他們自己.root軟件可以這樣做,因爲他們比檢測程序有更多特權,使得軟件向檢測程序"說謊".

dm-verity特徵使你看到一個塊設備,文件系統底層的存儲層,並且決定是否匹配他的期望的配置.他們使用一個密碼哈希樹來實現.對於每一個塊(通常是4K),都有一個SHA256的哈希.

由於哈希值被保存在一個頁面樹中,只有頂層的"root"哈希才能被信任來驗證樹的其他部分.修改塊的能力應該和打破加密哈希是對等的.查看下面的圖表來看一下結構的描述.


dm-verity-hash-table

                                                       dm-verity哈希表

一個公鑰被包含在boot分區中,該分區必須要被OEM在外部被驗證.該密鑰用於驗證該散列的簽名,並確認該設備的系統分區是受保護的,並且是不變的。

先決條件


確定一個驗證的啓動流

爲了大大降低妥協的風險,使用一個燒錄到設備中的密鑰來驗證內核.詳細的細節,在後面的文章"驗證啓動"中介紹.

轉向面向塊的OTA

爲了使能設備的dm-verity,必須要使用基於塊的OTA更新來確保所有的設備都使用相同的系統分區.更多的細節,是文章"基於塊的OTA"中介紹的.

配置dm-verity

在轉向面向塊的OTA之後,組合最新的Android內核或者是使用上升的內核,並且通過包含相關配置選項CONFIG_DM_VERITY來打開dm-verity支持.

當使用Android內核的時候,dm-verity在內核被構建的時候打開.更多細節,將會在後續文章"實現dm-verity"中講述.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章