身份验证 | Android 开源项目 | Android Open Source Project 要求进行用户身份验证才能使用密钥 生成密钥或将密钥导入到 AndroidKeyStore 时,您可以指定密钥仅授权给经过身份验证的 用户使用。用户使用安全锁定屏幕凭据(模式/PIN/密码、指纹)的子集进行身份验证。 这是一项高级安全功能,通常仅用于有以下要求的情形:在生成/导入密钥后(而不是之前 或当中),应用进程受到攻击不会导致密钥被未经身份验证的用户使用。 如果密钥仅授权给经过身份验证的用户使用,可以将其配置为以下列两种模式之一运行: 经过身份验证的用户可以在一段时间内使用密钥。在用户解锁安全锁定屏幕或使 用 KeyguardManager.createConfirmDeviceCredentialIntent 流程确认其安全锁定屏幕凭据后, 即 可 使 用 此 模 式 中 的 所 有 密 钥 。 每 个 密 钥 的 授 权 持 续 时 间 各 不 相 同 , 并 由 setUserAuthenticationValidityDurationSeconds 在密钥生成或导入时指定。此类密钥只能在 启用安全锁定屏幕时生成或导入(请参阅 KeyguardManager.isDeviceSecure())。在安全锁定屏 幕停用(重新配置为“无”、“滑动”或不验证用户身份的其他模式)或被强制重置(例如由 设备管理员执行)时,这些密钥将永久失效。 用户身份验证会授权与某一密钥关联的特定加密操作。在此模式中,涉及此类密钥的每 个 操 作 都 需 要 用 户 单 独 授 权 。 目 前 , 此 类 授 权 的 唯 一 方 式 是 指 纹 身 份 验 证 : FingerprintManager.authenticate。此类密钥只能在至少注册一个指纹时生成或导入(请参 阅 FingerprintManager.hasEnrolledFingerprints)。一旦注册新指纹或取消注册所有指纹,这些 密钥将永久失效。 支持的算法 Cipher KeyGenerator KeyFactory KeyPairGenerator Mac Signature SecretKeyFactory 密码 加强密钥安全保护 我们还加入了一个新的 KeyStore 类 —— StrongBox ,并提供相应的 API 来支持那些提供 了 防 入 侵 硬 件 措 施 的 设 备 , 比 如 独 立 的 CPU , 内 存 以 及 安 全 存 储 。 您 可 以 在 KeyGenParameterSpec 里进行设置,决定是否把密钥交给 StrongBox 安全芯片来保存。 添加了安全硬件的框图如下:
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!