Android AVB 的一些配置说明

AVB使能:

# Enable AVB 2.0
BOARD_AVB_ENABLE := true

vbmeta RSA key相关配置:

BOARD_AVB_ALGORITHM := SHA256_RSA4096
BOARD_AVB_KEY_PATH := xxx/keytools/veritykey_rsa4096.pem

关闭dm-verity功能:

BOARD_AVB_MAKE_VBMETA_IMAGE_ARGS += --set_hashtree_disabled_flag

vbmeta RSA key生成及配置常用做法:

生成RSA私钥:

$ openssl genrsa -out testrsa.pem -f4 4096
Generating RSA private key, 4096 bit long modulus
........................................................................................++
.....++
e is 65537 (0x10001)

//生成的key如下
$ ls
testrsa.pem

抽取公钥:

$ python ~/code/android/external/avb/avbtool.py extract_public_key --key testrsa.pem --output vbmeta_pub_key.bin
$ ls
testrsa.pem  vbmeta_pub_key.bin

通过bin2header将公钥bin转换为头文件:

$ ./../keytools/bin2header vbmeta_pub_key.bin OEMPubKey >> OEMPubKey.h
$ ls
OEMPubKey.h  testrsa.pem  vbmeta_pub_key.bin
//OEMPubKey.h中就是公钥数组:
char OEMPubKey[1032] = {};

设备锁定状态

设备处于locked状态时,若在uboot中avb校验通过,则boot state为green,否则为red。

设备处于unlocked状态时,boot state为orange。

可以通过系统属性查看device state和boot state:

unlocked状态下:

$ getprop |grep state
[ro.boot.vbmeta.device_state]: [unlocked]
[ro.boot.verifiedbootstate]: [orange]

locked状态下:

$ getprop |grep state
[ro.boot.vbmeta.device_state]: [locked]
[ro.boot.verifiedbootstate]: [green]

fastboot下配置及查询device state:

D:\>fastboot getvar unlocked
unlocked: yes
Finished. Total time: 0.000s

D:\>fastboot flashing lock
OKAY [  0.016s]
Finished. Total time: 0.016s

防回滚配置

主要是vbmeta和vbmeta_system分区的rollback index和rollback index location配置。

其中BOARD_AVB_ROLLBACK_INDEX_LOCATION需要配置为0,其他值根据需求自定义,如:

BOARD_AVB_ROLLBACK_INDEX := 2
BOARD_AVB_ROLLBACK_INDEX_LOCATION := 0
BOARD_AVB_VBMETA_SYSTEM_ROLLBACK_INDEX := $(PLATFORM_SECURITY_PATCH_TIMESTAMP)
BOARD_AVB_VBMETA_SYSTEM_ROLLBACK_INDEX_LOCATION := 2

以上所有修改均基于Android 11代码。

posted @ 2023-04-13 14:50  xiululu  阅读(1272)  评论(0编辑  收藏  举报