android 6.0 dm-verity技术,Android 7.0安全性大幅提升,要求严格强制执行验证启动
在我們針對 Android 7.0 對?dm-verity?所做的更改中,我們使用了一個稱為交錯的技術,利用該技術,我們不僅可以從丟失的整個 4 KiB 源塊恢復數據,還可從多個連續塊恢復數據,與此同時,與樸素實現相比,該技術還可顯著降低實現可用糾錯能力所需的空間開銷。有效交錯意味著將塊中的每個字節均映射至單獨的 RS 碼,且每個代碼涵蓋跨相應 N 個源塊的 N 個字節。其中每個代碼涵蓋連續 N 個塊的一個普通交錯就已經讓我們可以從最多?(255 - N) / 2?個損壞塊恢復數據,例如,對于 RS(255, 223),意味著可以從 64 KiB 塊恢復數據。一個更好的解決方案是,使每個代碼分布于整個分區,從而最大程度增加同一代碼所涵蓋字節之間的距離,通過這種方式,可以將一個 RS(255, N) 碼在包含 T 個塊的分區上可處理的最大連續損壞塊數量增加至?T/N? ×?(255 - N) / 2。
交錯的另一優點是,通過結合 dm-verity 已經執行的完整性驗證,我們可以確切指出錯誤在每個代碼中的位置。由于代碼的每個字節均涵蓋一個不同的源塊,并且我們可以使用現有的 dm-verity 元數據驗證每個塊的完整性,因此我們可以知道哪些字節包含錯誤。能夠準確指出 erasure 位置讓我們可以將糾錯性能有效地翻一番,最多可以糾正?T/N? ×?(255 - N)?個連續塊。
對于一個具有 524256 個 4 KiB 塊和 RS(255, 253) 碼的約 2 GiB 分區,單個代碼的最大字節距離是 2073 個塊。每個代碼均可從兩個 erasure 中恢復數據,因此,我們可以使用此交錯方法最多從 4146 個連續損壞塊 (~16 MiB) 恢復數據。當然,如果編碼數據本身損壞,或者我們丟失了任何單個代碼所涵蓋的兩個以上的塊,那么我們無法再進行恢復。雖然利用交錯方法可以對基于塊的存儲進行糾錯,但它也有一個負面影響,即:使解碼速度減慢,因為我們需要讀取橫跨整個分區的多個塊(而非讀取單個塊)方可從錯誤中恢復。幸運的是,這在與 dm-verity 和固態存儲器結合使用時并不是一個大問題,因為我們只需要在塊確實損壞時進行解碼,而塊損壞的情況仍然相當罕見,并且即使我們必須糾正錯誤,隨機訪問讀取的速度也比較快。
總結
以上是生活随笔為你收集整理的android 6.0 dm-verity技术,Android 7.0安全性大幅提升,要求严格强制执行验证启动的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 配一脸是什么意思 配一脸是啥意思
- 下一篇: 自先沉稳而后爱人什么意思 自先沉稳而后爱