在开放论坛中意外输入 YubiKey 密码的风险和缓解措施是什么?

信息安全 密码 验证 多因素 一次性密码 优比键
2021-09-07 09:43:25

我的笔记本电脑中有一个 YubiKey(用于测试),不小心将我的 YubiKey 密码广播到互联网上。由于这只是一个测试密钥,并且无法访问任何有价值的东西,因此这里有一些示例 OTP 密钥:

ccccccbhknbgunfejcduuficrglhbckgbbugjegrbbbj

ccccccbhknbgncbjurrufidrvjvjnbglduvnjtccjhif

我的理解是,在默认配置中,前导字符是一种标识符(唯一 ID) : ccccccbhknbg我不清楚这是编码值,还是原始 ASCII 值。

  • 在互联网上发送这些密码有什么风险?是否丢失了任何隐私?

  • 它是否连接到 YubiKey 云,或者它是否是独立配置的一部分?

  • 我怎样才能从中恢复过来?我可以重新生成任何标识符吗?如何使密码无效?

4个回答

关于 YubiKey 的作用,这里有一些解释基本上,YubiKey“键入”的密码(从计算机的角度来看,它是一个键盘)可以是静态密码,也可以是一次性密码。如果它是一个静态密码,那么您只是透露了它,是时候非常抱歉(并立即更改该密码)。

一次性密码,YubiKey 产生的遵循HOTPHOTP 中的密码学使得从一个或多个使用 HOTP 生成的一次性密码重新计算“主机密”在计算上是不可行的。此外,每个密码都是从一个计数器内部计算出来的。YubiKey 和服务器都维护相同的计数器,服务器允许一些有限的同步缺失。即,当服务器的当前计数器具有值n并接收密码作为身份验证尝试时,它将在内部生成值n+1n+2,...的密码,直到n+100(这是可配置的)。如果找到(比如说)密码n+17的匹配项,然后授予访问权限,并且服务器的计数器设置为n+17否则,连接被拒绝并且服务器的计数器不会改变。

因此,您无意中“在 Internet 上”发布的一个密码,该密码将授予对相应服务器的访问权限,直到您自己在该服务器上进行下一次身份验证,因为该身份验证会将服务器的计数器更新为另一个计数器值。在某种程度上,使用计数器值为k的OTP 会使所有值为j < k的 OTP 值无效。这导致以下恢复过程:如果您发布了 OTP 值,请快速连接到服务器以使该发布的值无效。之后,您可以忽略它;一旦失效,它是无害的。

注意:如果您在没有对服务器进行身份验证的情况下使用您的密钥重复生成大量“空白”密码,您的 YubiKey 可能与服务器的密码不同步——使用计数器值的密钥超出了服务器当前接受的范围. 不要让你 3 岁的孩子玩你的 YubiKey !在类似的情况下,对于红外车钥匙,当你启动引擎时,通过 RFID 强制计数器同步。)

YubiKey 支持 Yuibco OTP,这是生成的长 OTP。YubiKey 一次性密码 (OTP) 是 44 个字符、一次使用、安全、128 位加密的公共 ID 和密码,几乎不可能被欺骗。

OTP 由两个主要部分组成;前 12 个字符保持不变,代表 YubiKey 令牌本身的公共 ID。

剩余的 32 个字符构成每个生成的 OTP 的唯一密码。密码是从大量随机源生成的,包括 YubiKey 会话的计数器和生成的 OTP。当 YubiKey 被验证时,Session 和 OTP Counter 的值会与最后提交的值进行比较。如果计数器小于先前使用的值,则拒绝 OTP。复制 OTP 将不允许其他用户欺骗 YubiKey - 计数器值将允许验证服务器知道哪些 OTP 已被使用。

您可以在此处阅读有关 YubiKey OTP 的更多信息

你没事。您只丢失了“用户名”类型的标识符。

关于服务器生成 100 个要检查的密码的部分,Thomas 并不完全正确。

第二部分,“OTP”被加密。服务器使用它的 AES 密钥解密 OTP。解密的内容有计数器。如果计数器等于或小于服务器验证的最后一个计数器,则它是重放攻击。

如果您想创建一个新的 AES 密钥,您可以将其上传到 yubico,但他们说它没有相同的正常运行时间保证。但是,仅仅吐出几个 OTP 不会损害您的利益。

Yubikey OTP 令牌字符串是通过将原始数据的十六进制字符串编码为小写字母(拉丁)字符的特殊子集而生成的。例如,c恰好是 hexadecimal nibble (digit) 的编码0

默认情况下,来自“vanilla”Yubikey 的 OTP 令牌的前 12 个字符(6 个字节),具有默认配置和密钥,是序列号。所以你刚刚泄露了它:14***93,不是吗?

其余的是 AES-128 加密数据(计数器、随机随机数、..),所以我不会担心。

该编码称为Yubico modhex,旨在防止不同键盘布局(例如 QWERTY 与 AZERTY)上的键盘扫描码出现歧义:

0123456789abcdef
cbdefghijklnrtuv

还有在线演示转换器