You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS应用如何使用生物识别认证解密AES GCM加密的用户数据

实现方案

核心思路

不要自己校验生物识别的返回结果,把解密所需的AES密钥托管给系统钥匙串,由钥匙串的访问控制机制保证只有通过生物认证才能读取密钥,从根源避免认证被绕过的风险。

具体实现步骤

1. 新增生物识别开启逻辑

用户首次设置密码,或者后续输入密码成功解密数据时,可引导用户开启生物识别功能:

  • 确认用户同意开启后,将当前通过PBKDF2生成的256位AES密钥写入系统钥匙串
  • 写入时为该密钥条目配置访问控制属性,指定只有通过生物认证才能读取,核心配置参数为kSecAccessControlBiometryCurrentSet,同时可以搭配kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly限制仅当前设备、且用户设置了锁屏密码时才能读取,进一步提升安全性。

2. 生物识别解密流程

用户后续选择使用生物识别解密时:

  • 直接发起钥匙串读取对应密钥的请求,系统会自动弹出生物识别认证弹窗
  • 认证通过后你可以直接从钥匙串拿到AES密钥,复用现有逻辑完成AES GCM解密即可
  • 整个过程不需要用户输入密码,也不需要再次走PBKDF2密钥生成逻辑

注意事项

  • 如果用户在系统设置中新增/删除了指纹/面容数据,钥匙串中配置了kSecAccessControlBiometryCurrentSet的密钥条目会自动失效,读取时会返回对应错误,你只需要捕获该错误,引导用户重新输入密码,再将新生成的密钥写入钥匙串即可。
  • 不要依赖LocalAuthentication返回的布尔值作为解密的唯一判断条件,这种逻辑很容易被越狱环境、hook操作绕过,必须把权限校验交给钥匙串的原生访问控制机制。
  • 不需要对存入钥匙串的密钥做额外加密,iOS钥匙串本身基于硬件安全模块加密,安全等级符合苹果官方的安全规范。

内容的提问来源于stack exchange,提问作者encryptor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 06:27:02