问题标签 [yubico]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
162 浏览

yubico - 如何将现有的 RSA 密钥导入 YubiHSM?

我知道如何在 Yubikey 中做到这一点,但我有一个 YubiHSM2。不知道该怎么做。

以下内容适用于 Yubikey,不适用于 YubiHSM

0 投票
1 回答
354 浏览

fido-u2f - “Yubico 的安全密钥”如何识别每个密钥?

根据本页下面的句子 “Yubico 的安全密钥”没有序列号。

序列号在所有 YubiKey 型号中都是唯一的,但没有序列号的安全密钥除外。

但是,在Yubico 演示站点中,同一个“Yubico”只能在1 个密钥中注册安全密钥
所以,我认为“Yubico”有一些机制可以在不使用序列号的情况下识别每个“Yubiko”。
那么,webserver中的authenticator如何识别每个没有序列号的key呢?

0 投票
1 回答
600 浏览

python - Django 和 Yubikey 集成

我想将 Yubikey 与我的 Django 应用程序集成。每当我尝试添加 2FA Yubikey 时:localhost:8080/account/two_factor/setup/我得到一个403 HTTP Forbidden错误。如何在 Django 中实现 Yubikey,因为当我使用这些教程时,实现会失败。

当我按照这里的示例做同样的事情时,我得到一个Server Error 500

我遵循了这些教程:

这就是我所做的:

我使用 Python 3.7.3 和 Django 3.0.8

在我的settings.py我补充说:

在我的urls.py我补充说:

在我的views.py我添加了:

home.html的很简单:

堆栈跟踪:

0 投票
0 回答
113 浏览

c# - 如何在 UWP C# 应用程序中使用 Yubikey 使用 PIV 签署 PDF?

