登录页先要密码,再要第二个秘密,于是这套部署立刻被描述成多因子。有时确实如此。但很多时候,它只是同一个因子被收集了两次,因为两个值都是同一个人从同一份记忆或同一张便笺里敲出来的知识。强隧道加密改变不了这一点,产品名里的“安全”二字也改变不了。

要把说法和机制分开,只需一个问题:每一步向谁证明了什么?

因子是证明,不是输入框

多因子认证意味着,为同一个账户验证不止一种不同类型的证据:用户知道的东西、用户拥有的东西、用户本身是什么。两个都在收集记忆字符串的输入框,只是把同一种证据要了两遍。两个独立秘密比一个更难猜,所以它可能是有用的控制措施,但它并不是这个术语所指的东西,在风险评估里也不应被算作多因子。

验证的一侧和收集的一侧同样重要。设备上生成的验证码只有在服务器拿它与绑定到该账户的秘密比对、并拒绝重放时,才证明了对此设备的掌控。对所有人通用的共享码、没有次数限制的码,或者在一台从不显示批准内容的设备上点了批准的提示,都比标签暗示的要弱。

所以,当有人问 VPN 有没有 MFA 时,要问第二步证明了什么,服务器又如何把它绑定。如果答案是“来自同一目录的第二个密码”,你拥有的只是一个因子加一场政策讨论,而不是第二个因子。

证书的情形要读,而不是假定

客户端证书加密码看起来像两个因子,也确实可能是:证书保存在存储区或令牌上,密码则被记住。它也可能只是一个因子——如果证书文件未加保护地放在与保存的密码相同的配置文件目录里,或者证书被签发给了多人共用、且没有个人问责的设备。

要厘清的问题是:证书识别的是谁,或者是什么。设备证书证明某台受管机器在场。用户证书证明一个身份。如果部署为每台笔记本签发一张证书,然后把它的存在当作对人的证明,那么第二个因子就悄悄变成了硬件的属性,谁拿着这台笔记本,谁就继承了它。

这一切并不使证书成为坏主意。它只是说明,把设备保证与用户保证区分开来值得写下来,因为两者回答的是不同的问题;把它们算成一项的合规表格,会高估实际受到保护的范围。

网关信任与用户信任是两个问题

有了第二个因子,也不代表可以把凭据敲进一个你尚未验证的端点。客户端必须认出预期的网关,服务器证书和客户端的信任配置正是为此而设。钓鱼的做法是把登录搬到攻击者控制的服务器上,在那里输入的、正确的一次性验证码,会被实时原样转给真正的服务。

所以,改变结果的是方式的选择,而不是提示的措辞。人手动输入的验证码,任何能拿出一个可信页面的人都能转发;而把认证绑定到特定来源与会话的密码学方式,从设计上就能抵抗这种转发。你拥有的是哪一种,取决于方式本身,而不是对话框里有几步。

应当遵循厂商支持的注册与客户端流程,而不是往密码框上再拧一个提示。自制的第二步通常落在两者之间,增加了摩擦,却没有让因子变得有意义的那种绑定。

恢复是第二道前门

任何强登录都得有认证器丢失后的回程,而那条路径往往正是设计中最薄弱的地方。如果支持人员接到打给登记号码的电话后就能重置第二个因子,那么攻击者最便宜的路线就是服务台,而不是登录页。

要问清替换如何运作、由谁批准、需要什么证据。然后核查备份码这类恢复材料是否与主凭据分开存放,以免一次失陷就交出两样东西。NIST 的数字身份指南把验证器绑定和认证器生命周期当作要求的一部分,而不是事后的运维想法。

评估里该写什么

按种类描述各个因子,点名每一个证明了什么,并说明它如何绑定到账户。注明该方式是否抵抗转发,并以与登录同样的细致描述恢复路径。

然后直说,按这个定义,这套部署是不是多因子。“两个密码加一张机器证书”是一句诚实的话,它告诉读者的东西,远多于一个打勾的复选框。

相关文章