1.先烧efuse再烧secure load开机正常,先烧secure load可以成功攻击,再烧efuse开机失败?
请检查vendor/mediatek/proprietary/bootable/bootloader/preloader/custom/${PROJECT}/${PROJECT}.mk,确认有如下设置:
MTK_SEC_USBDL=ATTR_SUSBDL _ENABLE
MTK_SEC_BOOT=ATTR_SBOOT _ENABLE
2. Download出错,提示:S_SECURITY_AC_REGION_NOT_FOUND_IN_SECROIMG
rom_info 中seccfg或者secro的offset设置出错
3. KK上secure boot保护单个文件
在alps/mediatek/custom/${project}/security/sec_file_list/ANDROID_SFL.ini添加需要保护的文件
4. efuse烧写后,在preloader/ lk 用以下function 来判断是否成功烧写efuse sbc bit .
Preloader : int seclib_sbc_enabled(void);
lk : int efuse_sbc_enabled(void);
5. MT6735/MT8735 M0上签名方法
由于M0上6735使用的img_auth_key已经换成了rsa2048,需要修改Customization_Kit_buildspec目录下的sig.bat&package.bat 添加 CRYPTO20=yes,运行sig.bat&package.bat将生成的da_swsec.bin文件copy至flashtool目录下
6.MDT工具写Efuse的动作是在Format All and Download后,能否移到Firmware Upgrade中?
只需要把写efuse那段流程的code移到想移的地方就行了, 不需要改内部的东西
7.是否支持secure 与非secure共code?
不支持,secure load与非secure load需要使用不同的branch来管理
8.secureboot_autoconfig工具使用注意事项
运行secureboot_autoconfig时会修改codebase中的部分文件,从运行log中可以看到被修改的文件(如下图红框),同时被修改的文件也会被保存到secureboot_autoconfig/tempfile中,请注意在贵司内部branch上保存这些修改,我司release出去的patch默认不会打开secure boot和secure download,因此在合入patch时如果遇到secureboot_autoconfig修改过的文件,请帮忙手动check再合并,不要直接替换!
9. efuse是否可以反复烧写?
如果readback出来的sec_attr_lock="true",则secure-ctrl中的各个bit不能烧写;
如果readback出来的sbc_pubk_hash_lock="true",则sbc-pub-key不能烧写。
10.怎么验证efuse烧写是否成功?
通过flash_tool.exe -i mt8163_sbc.xml -o回读efuse,与烧入时使用的xml文件对比,可以判断efuse是否烧写成功
11.Download时遇到SIGN_HEADER_NOT_FOUND
有时候客户会自己添加新的download image和分区,如果开启了secure boot,客制化添加的img也需要签名,否则会出现SIGN_HEADER_NOT_FOUND的错误,客户添加img签名的方法:
在vendor/mediate/proprietary/scripts/sign-image/SigTool.pl中的my @images_need_sign = (“system.img”, “userdata.img”, “effuse.img”) 中添加客制化的img名称
12.为什么会出现第一次download sign_bin可以成功,并且可以成功开机,但是第二次使用相同的tool烧同一版sign_bin时,download失败?
请检查签名DA时Customization_Kit_buildspec\custom\security\usbdl4enduser_dummy下的dummy_k2.bin和VERIFIED_BOOT_IMG_AUTH_KEY.ini是否正确设置,这两个文件在运行secureboot_autoconfig时会自动生成在secureboot_autoconfig/tempfile目录中,请直接copy过来替换,签名DA的方法请参考,第5、8条。
13. secro lock/unlock设置(important)
在vendor/mediate/proprietary/customer/common/secro/SECRO_GMP.ini中修改lock/unlock信息,其中2—表示unlock;1—表示lock;
必须设置项目:
DEFAULT_SECURE_BOOT_EN=1
DEFAULT_STATE为当前选择的LOCK/UNLOCK state,LOCK/UNLOCK state下的各个条目可以根据实际需求更改。
secureboot_autoconfig tool会自动生成一般SECRO_GMP.ini,请更具实际需求加以修改。
14.怎么判断SW secure boot设置成功?
download完成sign_bin之后,抓取开机uart log,分别按下面方法检查preloader和lk log。
SW secure boot设置成功,preloader会校验uboot和logo,出现如下log,表明preloader设置正确
[LIB] Verifying UBOOT
[LIB] Verification Pass
[LIB] Verifying LOGO
[LIB] Verification Pass
LK阶段会打印secro信息,出现如下log表示LK读取secro正常,根据第13条中lock和unlock设置,lk可以选择是否检查bootimg和recovery、logo分区。
[SEC_POLICY] lock state = 0x1(default)
[SEC_POLICY] use secro sec policy
[SEC_POLICY] dl_format_lock = 0x2
[SEC_POLICY] dl_1st_loader_lock = 0x2
[SEC_POLICY] dl_2nd_loader_lock = 0x2
[SEC_POLICY] dl_image_lock = 0x2
[SEC_POLICY] dl_tee_lock = 0x1
[SEC_POLICY] boot_chk_2nd_loader = 0x2
[SEC_POLICY] boot_chk_logo = 0x2
[SEC_POLICY] boot_chk_bootimg = 0x2
[SEC_POLICY] boot_chk_recovery = 0x2
[SEC_POLICY] boot_chk_system = 0x2
[SEC_POLICY] boot_chk_others = 0x2
[SEC_POLICY] boot_chk_cust1 = 0x2
[SEC_POLICY] boot_chk_cust2 = 0x2
[SEC_POLICY] boot_chk_tee = 0x1
15.烧写了Efuse以后download preloader报错,提示S_PL_VALIDATION_FAIL.
检查uart log,如果有以下类似log则表示烧入efuse中的public key与preloader设置的不一致,
检查efuse XML档中的SBC public key是否与preloader中配置的一致。
Hash value 538F29F7 != DC02BBFE