问题标签 [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 回答
214 浏览

delphi - 使用来自 Yubico 的 fido2.dll 进行 Webauthn 凭证验证

我开始在 Delphi 中对 yubicos fido2.dll 进行接口,并且能够根据提供的示例对其进行接口。现在我想更进一步,在例如 apache 服务器上使用 dll 来处理凭证创建和断言。

所以..为此,我基本上使用在测试站点https://webauthn.io/上找到的 javascripts

基本上我想模仿一些服务器功能来创建凭证。在网站上可以设置一些属性 - 在我的环境中,它们来自服务器。

目前,我已经与客户端进行了通信以发出凭据初始化 - 服务器响应挑战。查询密钥,浏览器创建凭据并将其发送回服务器。这虽然我对来自服务器的数据有问题,也就是我在解码 attestationObject 部分时遇到问题。

所以这是来自我的服务器的凭证初始化 json:

来自服务器的结果:

这是一个应该验证凭据的控制台程序:(请注意,您需要将上述内容粘贴到文本文件中并将其加载到控制台中)。

cbor和fido2项目可以在 github 上找到

我实际上对返回的 CBOR 编码的 attestationObject 有问题。如果设置了常驻密钥属性,则证明对象只有 63 个字节长 - 并且还有一些字节实际上没有被编码。所以......那里的 cbor 解码要么失败,要么我得到的数据不符合 webauthn 证明对象,该对象应该在这些位置返回凭证 id 和公钥(然后也是 cbor 编码的)。如果驻留密钥属性为假,如上述语句中的情况,则 fido dll 返回错误的身份验证数据。所以......有人知道我做错了什么吗?

它基本上应该如图所示,但它要么在凭证 ID 中间的 63 个字节之后结束,要么在 dll 中失败。

0 投票
0 回答
202 浏览

authentication - Yubico / Attestation 和 Assertion 之间的凭证 ID 长度不匹配

我正在使用 AAGUID 为 ff8a011f3-8c0a-4d15-8006-17111f9edc7d(Yubico v5.1 的安全密钥)的 Yubico 安全密钥为我的 Web 应用程序执行无密码身份验证。当我创建/注册新凭据时,我在创建凭据选项的authenticatorSelection部分中使用属性“ requireResidentKey = true ” :

返回的Attestation 数据包含 16 个字节的凭证 id:

所以例如我会收到一个 16 字节的 base64url id,看起来像:AUpf0KmNJrRluGG-65D54Q

然后我使用这个 16 字节的 id 作为密钥来保存生成的凭证。当我使用 Yubico 密钥登录时,返回的断言数据包含相同的 16 字节凭据 ID:

然后我可以使用这个凭证 ID 来检索我存储的凭证数据并验证断言。所以到目前为止一切都很好......

然后我正在阅读 W3C Editor's Draft on Web Authentication: An API for access Public Key Credentials Level 2并注意到“ requireResidentKey ”已被弃用,取而代之的是采用枚举值的“ residentKey ”属性:

requireResidentKey,布尔类型,默认为 false 注意:保留此成员是为了向后兼容 WebAuthn 级别 1,但不推荐使用 residentKey。如果调用者提供了 residentKey 并且客户端理解了后者,则忽略 requireResidentKey。否则,使用 requireResidentKey 的值。请注意,requireResidentKey 的值默认为 false。

如果在没有 residentKey 的情况下使用,它描述了依赖方对居民凭证的要求。如果 requireResidentKey 设置为 true,则验证者在创建公钥凭证时必须创建客户端驻留的公钥凭证源。

residentKey,类型为 ResidentKeyRequirement 注意:此成员取代 requireResidentKey。如果两者都存在并且客户端理解 residentKey,则使用 residentKey 而忽略 requireResidentKey。

有关 residentKey 的值和语义的描述,请参见 ResidentKeyRequirement。

所以我将requireResidentKey更改为residentKey,其枚举值为“ required ”,如图所示:

现在,当我创建一个新凭证时,我会返回一个64 字节的凭证 ID。这本来很好,只是当我使用 Yubico 安全密钥登录时,我得到一个16 字节的凭据 ID,它显然与我在创建凭据阶段保存的 64 字节不匹配。

有趣的是,当我尝试同时使用requireResidentKey = trueresidentKey = 'required'时,我得到了为 Attestation 和 Assertion 返回的 16 字节凭据 ID。

这可能是不支持新的residentKey属性吗?如果是这样,为什么我会得到一个 64 字节的凭证 ID?这可能是非居民凭证 ID 的长度吗?

我的代码正在使用旧的requireResidentKey属性恢复工作,但我很想知道这里发生了什么,以及新的 Yubikeys 是否支持residentKey属性?

0 投票
1 回答
94 浏览

hsm - 在 YubiHSM 2 上为 Ed25519 密钥对生成认证证书

YubiHSM 2 的证明机制是否支持 Ed25519 密钥对的证明?

以下yubihsm-shell会话失败:

带有以下消息:

同时,RSA 和 NIST-B EC 密钥对(即,ecp256、ecp384)的证明按预期工作。YubiHSM 文档没有提到这个缺陷。

0 投票
1 回答
285 浏览

yubico - yubikey 5 NFC 触摸输入 6 位代码

我将我的 yubikey 5 NFC 与 U2F 以及 OTP 代码一起使用。我使用 Yubico Authenticator 应用程序获取 OTP 代码,这似乎有点太复杂了,我想知道是否有办法将它分配给我的钥匙上的短/长触摸,所以我不需要每次都打开那个应用程序来获取代码我经常用吗?

似乎身份验证器使用插槽以外的其他东西来存储凭据,是否可以使用ykman或其他一些官方命令行实用程序/sdk 来读取它们?

0 投票
0 回答
30 浏览

blockchain - 如何在 iOS 设备上使用 yubikey 5ci 生成和访问非对称密钥?

我们的团队正在探索 Yubico Mobile iOS SDK:https ://github.com/Yubico/yubikit-ios

但是我们发现这里不可能实现我们的目标之一:

我们需要使用 Yubikey 5ci 生成一个不对称并存储在上面。而且我们还需要它可以在生成后被引用。我们不需要私钥,我们只需要引用这个密钥来生成签名供以后使用。

有没有办法做到这一点?

谢谢。

0 投票
1 回答
230 浏览

yubico - 两个 PIV 证书 - 一个 YubiKey 5

我正在尝试导入两个 PIV 证书以在一个 Yubico Key 5(插槽 9a)上使用。一个证书用于常规使用,另一个证书用于提升权限。对于我的生活,我无法弄清楚!

我尝试使用 GUI YubiKey Manager > PIV > 配置证书 > 导入

所有这一切都是用正在导入密钥的证书覆盖现有证书

我已经尝试找出与以下 pdf 一起使用的命令行:https ://www.yubico.com/wp-content/uploads/2016/05/Yubico_PIV_Tool_Command_Line_Guide_en.pdf

在这一点上,我只是把我的头骨撞在墙上,不知道如何解决这个问题。有没有人对此有任何想法或见解?

0 投票
2 回答
302 浏览

c# - 需要 UWP 应用程序 PIV 示例

我们正在使用 Visual Studio 2019 开发 C# UWP 应用程序。我已成功设置监控正在从 USB 端口插入/移除的 YubiKey FIPS(4.4.5 固件)。我们将 YubiKey 设置为使用 PIV,并将证书加载到插槽 9c(使用 YubiKey PIV 管理器,我没有安装迷你驱动程序)。我确实注意到,当 YubiKey 插入 USB 时,它会使用插槽 9c 中的证书自动加载我的个人证书存储。我们收到来自服务器的质询,我需要使用它来验证 YubiKey。从插槽 9c 获取证书的下一步是什么(如果该密钥上有多个证书怎么办)?Yubico 没有显示如何将密钥与应用程序集成的示例(我不相信 Windows Hello 在这里适用,不是吗?)。我们正在尝试使用 Windows.Devices。智能卡命名空间。这个命名空间似乎没有槽的概念。这是正确的方向还是我们需要使用 Yubico 库(迷你驱动程序)我不知道。文档是有限的。

0 投票
1 回答
133 浏览

yubico - Yubikey Openssh 签名证书集成

实际上,我使用我的 YUBIKEY 通过 PKCS11 PIV 工具进行 ssh 身份验证。

我按照以下步骤操作: https ://developers.yubico.com/PIV/Guides/SSH_user_certificates.html

在本开发人员指南的末尾有这一行:

id_rsa-cert.pub如果我尝试对我的一个 openssh 服务器进行身份验证,则会生成并且一切正常。

但我想将这个 id_rsa-cert.pub (我的 CA 的公共 id 签名)存储在我的 yubikey 中......

我不知道该怎么做...

任何想法 ?

(我的 CA 在我的服务器上,我的客户端上有一个副本仅用于 POC)


更新:16/11/2021

这是因为 yubikey 使用 x509 证书和 ssh RSA 证书......只是不兼容......

0 投票
2 回答
607 浏览

android - FIDO 是否必须托管assetlinks.json 文件?

我有一个关于 FIDO2 的问题。

小背景: 我的公司决定使用 FIDO2 进行用户帐户管理。所以我们创建了一个主要使用 yubico webauthn 库的 FIDO 服务器包装器。在 Android 端,我们使用 Fido2ApiClient 谷歌播放服务原生库来支持 FIDO

根据 Fido 文档, https://developers.google.com/identity/fido/android/native-apps#interoperability_with_your_website 允许用户在您的网站和 Android 应用程序之间无缝共享凭据很简单。但是,我们没有使用任何网站,仅在 API 端点(AWS-ALB)中使用 FIDO 服务器

在没有托管assetlinks.json 文件的情况下,Android FIDO Authenticator 始终返回以下错误消息。

FIDO 是否必须托管assetlinks.json 文件?有没有人在不托管此文件的情况下取得成功?

0 投票
1 回答
691 浏览

firefox-addon - 为什么 navigator.credentials.get 函数在 firefox 插件中不起作用

在 Firefox 插件中从后台调用函数navigator.credentials.get({ publicKey })The request is not allowed by the user agent or the platform in the current context, possibly because the user denied permission.会引发以下错误。

我找不到有关该问题的任何信息。有没有办法在 Firefox 插件脚本中使用 WebAuthn 函数?在 Chrome 扩展程序中,它可以正常工作。