科普:Android密钥库究竟是个啥?

2017 年 10 月 18 日 引力空间站 谷歌开发者

什么是Android密钥库

Android 的密钥库已经推出很多年了,它为应用开发者提供了一种使用加密密钥进行身份验证和加密的方式。

密钥库将密钥资料存放在应用的进程空间之外,因此,密钥资料不会在可能受到网络钓鱼攻击的情形下被应用意外透露给用户,不会通过其他某种渠道泄漏,也不会在应用遭到入侵时陷入危险之中。


许多设备也在安全硬件中为密钥库密钥提供基于硬件的安全机制,这种机制将密钥资料完全存储在 Android 系统之外,因此即使 Linux 内核遭受入侵,密钥资料也不会泄漏。在绝大多数 Android 设备中,安全硬件都是主 CPU 的一种特殊模式,其通过硬件与 Linux 内核及 Android 用户空间强制隔离。有些设备还使用单独的安全微处理器。


Android 提供的 API 可以让应用确定给定密钥库密钥是否处于安全硬件中,但是如果操作系统受到入侵,这些 API 将变得不可靠。密钥认证让设备的安全硬件可以验证某个非对称密钥是否处于安全硬件中,从而在 Android OS 遭受入侵时为密钥提供保护。

密钥库历史


密钥库最初在 Android 4.0 中引入,密钥采用用户的密码进行加密。Android 4.1 添加了使用设备安全硬件的基础架构。

在 Android 6.0 之前,密钥库仅支持 RSA 和 ECDSA。在 Android 6.0 中,密钥库得到显著增强,增加了对 AES 和 HMAC 的支持。此外,加密运算的其他关键要素(例如 RSA 补位1 和 AES 区块链接2 模式)也移入安全硬件中。

在 Android 6.0 中,密钥库还能够限制特定密钥的使用方式。可以应用的最有用限制是 用户身份验证绑定。这种限制允许将密钥的使用“绑定”到用户密码(他们的 PIN 码、图案或口令)或者指纹。

对于密码身份验证绑定,应用开发者可以指定一个超时(以秒为单位)。如果自用户上次输入密码以来所经历的时间已超过指定时间,安全硬件将拒绝要求使用密钥的任何请求。指纹绑定密钥在每次使用密钥时都会要求新的用户身份验证。

还可以向 Android 6.0+ 密钥应用其他更多技术限制。特别是,在创建或导入密钥时,需要指定密钥可用于哪些加密目的(加密、解密、签名或验证),为初始化向量或随机数指定补位与分组加密模式、摘要和熵源以及加密运算的其他详细信息。

由于指定的信息以加密方式永久绑定到密钥资料上,密钥库将不允许以任何其他方式使用此密钥。因此,已经获取应用或系统控制权限的攻击者无法滥用密钥。为了帮助防止攻击,开发者应为给定密钥指定尽可能窄的用户范围。

Android 7.0 中引入了 Android 密钥库最重要的变更之一。预装 Android 7.0+ 并带有安全锁定屏幕的新发布设备必须具有安全硬件,并支持基于硬件的密码身份验证和密钥库密钥。在 Android 7.0 之前,安全硬件支持比较分散,不过在未来几年,这项功能将逐渐统一。

在 Android 8.0 中,密钥认证已成为预装 Google Play 的所有新设备的强制选项。


为何使用密钥认证?


假设您正在开发一款应用,该应用让银行客户可以访问其银行余额、交易历史记录和账单支付系统。安全性至关重要;您肯定不希望捡到用户电话的任何人都能访问用户的银行账户。一种应对方式是使用用户的网站密码。但是这种方式对用户来说通常不方便,因为网站经常需要复杂的长密码,在小型触摸屏上输入这类密码不是很方便。

借助 Android 密钥库,您可以生成一个非对称的身份验证密钥(例如 256 位 ECDSA 密钥),让每位用户使用他们的复杂网络密码登录一次,然后在银行的客户账户数据库中注册公钥。


在用户每次打开应用时,您都可以使用该 ECDSA 密钥执行一次质询-响应身份验证协议。而且,如果您进行密钥身份验证绑定,用户在每次打开应用时还可以使用他们的锁定屏幕密码或指纹进行身份验证。这样一来,他们可以在自己的电话上使用更简单、更方便的身份验证机制。


如果攻击者入侵 Android 并尝试提取密钥,他们可能会无功而返,因为密钥储存在安全硬件中。


作为一名应用开发者,您可以利用密钥验证在自己的服务器上验证您的应用请求的 ECDSA 密钥确实位于安全硬件中。请注意,在您的应用中使用验证意义不大;如果 Android OS 未被入侵并值得信赖,那么您可以直接使用 6.0 中引入的 KeyInfo 类来确定密钥是否处于安全硬件中。如果系统已被入侵,那么该 API 与您在设备上验证密钥认证的任何尝试都是不可靠的。


请注意,

密钥认证与 SafetyNet 认证不同。它们的理念相同,不过认证的对象不同,来源也不同。密钥库密钥认证旨在声明加密密钥位于安全硬件中并且具备指定的某些特性。SafetyNet 认证旨在声明设备是真实设备(不是模拟器)并且设备正在运行已知软件。

