Android P 中更好的生物认证(译文)

写在前面

Google I/O 2018 上公布了 Android 的新一代版本 Android P,随之也带来了一系列的新功能和体验改进,例如 AR、机器学习、安全等等。
最近正好看到 Android Developers Blog 上发表了一篇跟生物认证有关的博文,而我之前正好做过一些相关的开发工作,所以仔细的阅读了一下,并尝试翻译为本文。
原文标题是“Better Biometrics in Android P”,URL 如下:
https://android-developers.googleblog.com/2018/06/better-biometrics-in-android-p.html
原文由 Vishwath Mohan 发布,Jim Miller 也参与了写作。

按照 Google Developers 上关于版权的声明(见 Content License ),原文应该是以 CC 2.5 协议发布的,所以本文中贴出原文地址,应该就没有问题了。

正文开始

为了保证用户安全,绝大多数的应用和设备都具有鉴权机制,或提供一种方法来证明“你是你”。这些机制分为 3 类:知识凭证(Knowledge factors)、所属凭证(Possession factors)以及生物特征凭证(Biometric factors)。知识凭证指的是你知道的信息(例如 PIN 或密码),所属凭证指的是属于你的事物(例如令牌生成器或硬件密钥),而生物特征凭证是指你本身的特征(例如指纹、虹膜、或是面容)。

(译注:上图保存在 blogspot.com,查看需要科学上网)

生物特征鉴权现在变得越来越流行。原因很明显,生物特征认证比输入密码或随身携带一个硬件密钥更快更方便,同时可以规避在使用基于知识凭证的鉴权方式时的一种常见隐患——肩窥( shoulder surfing)的风险。

随着越来越多的设备采用生物特征鉴权来保护人们的隐私信息,我们在 Android P 中在以下方面改进了基于生物特征的鉴权。

  • 定义更好的模型来度量生物特征安全性,并用其在功能上限制较弱的鉴权方式
  • 向开发者提供通用的平台级接入点,以便将生物特征鉴权集成到应用中

更好的生物特征安全模型

当下,生物特征解锁在衡量其性能时,借用了机器学习中的两个指标:误识率(FAR)和拒识率(FRR)。

在生物特征的场景下,FAR 用于度量一个生物特征模型误将不正确的输入归类为目标用户的频率——也就是错将其他用户识别为设备的合法所有者的频率。
类似的,FRR 用于度量一个生物特征模型误将用户的生物特征归类为不正确的频率——也就是设备的合法所有者需要重试鉴权的频率。前者是安全问题,而后者则关系到用户体验。

对于随机的输入样本,两种指标都能很好的度量给定机器学习(或生物特征)模型的准确度和精度。但是,由于它们都没有将主动攻击者纳入威胁模型的一部分,所以他们都无法针对防御攻击的适应能力提供有效信息。

在 Android 8.1 中,我们引入了两种新的指标,可以更加明确的说明威胁模型中的攻击者:欺骗接受率(SAR)和冒名接受率(IAR)。正如它们的名字所表达的含义,这些指标衡量了攻击者绕过生物特征鉴权的模式的难易度。欺骗是指使用已知良好的记录(例如重播一段语音录音,或是使用一张面容或指纹的图片),而冒名通过则意味着一次对另一用户生物特征的成功模仿(例如试着模仿目标用户的声音或外表)。

强 vs 弱生物特征

我们使用 SAR/IAR 指标将生物特征鉴权机制分为强和弱两类。SAR/IAR 在 7% 或以下的生物特征鉴权机制被归类为强生物特征,而其他高于 7% 的则被归类为弱生物特征。为什么 7% 很特殊呢?因为大多数指纹的实现方案中,SAR/IAR 都在 7% 左右,这使其成为一个衡量其他方式的合适的标准。随着生物特征传感器和分类方法的改进,将来也可能会进一步降低这个阈值。

对于不同的实现所以提供的安全范围,这样的一刀切的方法稍微有些简单粗暴,但至少它为我们提供了一种可伸缩的机制(通过分层鉴权模型),能够基于各种生物鉴权实现在整体上的风险,适当的确定其能力和局限性。

虽然强弱生物特征都能够用于解锁设备,但弱生物特征具有如下的劣势:

  • 在无活动 4 小时(例如放在桌上或充电器上)后,需要用户重新输入它们的主 PIN 码、图案、密码、或是强生物特征来解锁。这是在强/弱生物特征均强制实行的 72 小时超时机制之外的补充。
  • 不被即将到来的 BiometricPrompt API 所支持。该 API 是给应用开发者用于安全的认证设备上的用户的通用 API,且其与认证的方式无关。
  • 无法用于付款时的鉴权,也无法用于涉及到 KeyStore 授权密钥的其它事务
  • 在启用之前,必须向用户显示警告,明确说明使用生物特征技术的风险

这些措施旨在降低使用弱生物特征技术时,发生未经授权访问的风险。

BiometricPrompt API

从 Android P 开始,应用开发者可以使用 BiometricPrompt API 通过与设备和认证方式无关的途径,将生物特征鉴权集成到它们的应用中。BiometricPrompt 仅暴露强生物特征,这样开发者可以保证应用在所有设备上具备一致的安全级别。同时,还为 Android O 及更早的设备提供了支持库,以便应用可以在更多的设备上发挥该 API 的优势。

下面是 BiometricPrompt 的一个高层次的架构图。(译者按:这里又需要科学上网)

该 API 旨在提供较高的易用性,并允许平台选择一种合适的生物特征技术用于鉴权,而不需要应用开发者自己实现相关逻辑。以下的示例展示了开发者如何在应用中使用。

结论

生物特征技术有潜力同时简化并强化我们对数字身份的鉴权方式,但前提是它需要被设计的足够安全,并被准确的度量,还需要通过良好的保护隐私的方式实现。