为什么我们要使用MFA

传统的密码安全模式容易受到破解、钓鱼和社交工程等攻击方式的影响。一旦黑客获取了您的密码,他们就可以轻松访问您的账户和敏感信息。MFA提供了额外的层次,极大地增强了账户的安全性。

简单地说,诸位保存密码的方式并不是很靠谱。

此外,对于暴露在网络上的服务,简单的口令验证很容易遭到暴力破解,甚至就是你不经意间在测试中留下的弱口,而MFA能很好的规避这个问题。

什么是MFA

认识MFA

多重因子身份验证(MFA,Multi-Factor Authentication是一种安全措施,要求用户在登录或进行敏感操作时提供多个不同的身份验证因素。这些因素包括以下几种常见的形式:

  1. 密码:仅知道的用户特定密码。

  2. 手机验证码:通过短信或身份验证应用程序收到的一次性代码。

  3. 生物识别:使用指纹、面部识别或虹膜扫描等生物特征进行验证。

  4. 硬件令牌:如安全令牌或USB密钥,生成动态密码用于验证。

MFA的定义在网上到处都是,官方的话也不必说太多,所以我选择重点说说从实践出发的理解:关于2FA及动态验证码的生成算法。

重点说说2FA

2FA,即双因子身份认证。重点讲2FA的理由也很简单,这是最适合我们的安全验证方法。

如果看完上面一段并去搜索了MFA,你可能会得到这样的结论:有高级安全性的企业通常选择多重身份验证[1]。没错,但这并不适合我们,因为它实在太过繁琐,而我们对安全性的要求还是要建立在合理平衡安全性便捷性的基础上的。而双因子身份验证相对来说便算是满足安全性的同时也较为便捷的认证方式了,它不必通过繁琐的多次认证,但又为账户密码加上了一层保障,这足以满足我们对安全性的要求。

双因子身份验证一般是采用账户密码+动态密钥的形式,这一方式的优点很多,它在保证安全性的同时容易实现且操作简单,不会为运营带来太多额外的负担。此外,动态密钥的形式也很多,可以是通过短信、邮件发送的实时验证码,也可以是服务端-客户端采用同样的密钥生成动态密钥等等。我们在实验室服务中通常采用的办法是后者,原因很简单,不会给运营附加任何负担,不论是性能还是成本,只需要大家保护好自己和自己的设备

动态密钥的生成——TOTP算法

TOTP(Time-Based One-Time Password)算法是基于时间的一次性密码算法,根据预共享的密钥与当前时间计算一次性密码。它已被互联网工程任务组接纳为RFC 6238标准,成为主动开放认证的基石,并被用于众多多因子认证系统当中。[2]

在 RFC 6238 中,TOTP 是基于 HMAC-SHA1(Hash-based Message Authentication Code-Secure Hash Algorithm 1)的算法。它使用一个密钥和当前时间的信息来计算生成一个一次性密码。TOTP 的密码有效时间被划分为固定长度的时间间隔(例如30秒),每个时间间隔生成一个新的密码

TOTP示意图通常情况下,TOTP 密钥是一个随机生成的字符串,长度为至少128位,并且具有很高的随机性。再加上TOTP动态生成的时间是有限的,暴力破解几乎是不可能的。但前提是TOTP生成的密钥应当是储存在安全的位置,为了提高安全性,用户还应遵循最佳实践,例如保护其设备、密钥和登录凭据,并确保使用受信任的 TOTP 应用程序。一句话说就是保护好自己和自己的设备

关于TOTP说到这里也就差不多了,但是我提到的这些内容仅仅是让大家大致直到TOTP是怎么个事,关于其具体的算法原理和实现方法我很推荐大家自己去搜索了解,并形成笔记。因为安全算法真的是一个很吸引人的东西,不只是TOTP,它们是安全工程师们在不断的安全实践中总结出来的结晶。也许很多和我智商差不多堪忧的同学都很难做到看两篇博客就理解一个算法,但是我们可以把它记在心里,时不时去看一下,懂一些又记一点,这是个不错的办法。这些最佳实践中最具智慧的算法,理解任何一点都可以给我们带来思维和认知上的进步。

MFA的实践应用

MFA,特别是2FA在有企业、组织、机构中的应用非常广泛,在有安全性要求的组织机构中会很严格的要求成员使用MFA验证并保护自己的识别信息。经过很长时间的实践验证,我们可以认为MFA就是当前身份认证解决方案中的最佳实践。我个人理解,在实际使用环境中,要保证MFA(2FA)的有效性至少有两方面要求:一方面是TOTP的生成和管理要可靠,生成动态密钥的程序要保证可靠、存储生成密钥的位置要可靠、保管密钥的设备要可靠;另一方面则是使用MFA的程序要做好授权管理,否则任何的认证都是虚无的。

已部署支持MFA的服务

  • JumpServer堡垒机 [3]

以堡垒机MFA认证为例说明MFA启用方法:

注:目前实验室服务尚未开启强制MFA认证,推荐大家自行开启,后续可能会强制管理员及以上用户强制MFA认证.

首先登录堡垒机,登录账户后点击个人头像,选择"个人信息",在”账户信息”页面中选择多因子认证设置(如下图)。

mfa

mfa

首次开启后需要使用Authenticator客户端与服务端绑定,一般是输入密钥或扫描二维码的形式,完成绑定后将在登录时看到如下界面,输入客户端中的实时验证码即可登录。

mfa

推荐使用的MFA客户端

  • Microsoft Authenticator - 旭哥也在用这个嗷

插一嘴,Microsoft Authenticator可以通过iCloud同步,什么叫苹果最佳开发者啊(后仰)

  • Google Authenticator - 网上很推荐这个

参考资料及推荐阅读

本文参考资料

[1]什么是双因素身份验证 (2FA)?| Microsoft 安全

[2]解读登录双因子认证(MFA)特性背后的TOTP原理 - 知乎 (zhihu.com)

[3]MFA - JumpServer 文档

推荐阅读

  1. 多重身份验证 (MFA) - Microsoft 安全

  2. 什么是 MFA? (aliyun.com)

  3. TOTP基本原理 - 知乎 (zhihu.com)

  4. 动态口令(TOTP)介绍 (aliyun.com)