SafetyNet 在幕后也使用密钥库密钥认证,因此,如果您想要了解设备完整性,请使用这种认证。如果您想要确认您的密钥位于安全硬件中,请使用密钥认证。


· END ·



公开“Google开发者文档风格指南”

机器学习实战:Python信用卡欺诈检测

Android O 迁移测试:Room




登录查看更多
0

相关内容

Android(安卓)是一种以 Linux 为基础开发的开放源代码的操作系统,主要应用于便携设备。2005 年,Android 公司被 Google 收购,随后 Google 联合制造商组成开放手机联盟。Android 已从智能手机领域逐渐扩展到平板电脑、智能电视(及机顶盒)、游戏机、物联网、智能手表、车载系统、VR以及PC等领域。
【2020新书】实战R语言4,323页pdf
专知会员服务
98+阅读 · 2020年7月1日
因果关联学习,Causal Relational Learning
专知会员服务
179+阅读 · 2020年4月21日
【ICMR2020】持续健康状态接口事件检索
专知会员服务
17+阅读 · 2020年4月18日
自回归模型:PixelCNN
专知会员服务
25+阅读 · 2020年3月21日
TensorFlow Lite指南实战《TensorFlow Lite A primer》,附48页PPT
专知会员服务
68+阅读 · 2020年1月17日
【新书】Python中的经典计算机科学问题,224页PDF
专知会员服务
51+阅读 · 2019年12月31日
【电子书】C++ Primer Plus 第6版,附PDF
专知会员服务
83+阅读 · 2019年11月25日
【干货】谷歌Joshua Gordon 《TensorFlow 2.0讲解》,63页PPT
专知会员服务
24+阅读 · 2019年11月2日
深度神经网络模型压缩与加速综述
专知会员服务
127+阅读 · 2019年10月12日
ZigBee 网络安全攻防
计算机与网络安全
13+阅读 · 2019年4月15日
基于Web页面验证码机制漏洞的检测
FreeBuf
7+阅读 · 2019年3月15日
可能是 Android 上最好用的写作 App
少数派
10+阅读 · 2018年12月21日
Android P正式发布,你需要尽快做适配了
前端之巅
3+阅读 · 2018年8月7日
Python为啥这么牛?
Python程序员
3+阅读 · 2018年3月30日
免费云真机测试 | 让您的应用完美适配 Android Oreo
引力空间站
3+阅读 · 2018年2月2日
【区块链】区块链是什么?20问:读懂区块链
产业智能官
8+阅读 · 2018年1月10日
这位程序员为什么要弃用Facebook?
CSDN
5+阅读 · 2017年7月14日
共享单车惨遭共享:一款App能骑9种车到底是啥神器?
黑客技术与网络安全
4+阅读 · 2017年7月6日
Conceptualize and Infer User Needs in E-commerce
Arxiv
3+阅读 · 2019年10月8日
Universal Transformers
Arxiv
5+阅读 · 2019年3月5日
HAQ: Hardware-Aware Automated Quantization
Arxiv
6+阅读 · 2018年11月21日
Large-Scale Study of Curiosity-Driven Learning
Arxiv
8+阅读 · 2018年8月13日
VIP会员
相关VIP内容
【2020新书】实战R语言4,323页pdf
专知会员服务
98+阅读 · 2020年7月1日
因果关联学习,Causal Relational Learning
专知会员服务
179+阅读 · 2020年4月21日
【ICMR2020】持续健康状态接口事件检索
专知会员服务
17+阅读 · 2020年4月18日
自回归模型:PixelCNN
专知会员服务
25+阅读 · 2020年3月21日
TensorFlow Lite指南实战《TensorFlow Lite A primer》,附48页PPT
专知会员服务
68+阅读 · 2020年1月17日
【新书】Python中的经典计算机科学问题,224页PDF
专知会员服务
51+阅读 · 2019年12月31日
【电子书】C++ Primer Plus 第6版,附PDF
专知会员服务
83+阅读 · 2019年11月25日
【干货】谷歌Joshua Gordon 《TensorFlow 2.0讲解》,63页PPT
专知会员服务
24+阅读 · 2019年11月2日
深度神经网络模型压缩与加速综述
专知会员服务
127+阅读 · 2019年10月12日
相关资讯
ZigBee 网络安全攻防
计算机与网络安全
13+阅读 · 2019年4月15日
基于Web页面验证码机制漏洞的检测
FreeBuf
7+阅读 · 2019年3月15日
可能是 Android 上最好用的写作 App
少数派
10+阅读 · 2018年12月21日
Android P正式发布,你需要尽快做适配了
前端之巅
3+阅读 · 2018年8月7日
Python为啥这么牛?
Python程序员
3+阅读 · 2018年3月30日
免费云真机测试 | 让您的应用完美适配 Android Oreo
引力空间站
3+阅读 · 2018年2月2日
【区块链】区块链是什么?20问:读懂区块链
产业智能官
8+阅读 · 2018年1月10日
这位程序员为什么要弃用Facebook?
CSDN
5+阅读 · 2017年7月14日
共享单车惨遭共享:一款App能骑9种车到底是啥神器?
黑客技术与网络安全
4+阅读 · 2017年7月6日
Top
微信扫码咨询专知VIP会员