前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Keystore的技术演进之路

Keystore的技术演进之路

作者头像
安智客
发布2018-02-24 10:11:56
2.7K0
发布2018-02-24 10:11:56
举报
文章被收录于专栏:安智客安智客

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

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

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

从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 实现需要通过某种安全方式来检索相关的数据项,还需要定义一种安全永久地停用该功能的机制。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-01-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 安智客 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
多因子身份认证
多因子身份认证(Multi-factor Authentication Service,MFAS)的目的是建立一个多层次的防御体系,通过结合两种或三种认证因子(基于记忆的/基于持有物的/基于生物特征的认证因子)验证访问者的身份,使系统或资源更加安全。攻击者即使破解单一因子(如口令、人脸),应用的安全依然可以得到保障。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档