安全答疑:SHA1 算法、生物识别与保险库泄露场景
验证码用的是 SHA1,是不是不安全
这是安全类提问的冠军。官方 FAQ 的回答分两层:
- 算法不是应用选的,是服务端定的:哈希算法由你开启两步验证的那个服务指定,应用端改了它,验证码就全对不上了——所以这不是应用能「升级」的事;
- 此 SHA1 非彼 SHA1 风险:公众熟知的 SHA1 碰撞攻击针对的是「数字签名」场景;在两步验证里,SHA1 用于 HMAC 运算,已知攻击对这种用法不构成现实威胁。官方 FAQ 原文即持此口径。
想进一步了解算法层设计,见加密设计;特殊类型条目的固定算法见特殊验证码类型。
别的应用指纹解锁正常,这里为什么不行
官方 FAQ 解释过原理:生物识别解锁需要依赖 Android Keystore 里「通过生物验证才放行」的密钥机制,个别设备的这一实现有缺陷。如果其他应用能用生物解锁而它不能,大概率是那些应用采用了较弱的生物验证方式,而它坚持了更严格的实现。处理思路见生物识别解锁。
指纹解锁突然失效了
多半是设备安全设置变动(重录指纹等)导致 Keystore 密钥作废。处理:密码解锁进入 → 关闭生物识别开关 → 重新开启,完整步骤见生物识别解锁。
保险库文件被人拿到了会怎样
分两种状态(文件概念见保险库):
- 加密保险库:官方口径是「拿到文件的人不知道密码就无法取得内容」——AES-256-GCM 加 scrypt 的组合让暴力破解成本极高;
- 明文保险库:文件即密钥,拿到即沦陷。这就是初始化时官方强烈建议设密码的原因。
屏幕上的验证码会不会被别的应用偷看
有两道防线专门防这个:截屏防护禁止截屏录屏,点击显示让验证码默认隐藏,见防窥防护。同时它只申请极少量权限(相机、生物识别、震动等,见 F-Droid 权限清单),不存在读取剪贴板上传之类的行为——应用根本没有网络权限,见云端备份页的说明。