TL;DR安全性很难,即使对安全协议的工作方式进行微小的更改也可能引发意外攻击。虽然乍一看似乎将 2FA 放在密码之前有助于保护密码,但它实际上会引发更严重的攻击。我们来看一下!
我们试图解决的问题
根据您的问题,您要解决的问题是密码暴力破解。这有点像红鲱鱼,因为人们破解被盗或泄露的密码哈希数据库的密码,人们不会暴力破解实时服务器,因为诸如速率限制之类的东西已经很好地解决了这个问题。也就是说,让我们看看不同类型的 2FA 以及如果 2FA 在密码之前会发生什么。
代码生成应用
又名基于时间的一次性密码算法 (TOTP),例如 Google Authenticator:
我同意你的观点,我无法想出为什么把它放在第一位会削弱身份验证协议的原因。
通知应用
一些 2FA 旨在在手机上弹出通知,而不是让您输入代码,例如 Blizzard Authenticator:
执行您建议的将其放在密码之前实际上是危险的,因为它会导致拒绝服务攻击:攻击者敲击用户的帐户,以便在他们的手机上出现几乎恒定的通知,或者阻止他们能够使用他们的手机,和/或强迫他们禁用 2FA 以使通知停止(并削弱他们的帐户)。
短信代码
也就是通过短信向您的手机发送一次性密码。
这与通知应用程序有相同的问题,因为它会导致明显的拒绝服务攻击,但更糟糕的是,在某些地方,电话运营商对传入的短信收费,因此攻击者可以强迫用户支付巨额手机账单。
概括
在我提到的三种 2FA 应用程序中,您的建议对一种是中性的,对另外两种是有害的。
此外,将 2FA 步骤放在首位会向攻击者宣传哪些用户启用了 2FA,哪些用户没有启用。基本上告诉他们谁是容易的目标。
最后,基于通知和 SMS 的 2FAs 服务器还有另一个有价值的用途:当您的密码被破解时发出警报通知您。如果我收到意外的 2FA 通知,是时候更改我的密码了。
我喜欢你跳出框框思考并挑战事物的方式。安全性很难,但不要因为提出更多问题而气馁,这个回答很有趣。