一、什麼是vbmeta
vbmeta是Android 8.0(Oreo)之後引入的一種安全機制,在bootloader啟動階段對系統映像文件進行數字簽名和驗證,以防止被非法篡改。
該機制包含一個metadata結構,其中包括公鑰、簽名、哈希等信息,存在於vbmeta分區中。
能夠驗證vbmeta的前提是設備的初始啟動鏡像需要事先被授信並在vbmeta中定義好相應的數據格式和簽名規則。
二、vbmeta的作用
vbmeta主要有兩個作用:
1、驗證系統映像文件的完整性:在設備啟動時,vbmeta會驗證分區中每個映像文件的哈希值和數字簽名,確保系統文件沒有被非法篡改。
2、保護OEM加密:vbmeta可以管理OEM加密密鑰,通過設備鎖定的方式防止被其他人使用。如果驗證失敗,設備將會被鎖定。
三、vbmeta的使用
1、創建vbmeta分區
首先需要在設備的分區中創建vbmeta分區,並將metadata結構寫入其中。具體過程如下:
# 使用avbtool創建metadata結構 avbtool make_vbmeta_image --output vbmeta.img # 將vbmeta.img寫入vbmeta分區 dd if=vbmeta.img of=/dev/block/by-name/vbmeta
2、在bootloader中驗證vbmeta
在設備啟動時,bootloader將會讀取vbmeta分區中的metadata結構,並進行數字簽名和哈希驗證。具體過程如下:
# 使用avbtool驗證vbmeta分區 avbtool verify_vbmeta_image --image /dev/block/by-name/vbmeta --public_key_metadata AndroidPublicKey.pem
其中AndroidPublicKey.pem是設備的公鑰文件,在驗證前需要安裝到本地。
四、vbmeta的局限
儘管vbmeta是一種有效的安全機制,在實際的開發中還是存在一些局限:
1、需要設備先被授信才能驗證:設備的初始啟動鏡像需要先被授權,才能在vbmeta中定義數據格式和簽名規則。在沒有授信的設備上,vbmeta無法提供安全保障。
2、限制OTA升級:由於vbmeta主要保證操作系統的完整性,因此OTA升級時,若修改了系統分區,則需要重新簽名新的vbmeta,並在bootloader中驗證。如果設備處於locked狀態,則OTA升級將會失敗。
3、難以應對物理攻擊:在物理攻擊的情況下,攻擊者可以直接讀取設備上的密鑰信息,從而繞過vbmeta的安全保護。
五、結論
作為一種有效的安全機制,vbmeta在Android系統中發揮着重要的作用。但是,在實際的開發過程中,我們需要權衡其安全性和擴展性的關係,充分利用好vbmeta提高系統的安全性。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/220037.html