一、 高级安全方案概述
Android是基于Linux的自由及开发源代码的操作系统,因此为了保证运营商的业务安全,对智能机顶盒提出了相应四点安全性目标。
l 引导程序(如Uboot)安全启动
l 系统软件(内核、文件系统和recovery)安全启动和升级
l APK安装管控
l 机顶盒身份认证
1.1 CPU 架构要求
为满足安全需要,CPU必须符合以下架构,即有两个模块组成:通用功能模块和安全功能模块

1.1.1 通用功能模块
CPU的一般功能,执行CPU指令系统,运行内存中的指令序列,执行操作系统软件与应用软件。
1.1.2 安全功能模块
(1)安全功能模块有两部分组成。
l Boot Rom,用于固化一段程序,改程序在芯片出厂后不可更改,也不能被读取。运行于CPU内部。
l OTP,保存一些不可被读取或者不可被更改的数据。
(2) 安全模块需要支持安全算法,主要包括对称算法密钥,非对称算法公鈅,用于认证的单向hash 的基本初始序列。
1.2 引导程序安全启动
系统引导过程安全启动基本流程如下:
a) CPU对系统引导程序(如Uboot)采用安全、有效的验证算法,如基于SHA256+RSA2048的数字签名验证,或基于AES128加密的代码加密方法。
b) 用于验证的密钥必须确保安全性,如必须使用CPU的OTP区域存放密钥,如果使用存放在FLASH中的密钥,则必须使用安全有效的加密与签名验证机制确保密钥安全。
c) 对引导程序的签名验证采用全覆盖的签名验证。
1.3 系统软件安全启动和升级
机顶盒的启动引导程序通过合法性验证后,需要对后续执行的代码进行合法性验证。系统引导程序通过验证后,可能执行Kernel或者recovery程序,其执行过程必须符合以下基本流程:
a) 启动引导程序对Kernel或者recovery程序的合法性验证采用基于SHA256+RSA2048的数字签名验证,或基于AES128加密的代码加密方法。
b) 用于验证的密钥必须确保安全性,如必须使用CPU的OTP区域存放密钥,如果使用存放在FLASH中的密钥,则必须使用安全有效的加密与签名验证机制确保密钥安全。
c) 对Kernel或者recovery程序的签名验证必须采用全覆盖的签名验证。
d) Kernel通过合法性验证之后,需要对文件系统的数据进行合法性验证。由于文件系统比系统引导程序,Kernel和recovery都要大,因此为了提高系统启动速度,可以对文件系统采用随机抽样的方式进行合法性验证,比如讲文件系统按照每1M计算一个签名值,校验时随机抽取一些数据块进行校验,保证每次启动时的校验的数据不同。
e) 系统升级过程中,recovery程序必须对将要用于系统升级所有数据采用与引导启动程序相同的合法性验证方法进行验证。
f)其它分区程序根据芯片方案平台和实际业务需要进行验证。
1.4 APK 安装管控
Android APK的发布是需要签名的。签名机制在Android应用和框架中有着十分重要的作用。签名机制标明了APK的发行机构,Android系统禁止更新安装签名不一致的APK,防止已安装的应用被恶意的第三方覆盖或替换掉。站在软件安全的角度,通过比对APK的签名情况,判断此APK是否由官方发行,而不是被破解篡改过重新签名打包的盗版软件。
对于用户安装的APK,在安装时,必须首先对APK进行签名校验,只有客户签名过的APK才允许安装到系统中。
新的APK,需要APK发布者使用Android的密钥生成工具创建新的keystore,并用该keystore对APK进行签名。
对于新版本的APK,必须使用原有的keystore进行签名,这样签名后的APK才能确保顺利升级替换原有APK。
1.5 终端身份认证
机顶盒安全启动挂载文件系统后,机顶盒的认证程序通过跟业务前端认证平台进行认证,只有通过身份认证的终端才能进入客户的业务程序,身份认证失败禁止执行任何应用程序,并通过提示告知身份认证失败。
二、 高级安全签名
签名工具有方案厂商实现,因此不同的硬件方案,签名工具不一样,下面以华为海思HI3716C平台说明。
2.1 密钥生成工具
通过在PC上直接执行海思提供GenSecureData工具,会生成两个文件Key_for_signature.txt和Key_for_verify.txt。
l Key_for_signature.txt包含密钥信息,用于签名引导启动程序,kernel,recovery等分区。
l Key_for_verify.txt包含密钥信息,但数据根式和Key_for_signature.txt不同,主要是在开发调试阶段用来烧写运营商要求的关键数据和密钥信息。
2.2 签名工具
签名工具HiSigA支持签名boot,bootargs,kernel,system,recovery等分区,用到的密钥是Key_for_signature.txt。同时,该签名工具也支持生成recovery升级需要的升级包,HiSigA的用户界面如下图所示:

三、生产流程
3.1 生产流程概述

(1)关键数据生产工具(芯片厂商提供)
(2)烧写工具APK
烧写工具APK负责从PC端获取加密处理的安全数据(SN/IN/MAC),解密并校验后烧写到芯片中;烧写完成后,通过身份认证验证安全数据的正确性。
(3)烧写工具PC端
烧写工具PC端负责与云端交互,向烧写工具APK提供获取安全数据。
(4)云端工具
在生产过程中,云端工具负责提供安全数据,并提供验证安全数据的功能。
生产完毕后,云端工具向现网生产环境输出有效的安全数据。
(5)现网生产环境
将云端工具输出的安全数据导入到现网生产环境后,现网生产环境提供机顶盒安全认证的功能。
3.2 生产时厂商间的关系
(1)芯片厂商
a)关键数据生产工具
b)提供烧写OTP的API接口
(2)机项盒厂商
烧写OTP的APK
-- 利用芯片厂商的API接口,开发烧写OTP APK
-- 连接PC端工具,并通过PC端访问阿网服务器.
(3)运营商
a)负责提供云端工具
b)负责提供与机顶盒交互的PC端工具。
3.3 工厂生产流程
安全数据全部保存在云端,烧写APK只与工厂内部的PC端进行交互,工厂PC端在需要数据和验证数据的时候,向云端服务器请求。接口传输的信息都是加密数据或是散列值。
工厂烧写PC使用电信事先分配的用户名和密码进行登录。
生产需要做如下的准备:
1. SN数据准备
由运营商分配SN并将每个SN绑定一个MAC地址,MAC地址由终端厂商提供。
2. 烧写APK准备
芯片厂商提供烧写OTP接口,由终端厂商开发的写OTP的APK。
3. 现网生产环境
现网生产环境由运营商搭建。