MTK文档

MTK Tablet/Box secure boot常见问题


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或者secrooffset设置出错

3. KKsecure 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上签名方法

由于M06735使用的img_auth_key已经换成了rsa2048,需要修改Customization_Kit_buildspec目录下的sig.bat&package.bat 添加 CRYPTO20=yes,运行sig.bat&package.bat将生成的da_swsec.bin文件copyflashtool目录下

6.MDT工具写Efuse的动作是在Format All and Download后,能否移到Firmware Upgrade中?

只需要把写efuse那段流程的code移到想移的地方就行了不需要改内部的东西

7.是否支持secure 与非securecode

不支持,secure load与非secure load需要使用不同的branch来管理

8.secureboot_autoconfig工具使用注意事项

运行secureboot_autoconfig时会修改codebase中的部分文件,从运行log中可以看到被修改的文件(如下图红框),同时被修改的文件也会被保存到secureboot_autoconfig/tempfile中,请注意在贵司内部branch上保存这些修改,我司release出去的patch默认不会打开secure bootsecure 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失败?

请检查签名DACustomization_Kit_buildspec\custom\security\usbdl4enduser_dummy下的dummy_k2.binVERIFIED_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—表示unlock1—表示lock

必须设置项目:

DEFAULT_SECURE_BOOT_EN=1

DEFAULT_STATE为当前选择的LOCK/UNLOCK stateLOCK/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