热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

Keystore的技术演进之路

Android提供的keystore功能发展历程伴随着Android版本不断演进。从Android6.0之前的版本中,Android已有一个非常简单的由硬件支持

Android提供的keystore功能发展历程伴随着Android版本不断演进。


从 Android 6.0之前的版本中,Android已有一个非常简单的由硬件支持的加密服务API(由0.20.3版的Keymaster硬件抽象层(HAL)提供)

Keymaster 1 HALKeymaster 0.20.3完全不兼容。为了在运行Android 5.0及更早版本的设备上实现互用性,Keystore 提供了一个可通过调用现有硬件库来实现 Keymaster 1 HAL 的适配器,但最终仍不能提供Keymaster 1 HAL中的全部功能。因为它仅支持 RSAECDSA 算法,而且所有密钥授权强制执行都由该适配器在非安全域中进行。

从Android6.0开始,Google借助系统芯片 (SoC)中提供的可信执行环境TEE,Android设备可以为Android操作系统、平台服务甚至是第三方应用提供由硬件支持的强大安全服务。由硬件支持的密钥的访问控制系统。访问控制在密钥生成期间指定,并会在密钥的整个生命周期内被强制执行。可以将密钥限定为仅在用户通过身份验证后才可使用,并且只能用于指定的目的或只有在具有指定的加密参数时才可使用。

微信SOTER方案就是利用Android keystore技术实现的一个应用解决方案。

Android 7.0中,Keymaster 2增加了对密钥认证和版本绑定的支持。 密钥认证提供公钥证书,这些证书中包含密钥及其访问控制的详细描述,以使密钥存在于安全硬件中并使其配置可以远程验证。

版本绑定将密钥绑定至操作系统和补丁程序级别版本。这样可确保在旧版系统或 TEE 软件中发现漏洞的攻击者无法将设备回滚到易受攻击的版本,也无法使用在较新版本中创建的密钥。此外,在已经升级到更新的版本或补丁程序级别的设备上使用指定版本和补丁程序级别的密钥时,需要先升级该密钥才能使用,因为该密钥的旧版本已失效。当设备升级时,密钥会随着设备一起升级,但是将设备恢复到任何一个旧版本都会导致密钥无法使用。

Android 8.0中,Keymaster 3从旧式C结构硬件抽象层(HAL)转换到了从采用新的硬件接口定义语言(HIDL) 的定义生成的 C++ HAL接口。

Android 8.0还扩展了Keymaster 2 的认证功能,以支持 ID认证 ID认证提供了一种受限且可选的机制来严格认证硬件标识符,例如设备序列号、产品名称和手机ID (IMEI/MEID)。要实现此附加功能,需更改ASN.1 认证架构以添加 ID 认证。Keymaster 实现需要通过某种安全方式来检索相关的数据项,还需要定义一种安全永久地停用该功能的机制。

(学习整理自:Android开发者)



推荐阅读
author-avatar
小色米虫_524
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有