微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何解码 Yubikey OTP 令牌?

如何解决如何解码 Yubikey OTP 令牌?

我正在尝试弄清楚如何构建一项功能以使用 Yubikey OTP 进行身份验证。

我想自行托管我自己的身份验证服务,而不依赖 Yubikey API。

我浏览了他们的示例 yubikey-ksm 项目,试图找出 Yubikey 请求的格式,因此我可以尝试构建自己的。但是,他们的示例似乎是在密钥数据库中查找令牌的 AES 密钥。我不太确定这个密钥的来源,因为在设置新的 Yubikey 时没有安装 AES 密钥的步骤。

我目前对流程的理解(如有错误请指正):

  1. 取OTP的前12个字符;这是令牌 ID,以及最后 32 个字符;这是密文。

  2. 以某种方式获取与此令牌 ID 关联的 AES 密钥(但在哪里??)以及“内部名称”。

  3. 使用步骤 2 中的密钥和 0x00000000000000000000000000000000 作为 IV,在 ECB 模式下使用 AES128 解密 32 个字符的密文。

  4. 检查明文的前 12 个字符是否与步骤 2 中的“内部名称”匹配,并且明文的 CRC 是否正确。

  5. 如果第 4 步是正确的,那么密钥就会被验证。接下来的 4 个字符是计数器,接下来的 8 个字符是时间戳,接下来的 2 个字符是使用计数器。

第 2 步中的 AES 密钥和“内部名称”从何而来?而且,鉴于远程服务器和 Yubikey 没有安全的方式来协商新的 AES 密钥,攻击者如何以合法站点所有者需要获取它来验证密钥的相同方式获取 AES 密钥,这如何安全?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。