在多台服务器上共享相同的TOTP会降低安全性?

在多个服务器上使用相同的OTP秘密是否存在(“不是微不足道的”)安全隐患?

在我的networking中,我正在运行gitlab-ce , nextcloud和LTB自助服务密码 。 GL和NC都通过TOTP支持2FA,但作为单独的附加组件,而不是通过中央authentication(如LDAP)或其他共享方式。

我正在开发一个PR到SSP来启用2FA密码更改,但是我想知道是否有可能让GL使用相同的LDAP存储的OTP秘密。 我想build议向GL提供支持,但前提是不削弱系统。

不集中它的后果并不是很大:每个应用程序/服务器将存储它自己的2FA秘密,所以用户必须单独pipe理它们。 与技术上不需要密码pipe理器的密码不同,我不知道谁能够记住他们的OTP秘密并在头上生成代码,因此用户被迫使用pipe理应用程序(例如Google Authenticator或FreeOTP身份validation器)。 从多个秘密列表减less到大多数只是方便。

同样,除了方便之外,集中OTP秘密存储还有哪些优点?

问题是,正如@HBruijn所指出的那样,攻击者可以使用login到一个服务的TOTP值来login到另一个服务。 在一段时间内,这可能是两分钟的时间。 虽然你的时间步可能只有30秒,RFC规定validation服务应该及时来回地searchOTP值。 由于时钟的漂移,build议使用此function。 https://tools.ietf.org/html/rfc6238#section-6

另一点是,你的整个系统只有周末一样安全。 如果任何系统/数据库丢失了OTP密码,所有系统都会被破坏。

当你完成你的问题时,你应该考虑使用一个集中的系统,存储秘密并执行validation。 这样就没有重播攻击的可能性,你只需要在一个地方保护OTP机密。

你可能想看看privacyIDEA ,这正是这个。 它是一个authentication系统,集中pipe理用户的TOTP令牌或应用程序等authentication设备。 所有的应用程序都通过这个服 (免责声明:我是privacyIDEA的核心开发者)

问题在于,所有连接的应用程序都需要连接,即每个应用程序都必须能够与privacyIDEA交谈。 为此,应用程序必须能够充当RADIUS客户端,或者与authenticationREST API交谈。 有很多不同的应用程序的插件,如OTRS,ownCloud,Wordpress,dokuwiki,Typo3 …