我正在尝试使用 PIV 为我的 Windows 应用程序(UWP Xamarin C# .NET)实现 YubiKey HSM。我找到了几种与 YubiKey FIPS 通信的方法,但效果不佳。正如 Yubico 网站中所建议的那样,我尝试使用 PKCS11 和 Pkcs11Interop nuget 包。

https://developers.yubico.com/yubico-piv-tool/YKCS11/

我尝试了 Pkcs11Interop GitHub ( https://github.com/Pkcs11Interop/Pkcs11Interop/blob/master/doc/GETTING_STARTED.md ) 中给出的示例。

但是当我尝试运行时,它会抛出“方法 C_GetSlotList 返回 CKR_DEVICE_ERROR”这个错误。

请帮我解决这个问题或为我提供一个库/代码示例,这可能对我的实现有所帮助。

提前致谢。

0 投票
1 回答
179 浏览

python - 在 Python 中生成 YubiOTP 验证 HMAC-SHA-1 签名

我对我需要在这里为 Python 做的事情有点困惑,但是从用于验证具有 YubiOTP 的 Yubikey 的 Yubikey API 文档中,需要以特定的方式生成 HMAC 签名 - 从他们的文档中:

生成签名

该协议使用 HMAC-SHA-1 签名。要使用的 HMAC 密钥是客户端 API 密钥。

在消息中的参数上生成签名。每条消息都包含一组键/值对,并且签名始终覆盖整个集合(不包括签名本身),并按键的字母顺序排序。更准确地说,要生成消息签名,请执行以下操作:

  • 按键顺序按字母顺序对键/值对集进行排序。

  • 构造一行,每个有序键/值对使用 & 连接,每个键和值使用 连接=。不要添加任何换行符。不要添加空格。例如: a=2&b=1&c=3

  • 使用 API 密钥作为密钥,将 HMAC-SHA-1 算法作为八位字节字符串应用在线路上(记得对从 Yubico 获得的 API 密钥进行 base64decode)。

  • Base 64 根据 RFC 4648 对结果值进行编码,例如t2ZMtKeValdA+H0jVpj3LIichn4=.

  • 将键 h 下的值附加到消息中。

现在我从他们的文档中对他们的 API 的理解说明了以下有效的请求参数:

  • id- Yubico API 的客户端 ID
  • otp- 来自 yubikey 的 YubiOTP 组件的 YubiOTP 值。
  • h- 请求的 HMAC-SHA1 签名
  • timestamp- empty 什么都不做,1在服务器回复中包含时间戳
  • nonce- 包含随机唯一数据的 16 到 40 个字符长的字符串。
  • sl- 一个 0 到 100 的值,表示客户端所需的同步百分比,或字符串“快速”或“安全”以使用服务器值;如果不存在的服务器决定
  • timeout- 等待同步响应的秒数;让服务器决定是否缺席。

我总共尝试使用两个函数来尝试处理所有这些事情并生成 URL。即,我们支持 HMAC 功能并verify_url_generate生成 URL(并且API_KEY是静态编码的 - 我来自 Yubico 的 API 密钥):

由此生成的任何 URL 都会触发来自远程站点的关于“BAD_SIGNATURE”的通知 - 任何生成的 URL 减去 HMAC sig ( h=) 参数都有效。所以我们知道问题不在于 URL,而在于 HMAC 签名。

有谁知道我的 HMAC 生成方法做错了什么,通过将 HMAC sig 生成器从有序 dict 中的串联参数传递key=value&每个参数格式?

0 投票
1 回答
120 浏览

yubico - 使用 PKCS11 从 YubiKey 生成密钥对需要哪些对象属性?

我的应用程序想要使用YubiKeyPIV ( PKCS11 ) 签署文件。我能够登录到我的 YubiKey,但是当我尝试生成 KeyPairs 时,它会引发此错误。

“方法 C_GenerateKeyPair 返回CKR_ATTRIBUTE_VALUE_INVALID

这是我现在拥有的代码(C# .NET

0 投票
1 回答
306 浏览

javascript - 使用 Yubikey 的 WebAuthn 身份验证 API 异常

我正在努力为新创建的网站添加 WebAuthn 支持,并且在 navigator.credentials.get() 调用期间遇到了问题。客户端是 Fedora 33 上的 Firefox 85.0。如果重要,服务器是 Fedora 33 上的 Apache httpd。令牌是 Yubikey 4 或 Yubikey 5NFC(结果相同)。这是进行 API 调用的函数。显然,这里硬编码的凭证 ID 用于测试,而不是最终产品的一部分:

一切似乎都正常,Yubikey LED 闪烁,我按下触摸板,但随后我得到一个异常:

这似乎有点像 Firefox 的包罗万象。它可能表明令牌与 allowedCredentials[] 之一或其他内容不匹配。很难说。Yubikey 上的 FIDO2 凭证是使用与 libfido2 源打包的 fido2-cred(1) 工具创建的。在这种情况下,credentialId 来自fido2-cred -M输出:

您可以在第 5 行看到 credentialId,它cid1在 Javascript 函数中匹配。此外,如果我使用此 credentialId 从令牌请求断言,并且所有其他相同(除了挑战)与fido2-assert -G,一切正常:我得到断言并使用fido2-assert -V.

如果没有更有意义的诊断,很难知道要尝试什么,所以我想我会在这里问一下,看看是否有人有任何提示。也许我在使用 Javascript 或凭证 API 时犯了一些基本错误?

谢谢!

更新:我认为值得尝试的一种可能性是从 RP ID 中删除该方案,但这没有任何区别。

更新:查看 firefox 源代码,错误显然是 NS_ERROR_DOM_INVALID_STATE_ERR,它涵盖了几种不同的情况,但在这种情况下很可能是 U2F_ERROR_INVALID_STATE 的翻译(在 dom/webauthn/U2FHIDTokenManager.h 中)。反过来,U2F_ERROR_INVALID_STATE 在 third_party/rust/authenticator/src/u2fhid-capi.h 中定义为一个简单的数值 (3),没有说明该值的来源。也许它是由 Yubikey 的底层 HID 驱动程序定义的,但不清楚对应的驱动程序是什么。狩猎仍在继续……

0 投票
0 回答
38 浏览

yubico - Yubikey AAGUID 元数据的来源?

我正在为 Yubikey AAGUID 值寻找可靠的机器可读源。我看到的最有可能的来源是Yubikey Attestation Metadata,但这似乎很不完整。Yubikey Hardware FIDO2 AAGUIDs上提供了更全面的表格列表,但它嵌入在博客文章中,因此 (a) 它必须被删除,并且 (b) 不太可能随着时间的推移保持最新。是否有可靠的 URI 可用于下载始终是最新/完整的元数据?

谢谢!

0 投票
1 回答
81 浏览

javascript - Webauthn API 是否允许客户端检测/识别令牌?

正如您可能从之前的问题中注意到的那样,我正在构建一个网站,该网站将支持使用 Yubikeys 通过 Webauthn 进行身份验证(以后可能会使用其他令牌)。作为该过程的一部分,我希望能够(1)检测身份验证令牌是否已经存在,因此如果没有,我可以提示用户插入一个,以及(2)确定插入的令牌类型,因此我可以包含令牌的图像以及有关如何使用它的有用动画/说明,以便他们通过(使用 Yubikeys)按下触摸板或其他联系人来验证其存在。

顺便说一句,我在 navigator.credential API 中看不到任何似乎表明这是可能的东西,如果允许客户端代码探测设备,也许它会违反各种 Javascript 安全限制,但我只是想知道是否有人有任何关于如何做到这一点的提示?

谢谢!

0 投票
2 回答
923 浏览

android - 我可以将手机用作带有 Windows 10 登录选项的 webauthn 安全密钥吗

编辑: -

看看是我还是W3C 规范没有说这应该已经发生了:-

1.2.2。验证

在笔记本电脑或台式机上:

用户通过蓝牙将手机与笔记本电脑或台式机配对。

用户在浏览器中导航到 example.com 并开始登录。

用户从浏览器收到一条消息,“请在您的手机上完成此操作。”

接下来,在他们的手机上:

用户会看到离散提示或通知“登录 example.com”。

用户选择此提示/通知。

向用户显示他们的 example.com 身份的列表,例如,“以 Mohamed 身份登录/以张三身份登录”。

用户选择一个身份,提示输入授权手势(PIN、生物识别等)并提供。

现在,回到笔记本电脑上:

网页显示所选用户已登录,并导航到登录页面。

================

我的 WebAuthn 代码愉快地与 Windows Hello 交互,以通过 PIN 进行用户验证。我的三星 Android 手机愉快地与https://webauthn.appspot.com演示交互并接受指纹验证。

但我似乎无法将我的手机用作连接到我计算机上的 YubiKey 之类的安全密钥?

我可以通过蓝牙将它与 PC 配对或用 USB 电缆连接它,但 Windows 不会将它识别为安全密钥。

这是可能的,还是功能受到限制?如果我们可以使用我们的手机作为安全密钥,我们就不需要特殊的加密狗来进行平台无关的身份验证。