spreadtrum展信平台加密Secure boot流程 | 您所在的位置:网站首页 › spreadtrum驱动下载 › spreadtrum展信平台加密Secure boot流程 |
1. Secure boot概述 本文档主要是secure boot方案的介绍和说明,其内容会涵盖以下方面:secure boot的目的和介绍、技术方案的描述、PC端签名工具和Image download&update工具的使用以及产线实施所需要做的准备工作和注意事项等。 1.1. 需求与目的目前,非授权更改甚至替换手机原版操作系统中固有软件或者操作系统的软件技术手段层出不穷,secure boot方案对系统软件采用签名认证的方式,在手机出厂前对手机操作系统的Image文件进行签名认证,并将公钥的Hash值写入芯片的一次性可编程模块。由于不同文件计算得到的Hash值不同,采用secure boot方案的手机每次启动时都会先校验系统的Hash值,即和芯片内的Hash值进行比较,然后对签名images的一级一级校验,实现从手机芯片到系统软件的链式校验过程,很好地避免手机出厂后没有得到客户签名认证的非授权操作,保护手机中原有的操作系统和软件版本。 1.2. 缩写定义Name Description CA Certificate authority PUK Public key RSA One public-key cryptosystems SHA Secure hash algorithm 2. 技术方案介绍 Secure boot技术方案主要分为三个部分: 1) Images signature 2) Secure Boot Process 3) Image download/update 2.1. 文件签名 2.1.1. 签名的原理数字签名是通过一些密码算法对数据进行签名,以保护源数据的做法。典型的数字签名方案包括以下三个算法: 1) 密钥生成算法,用来输出公钥和私钥。 2) 签名算法,用私钥对给定数据进行加密来生成签名。 3) 签名验证算法,用公钥对加密过的消息进行解密验证。
Fig.1 数字签名和验证过程. Fig.1是数据的数字签名和验证过程。Secure boot方案中的数字签名由SHA和RSA算法组成,并直接采用PUK替代CA。我们在PC端实现对Images的签名,并在手机端实现Images的验证,images文件的变化会导致解密过程的失败,从而很好地避免非授权操作。 2.1.2. 签名工具PC工具用来生成密钥对,并对images进行签名,其中包括SPL1/FDL1;U-boot/FDL2; bootimage,recoveryimage,modem,dsp。RSAKeyGen, BscGen, VLRSign, WriteIMEI 1) RSAKeyGen:用来生成密钥对。 2) BscGen:对fdl1.bin和u-boot-spl-16k.bin进行签名。 3) VLRSign:对U-boot/FDL2;bootimage,recoveryimage,modem,dsp进行签名。需要注意的是对U-boot/FDL2和bootimage/recoveryimage/modem/dsp签名时的不同,在对U-boot/FDL2进行签名时需要勾选工具中的“insert public key”选项。 2.2. Secure Boot Process 2.2.1. Secure Boot概貌Secure boot的基本思想是从Romcode到Images的多层链式校验机制(如图Fig.2所示)。Romcode利用Hash函数来验证BSC的完整性,用RSA算法来验证SPL的完整性;然后SPL将会验证U-boot;最后U-boot来验证bootimage,recoveryimage,modem,dsp等,所有的boot images会通过RSA算法的私钥加密并在生产阶段载入手机,每个image文件的RSA公钥保存在前一级用私钥签名的image当中,而计算得到BSC的Hash值和第一级的公钥则保存在芯片的一次可编程模块中,以防止其被修改。需要注意的是,RSA私钥是Secure boot的保障,需要被小心的保存起来。 Fig.2 Secure boot概貌. 2.2.2. 分区介绍1) Romcode Romcode位于芯片的ROM内,芯片出厂后不能修改,它包含了SHA1和RSA算法,且BSC的Hash值也保存在芯片的一次性可编程模块(efuse)中。Romcode在下载或启动会比较efuse和BSC的Hash值。 2) SPL bootloader的一部分,它会被加载到芯片的内部RAM中,所以其大小受芯片内部RAM大小的限制,SPL的主要作用是初始化外部内存,即我们常说的DDR。 3) U-boot bootloader的另外一部分,其作用是将images加载到RAM,并进行验证。 4) Bootimage,recoveryimage,modem,dsp 这些images通过PC工具签名,由U-boot验证、加载。 5) FDL1,FDL2 与SPL和U-boot的作用类似,用于下载模式。 2.3. 签名文件下载 2.3.1. PC Download/Update当secure boot功能enable时,对于我们的SPL/FDL1,U-boot/FDL2,Bootimage,Recoveryimage等需要签名后才能下载,在下载过程中,前面所提到过的链式校验的任一个环节验证失败都会导致这些images不能成功下载到手机。在手机启动时,同样也会对这些images进行链式校验。 2.3.2. Fastboot如果手机的secure boot功能打开,在Fastboot模式下载images时会先对签名的image进行验证,认证的签名image才会被下载到手机。 2.3.3. RecoveryRecovery模式下的手机升级和启动过程一样,会对所有的签名images进行校验。需要注意的是,升级前后的签名密钥必须相同才能升级成功。 3. 产线实施流程 综合以上,产线实际生产时的具体步骤会分为以下几步: 1) 编译secure enable的images。 2) 用密钥工具生成密钥对。 3) 对SPL/FDL1进行签名。 4) 对U-BOOT/FDL2,boot, modem, dsp, recovery中的部分文件进行签名。 5) 对签名过的images打包生成PAC文件。 6) 在相关的校验和测试完成后,最后烧写efuse并开机。 总的来说,Secure boot相比之前多出了几个需要引起我们注意的环节:images签名、efuse烧写、Recovery升级。 3.1. Images签名用签名工具对Images进行签名时,需要注意的是,不同的images可能使用不同的签名工具(BscGen,VLRSign),而且在用VLRSign对FDL2/U-BOOT签名时需要勾选“insert public key”。工具的具体用法如下: 1) RSAKeyGen:用来生成密钥,如Fig.3;需要输入Product Name和Password(密码必须是8位,例如Product Name:7730ec;Password:12345678,后面工具会用到);然后点Generate,下方会出现7730ec的字样。
Fig.3 RSAKeyGen工具示图. 2) BscGen:对SPL/FDL1签名,如Fig.4,需输入步骤1)中的Product Name和Password;Code File:选择要签名的SPL或FDL1;Out File:选择签名后的文件名及其存放的路径;然后点Generate。 |
CopyRight 2018-2019 实验室设备网 版权所有 |