找回流程不应通过验证问题泄露比密码更易猜测的信息
别名: 安全问题 · knowledge-based recovery · 母亲姓氏
概念解释
验证问题(knowledge-based recovery)用「母亲婚前姓、第一只宠物、毕业学校」当找回钥匙。这些问题的答案空间小、常出现在公开资料或亲友闲聊里,比人设的密码更容易被别人猜中或查到。这条反对把这类问题当成找回的充分条件,尤其反对在流程中向未持有账号的人展示或确认这些答案。它不谈重置链接的有效期,也不谈重置后要不要踢掉其它会话。
机制
密码(即便不完美)是人专门为这个账号生成的秘密;验证问题问的是人生事实,秘密性从来不是设计目标。社交网络、毕业纪念、公共记录把答案变成可检索项。亲友和前任比远程攻击者更有优势。系统若在找回页提示「答案不正确」并给出问题原文,等于把问题集合告诉了枚举者。人还会为了好记而选真答案,或把同一套答案用在所有网站。NIST SP 800-63B 把知识问题从认证器里拿掉,依据就是它的猜测与公开性,不是某一次用户研究的百分比。用邮件或已验证设备找回,问的是通道持有;用人生事实找回,问的是人人都能搜的履历。
怎么研究
可用安全研究让知情者(模拟亲友)与陌生者分别攻击「问题+答案」找回,比较成功率,并看问题原文是否在未认证页面暴露。
自变量:是否使用知识问题、问题是否可自拟、失败时是否回显问题、是否改用已验证通道。 因变量:知情者找回成功率、陌生者在线猜测成功率、未认证访问者能列出的问题条数。
不要编造「母亲姓氏可被猜中百分之几」;文献与准则给的是定性:公开、低熵、社会工程友好。实验室陌生人猜测会低估真实风险,因为真实攻击者会查目标的社交账号。产品指标若只看「找回完成率」,知识问题会显得好用,同时把账号交给了更能答对问题的那个人——不一定是主人。
边界
内部帮助台用员工工号加当面核验,不是互联网上的开放问题表。国家身份系统的法定问答不在产品可删范围,但产品仍可把它们限制在柜台,而不是做成可被远程穷举的网页。用户自拟问题若允许「我的密码是什么」或极度私密的短答案,只是换皮的密码,还要防答案被客服界面看见。完全去掉知识问题后,没有已验证通道的账号会更难自助找回,那应在开户时强制绑定通道,而不是把弱问题当备份。
怎么落地
- 新账号不要再设验证问题;已有问题的账号在下次登录后引导改绑邮件、设备或通行密钥,并允许删除问题。
- 自助找回只走已验证邮箱、短信、安全密钥等通道,不在未登录页展示问题原文或答案对错细节。
- 人工找回用一次性临时凭证和已有订单等动态事实,不把静态人生问题写进客服脚本。
- 验证:未登录访问找回,页面上不应出现可枚举的问题列表。用目标的公开资料尝试回答任何仍存在的问题,若能进入重置,该通道不合格。统计仍靠知识问题完成的找回次数,应随引导下降。