📜  两因素身份验证实现方法和绕过

📅  最后修改于: 2021-10-20 10:32:47             🧑  作者: Mango

两因素身份验证或 2FA 是一种高级用户身份验证方法和多因素身份验证机制的子集。 2FA 通过在单因素身份验证中使用的传统密码之后添加另一层真实性挑战来增强其用户帐户的安全性。向完全依赖密码的传统登录系统添加更多内容的建议由来已久。这个建议的灵感来自这样一个事实,即密码在易于记忆和难以猜测之间具有内在的平衡。

两因素身份验证实施方法和绕过

密码管理器帮助人们记住复杂的密码并生成此类密码以供使用。这些密码管理器可能是安全的,但是您如何阻止某人赢得 iPhone 并最终安装恶意软件?此外,并非每个人都使用密码管理器。这是多因素身份验证在保护帐户免遭未经授权的访问或完全接管方面非常有用的地方。 2FA 的常见实现方式有:

1. 一次性密码(OTP)

一次性密码是通常由数字组成的字符串,这些数字的有效期很短,并且在其生命周期中只能使用一次。 OTP 用作密码后的帐户或类似在线实体的附加安全层。

用于双因素身份验证的 OTP 的一般实现需要在成功验证密码后通过连接到帐户的电子邮件或电话号码接收 OTP。假设只有该帐户的实际所有者才能访问其中一个或两个。除非提供正确的 OTP,否则登录不会成功。 OTP 可以通过文本或语音呼叫传送到电话。在电子邮件中,OTP 通常作为邮件正文的一部分以明文形式接收。

2. 基于软件的身份验证

实现双因素身份验证的另一个想法是让您的用户在他们的手机上安装一个应用程序,该应用程序必须用作第二个因素。该应用程序将定期生成令牌并将它们传输到其服务器。需要认证的网站会要求用户提供代码,然后将其发送到该应用程序的服务器进行验证。验证码通过后即可登录成功。基于应用程序的身份验证背后的想法是避免文本和呼叫的固有问题。

3. 备份代码

如果用户无法访问其辅助身份验证源,则会使用备份代码。可以使用备份代码的一种不太通用的方式是用于直接身份验证。根据需要为登录用户生成备份代码。代码以 10、15 个左右为一组生成。每个代码只能使用一次。此外,每当生成新的集合时,旧的集合就会失效。

4. 基于硬件的身份验证

为了避免恶意人员物理访问用于 2-FA 的智能手机或类似设备的问题,使用了基于硬件的“密钥”。此“密钥”仅用于身份验证,因此有人利用其用户的善意而恶意访问它的可能性很小。 (你可以让别人使用你的手机,但你为什么要给他们你的身份验证硬件?)。 “密钥”通常是一个 USB 驱动器,其中包含将用于用户真实性验证的密钥。

5. 基于特征的认证(Biometric Authentication)

生物特征认证依赖于用户的生物独特特征。两个最常用的特征是指纹和虹膜。在高度敏感的系统中,生物特征身份验证被用作用户身份验证的辅助手段。生物识别技术也可用作独立的身份验证方法。

2FA 方法的问题:

  • 基于短信和通话的 OTP 依赖于 SIM 卡,可以复制。
  • 基于软件的 2FA 方法与令牌生成算法一样安全。
  • 基于硬件的 2FA 方法仅在其原始用户以外的任何其他人无法物理访问时才有用。
  • 如果存储在不安全的地方,则可以轻松获取备份代码。
  • 生物特征认证特征可以被复制并因此被绕过。