谷歌如何利用用户对历史密码的最佳猜测完成账号身份验证?
历史密码猜测校验的实际原理
首先明确一个基础常识:正规平台存储的密码哈希确实不可逆,但校验用户提交的猜测内容根本不需要“破解”哈希,所谓超级计算机跑破解的猜想完全不符合工程逻辑。
- 最基础的校验逻辑和你日常登录输密码没有区别:平台会给你提交的所有猜测内容,用和当初存储历史密码完全一致的加盐哈希规则计算哈希值,直接和数据库里存的该账号所有历史密码哈希做精确比对。只要你猜的内容和你曾经设过的某个旧密码完全一致,哈希值会100%匹配,这一项的账号归属判定权重极高,基本可以直接确认是号主本人。
- 你提到的“相似内容的哈希值无法直接比对”是完全正确的,但平台从来不会只靠密码哈希这一个维度判定账号归属:你输入猜测内容时的打字间隔、输错修正的行为特征,猜测内容和你过往设密码的习惯匹配度(比如你是不是常年带相同的数字后缀、固定用某类特殊字符),提交请求时的设备、IP环境,都会和密码匹配结果一起折算成置信分,哪怕你没完全猜对旧密码,只要总分过线一样能通过校验。
- 谷歌引导用户“尽量猜”本质是降低账号恢复的门槛,很多人记不清旧密码的完整字符,但能蒙对大半结构,哪怕最后没精确命中哈希,这部分输入的内容也能给特征校验提供足够多的参考信息,比让用户硬想一个完全准确的旧密码成功率高很多。
谷歌官方账号恢复指引原文:
If you can't confidently recall any previous passwords: Take your best guess.(译文:如果你无法准确回忆起任何曾经使用的密码,输入你能想到的最接近的猜测即可。)
根本不存在用超级计算机破解存储哈希再比对的操作。首先谷歌这类平台存储密码用的都是抗暴力破解能力极强的带盐慢哈希算法(比如Argon2、bcrypt),暴力破解的成本高到完全没有性价比;其次如果真要靠破解匹配,平台完全可以自己跑常用密码字典撞库,根本没必要让用户自己提交猜测,逻辑上就站不住脚。
内容的提问来源于stack exchange,提问作者Nazhir
相关产品推荐
相关产品推荐

