热门标签 | 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开发者)



推荐阅读
  • 本文深入探讨了Redis中的两种主要持久化方式——RDB(Redis Database)和AOF(Append Only File),并详细解析了两者的实现机制、优缺点以及在实际应用中的选择策略。 ... [详细]
  • 本文详细介绍了Android开发中的关键组件——View和ViewGroup类,以及Android平台上的两种主要事件处理方式。同时,文章还探讨了如何利用Android提供的标准布局文件来优化UI设计。 ... [详细]
  • 本文提供了关于如何在 Java 中使用 `com.amazonaws.services.kinesis.model.StreamDescription.getRetentionPeriodHours()` 方法的详细说明,并附带了多个实际代码示例。 ... [详细]
  • 深入理解Kafka架构
    本文将详细介绍Kafka的内部工作机制,包括其工作流程、文件存储机制、生产者与消费者的具体实现,以及如何通过高效读写技术和Zookeeper支持来确保系统的高性能和稳定性。 ... [详细]
  • Java Set集合源码深度解析
    本文将深入探讨Java集合框架中的Set接口及其主要实现类HashSet、LinkedHashSet和TreeSet的源码实现,帮助读者理解这些集合类的工作原理及应用场景。 ... [详细]
  • JS的类型和值
    1.类型ECMAScript语言中所有的值都有一个对应的语言类型。ECMAScript语言类型包括Undefined、Null、Boolean、String、Number和Obje ... [详细]
  • 博主从零开始学习HTML(入门基础)
    从零开始学习HTML(入门基础)互联网三大基石HTTP协议URL:统一资源定位符HTML:超文本标记语言HTML的Head标签中的常用元素<!--告知 ... [详细]
  • 本文介绍了一种方法来限制HTML中的TEXTAREA控件的输入长度,通过使用JavaScript实现输入长度的控制,确保用户输入的内容不超过预设的最大长度。 ... [详细]
  • 本文介绍了在项目开发过程中用于字符编码转换的PHP函数,包括从GBK到UTF-8的递归转换方法,适用于处理多层嵌套数组或字符串。 ... [详细]
  • 应用场景在开发中,我们经常需要把一些随时可能变化的属性配置到配置文件中,这样耦合性低,方便维护。SpringBoot在这方面为我们提供了很大的便捷,我们可以很轻易的将propert ... [详细]
  • 在日常开发中,经常需要通过Web服务进行数据交互。然而,在参数传递时会遇到一些限制,例如自定义实体类和Hashtable等复杂数据类型无法直接传递。本文将详细介绍如何在ASP.NET环境中有效地传递Hashtable数据。 ... [详细]
  • 本文详细介绍了如何使用 Element UI 的 Cascader 组件来实现省、市、区数据的动态加载。主要通过地址传递和递归函数来动态更新选项列表。 ... [详细]
  • 随着无需安装、即时可用及低资源消耗等特性,微信小程序迅速吸引了大量用户,广泛应用于游戏、餐饮预订和在线购物等领域。据《2018年小程序生态发展报告》统计,至2018年中期,小程序用户总数已突破100万,累计用户达到6亿。然而,小程序的蓬勃发展也伴随着一系列安全隐患。 ... [详细]
  • SonarQube自动化代码扫描的安装与集成实践
    SonarQube是一款强大的开源代码质量管理平台,支持多种编程语言。通过集成不同的开发工具和CI/CD流程,SonarQube能够提供全面的静态代码分析服务,帮助开发者早期发现并修复代码缺陷,从而提高软件质量和安全性。 ... [详细]
  • 强人工智能时代,区块链的角色与前景
    随着强人工智能的崛起,区块链技术在新的技术生态中扮演着怎样的角色?本文探讨了区块链与强人工智能之间的互补关系及其在未来技术发展中的重要性。 ... [详细]
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社区 版权所有