知识卡片
无密码验证FIDO:用本地私钥挑战响应,替代永远存在泄漏风险的共享密码
内容
传统密码验证方式的一个根本弱点是:密码作为一份”共享秘密”,需要用户和服务器双方都各自保存(或至少服务器保存密码的某种衍生形式),一旦服务器端的存储被攻破、或用户在其他地方重复使用同一密码的网站被攻破,这份共享秘密就会泄漏,进而波及所有使用同一密码的账号。FIDO这类无密码验证方案从根本上改变了验证的模型:用户的私钥始终只保存在本机设备中,从不上传给任何服务器,验证时用户只需要通过触碰、本机密码或生物识别(指纹、虹膜、扫脸)在本地解锁这个私钥,然后设备用这把私钥对服务器发来的挑战信息做签名、返回给服务器,服务器只需要用配对的公钥验证这个签名是否正确即可确认身份,全程不存在一份需要在网络上传输、也不存在需要在服务器端保存的”共享秘密”。这个案例给出一条通用的身份验证设计思路:与其不断加固”如何安全地保存和传输一份共享秘密”,不如从根本上改变验证模型,让敏感的私钥永远不离开用户设备本身,服务器端只需要验证一次性的挑战-响应签名结果,即使服务器端的验证数据(公钥)整个泄漏,也不会威胁到用户账号本身的安全。
参考来源
- 位置:《高可用架构(第1卷)》第7章《安全与网络》"7.5 互联网主要安全威胁分析及应对方案"节,"7.5.2 威胁应对方案","8.无密码验证"(源文件:_epub-src/OEBPS/Text/Chapter7_5_3.xhtml)
- 结论依据:原文说明"很多安全问题是因使用密码导致的,所以无密码的验证方法就出现了。FIDO就是这样的一个工具……FIDO的核心逻辑是在本地通过触碰、密码或生物识别解密本机设备中的私钥,然后通过公、私钥完成证。从原理上讲,正确实现的Challenge-Response验证方式是相当安全的",直接支撑本卡片结论。
- 原始内容:FIDO的核心逻辑是在本地通过触碰、密码或生物识别解密本机设备中的私钥,然后通过公、私钥完成证。从原理上讲,正确实现的Challenge-Response验证方式是相当安全的。