google-authenticator。如何从我的 Linux 桌面生成六位数代码?

google-authenticator。如何从我的 Linux 桌面生成六位数代码?

考虑以下情况

  • 我有一个帐户https://www.mercadolibre.com.ar。根据新的登录政策,我被要求提供一个六位数的 Google Authenticator 代码;
  • 我已经在我的 Linux(Fedora)机器上安装了 google-authenticator;
  • 我不想使用任何智能手机或任何 Android/IOS 应用程序。

我有办法生成六位数代码吗?

答案1

您需要使用 TOTP,Google Authenticator 是生成它们的常用应用程序。您不需要使用它,您可以使用其他程序。

TOTP 使用秘密(而非密钥)来生成 6 位代码,这些代码每 30 秒更改一次。基本上,它是时间戳(以 30 秒为间隔)加上秘密的哈希值,并转换为 6 位数字。

例如,您的密码管理器也可以生成代码。如果您没有使用密码管理器,请立即开始使用。因此,请向您最喜欢的搜索引擎询问一个好的密码管理器,安装一个,并使用它来存储 TOTP 密钥。

如果你想自己生成它们,你可以在PHPPythonPerl红宝石Java... 有很多选择。

答案2

我在 Linux 机器上也有类似的 2FA 需求。虽然有很多方法可以实现 TOTP,但我选择的是Twilio Authy

Twilio Authy

它易于使用,并支持多个 2FA 账户。它也可以作为折断安装。

答案3

无需在系统上安装程序即可生成 OTP。这是一个漂亮的网页,您可以使用它来生成 OTP(HOTP 或 TOTP),只需使用您的 Web 浏览器即可。加密是在客户端(或浏览器内)使用 javascript 完成的,因此密钥永远不会离开您的浏览器:

https://khovansky.me/demos/web-otp/

答案4

我曾经遇到过类似的情况:我的雇主出于某些目的需要 TOTP,而我拒绝买一部智能手机来处理这件事。我找到了一个解决办法。这个办法不太好,如果安全主管知道了,肯定会大发雷霆,但幸运的是他们没有这样做。下面是解决办法:

  1. 记住你的秘密
  2. 用你喜欢的语言编写一个 TOTP 代码程序
  3. 当你需要一次性密码时,输入密钥

我的密码只有 32 个字符,所以这只是另一个需要记住的密码。至于一次性密码,TOTP 的算法相当简单,可以用 C 或类似语言轻松实现。但是,如果你想要它真的简单,那么您甚至可以使用可用的库在 python shell 中以交互方式执行此操作:

In [1]: import pyotp

In [2]: key = 'reallysecretkeygoeshere'

In [3]: totp = pyotp.TOTP(key)

In [4]: totp.now()
Out[4]: '123456'

就是这样!现在,我觉得有必要强调,这是一个糟糕的解决方案,它绕过了 TOTP 方案的整个目的:如果有人在你的电脑上安装了键盘记录器,观察你输入的内容,折磨你,甚至只是浏览你的机器(如果他们能访问它的话),那么他们就会得到这个秘密——就像它是一个普通的密码一样,这基本上就是上面例子中秘密的简化。但是,如果秘密被正确安装在 yubikey 或类似设备上,那么它不能永远无法恢复。在这些情况下,正确的代码绝对需要对密钥进行物理控制。理想情况下,您永远不应该看到您的秘密,当然也不应该将其限制在记忆中(或者更糟的是,写下来)。我这样做了,而且我这样做肯定违背了雇主的信任。这可能是解雇我的充分理由,但我并不特别在意,而且我从未被抓住。我不能说我推荐我的解决方案,但它确实有效。

相关内容