昨天介绍了Keystore功能,今天来普及一下Keybox。这个也与可信执行环境TEE有着密切的关系!
Keybox就是Android的密钥箱功能,用于解密受DRM保护的内容的数据和信息。 Android的Keybox服务可为多个设备序列号和特定设备生成Keybox。Android合作伙伴可以使用提供的设备序列号在设备上安装Keybox。
Keybox有Widevine Keybox或Android Attestation Keybox。Widevine Keybox用来做数字版权DRM服务,Android Attestation Keybox用来做认证服务。
早在2012年,Google高价收购数字版权管理软件公司Widevine,主要是为了学习苹果的版权管理生态,构建自己的Android生态系统,从Android3.0版本就开始支持Widevine。所有需要拿到GMS认证的手机厂商都必须搭载Widevine。也就是说CTS测试必须测试的。
Keybox有三个安全等级:
对于L3来说,设备制造商必须提供仅加载已签名系统映像的引导加载程序。如果允许用户加载自定义操作系统或获得设备上的root权限通过解锁引导加载程序,设备制造商必须支持以下内容:
1,设备制造商必须提供允许Widevine密钥箱的引导程序,只有当引导程序处于锁定状态时才写入。
2,Widevine密钥箱必须存储在被擦除或存储的内存区域中设备引导加载程序处于解锁状态时不可访问。
不同的设备类型对应不同的安全级别要求如下表所示:
对于级别L1,L3级别分别有2种方式写入:
Factory Provision
设备需要唯一硬件识别号码,生成唯一的Keybox并写入,KeyboxProvision在设备制造期间生成并写入,设备制造商需要提供软件支持,以存取相关设备信息,Google提供API定义,设备制造商实现该接口。
Field Provision
KeyboxProvision通过OTA方式写入设备.
现在有一个问题,Android上并没有强制使用L1或L3级别,那么服务上是否有不同呢?