问题标签 [fido-u2f]

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 投票
0 回答
635 浏览

javascript - 我如何使用 yubico(公钥和私钥)加密和解密文件

我尝试使用 yubico 公钥加密文件并使用 yubico 私钥解密。但我无法从 yubico 生成私钥和公钥。我已经用 yubico 开发了一些 fido2 的例子。但它不能正常工作。

0 投票
1 回答
351 浏览

javascript - 无法使用 javascript 和 python API 注册 U2F 密钥

我正在尝试在我的 django 应用程序中实现 U2F 身份验证设备。现在的主要问题是,我所有的前端注册调用都失败了。

我正在使用u2f-api.js脚本和python-u2flib-serverpython 脚本来实现这一点。

我遵循这种模式:

1) 使用 u2flib 生成密钥/挑战

2)从浏览器注册密钥

这始终返回{errorCode: 2}响应,这本质上意味着错误的请求。但是,我无法确定此请求的哪一部分无效。

runserver_plus --cert certname用来运行我的本地网络服务器,因此该站点通过 HTTPS 提供服务。我还尝试使用 NGROK 通过 HTTPS 访问我的网站并尝试使用相同的代码。我一直得到同样的回应。

我将不胜感激任何关于我的实现的帮助、指针或指导,因为我已经苦苦挣扎了几天,并且围绕 U2F 库和实现的现有文档非常薄。

- 更新 -

我实际上在这里取得了一些进展。我能够收到生成密钥响应。但是,我仍然无法在 python 库中注册这个密钥。

我最终在服务器端有这样的东西:

但是,这会导致以下错误:

我又卡住了!在将它们传递给无济于事之前,我尝试从值中创建一个 json 转储 -u2f.register我得到了完全相同的错误。

0 投票
1 回答
69 浏览

bluetooth - 为什么 Fido 在网络蓝牙中被阻止而不是 USB

由于系统范围的配对导致 FIDO 在网络蓝牙中被阻止会带来安全风险[来源],我可以理解但不完全确定为什么要扩展来阻止它。一个好的 ble 令牌设计可以克服这个问题(令牌上的按钮......等)。

但是当涉及到usb令牌时,为什么不将其视为相同级别的风险[来源]并阻止访问,usb系统范围的配对也不是吗?

0 投票
1 回答
901 浏览

android - 如何让 WebAuthn 与漫游验证器一起工作?

W3C 最近批准了Web Authentication:一种用于访问 Public Key Credentials 的 API,通常称为WebAuthn

在第 6.2.1 节中,建议指出,“例如,集成到移动设备中的平台身份验证器可以通过蓝牙将其自身用作漫游身份验证器。在这种情况下,客户端将仅将其识别为漫游身份验证器,而不是作为平台验证器。”

是否有任何代码示例可用于在移动设备上创建 WebAuthn 漫游身份验证器并通过低功耗蓝牙使其可用?

这篇文章《终极帐户安全现在就在您的口袋里》承诺,您的 Android 手机可以用作漫游验证器来登录您的 Google 帐户(只是您的 Google 帐户;一个适度但良好的开始)。

我能够将我的新 Pixel 3A 手机作为安全密钥关联到我的 Google 帐户:

两步验证

当我进行身份验证时,我会在 Chrome 浏览器的 Web 身份验证页面上看到以下屏幕:

检查你的手机

但是,我的手机没有任何反应。该过程只是超时。

有没有人让这个基本的例子工作?

是的,我的工作站(运行最新版本的 Windows 10)和我的 Pixel 3A(运行 Android Pie)都打开了蓝牙;我可以配对设备。

0 投票
2 回答
2282 浏览

android - Android WebView 支持 WebAuthn?

我不是 android 开发人员,并且坚持使用 android 的东西。我希望这里有人可以帮助我。

我正在我的网站上实现 WebAuthn/FIDO2,它与浏览器完美配合。但是当我在我的 android 应用程序(android.webkit.webview)中打开我的网站时,它给了我错误

我在我的网站中使用的代码示例类似于:

在我的应用程序中打开https://webauthn.io/显示“当前不支持此浏览器”

我们不能以某种方式更新 webView 吗?

我正在使用 sdk 版本(API 26,Android 8.0 oreo)

有什么解决方法吗?

提前致谢!

0 投票
1 回答
205 浏览

fido-u2f - WebAuthn / FIDO2 证明对象和客户端数据 JSON 示例

我目前正在为 WebAuthn / FIDO2 注册和身份验证构建服务器库。我发现可以发送什么样的证明对象有很多排列。我想确保我为库编写的测试将至少涵盖最常见的证明格式及其签名密钥和散列算法的组合。

为了让我这样做,是否有任何预先存在的示例可以用作参考?

0 投票
0 回答
336 浏览

android - 发送 MAKE_CREDENTIAL(0x01) 响应时出现超时问题

我正在开发 Android Authenticator。发送 MAKE_CREDENTIAL 响应时出现以下异常。我在使用 webauthn.io 站点进行调试时遇到了这个问题。还尝试使用https://webauthn.me/debugger#

操作超时或不允许。请参阅:https ://w3c.github.io/webauthn/#sec-assertion-privacy 。

但是我正在使用Timer并在收到MAKE_CREDENTIAL请求后每 500 毫秒TimerTask发送一次 kKeepAliveMillis。我不知道为什么我会遇到这个问题。请帮我解决这个问题。

0 投票
2 回答
1482 浏览

authentication - 使用 CTAP2 规范的移动验证器

我正在寻找使用 CTAP2 规范将智能手机设置为身份验证器的用例/场景。

我正在寻找用户设置浏览器以与他们的智能手机交互的用例,就像使用 Yubikey 或其他类似的安全密钥时一样。我已经阅读了与它相关的所有文档,但不幸的是,我总是得到一篇使用 Yubikeys / 其他 USB 设备作为身份验证器的文章。我期待一些手机作为漫游身份验证器的交互。

通过从概念上查看文档和 CTAP 规范,我知道这可以通过在电话和主机之间建立一些连接来完成:

  • 蓝牙
  • NFC
  • USB

建立连接后,移动验证器可以执行 CTAP2 协议,以便浏览器将其视为漫游验证器。我也期待看到使用一些支持 BLE 的设备的身份验证过程。我已经尝试在网站上使用 yubikey 安全密钥登录。但我想使用蓝牙启用 Thetis BLE 密钥或手机本身来实现相同的流程登录机制。

任何见解都会非常有帮助。我也期待着研究这个特定用例的人们进行相互讨论。

0 投票
1 回答
212 浏览

javascript - U2F - 类型错误 | 无法注册密钥

我最近开始研究 Node.js 和 Javascript 中的 U2F。我得到错误:TypeError: Cannot read property 'registerResponse' of undefined

在服务器上收到错误之前,我得到以下返回:

服务器在 Mac os 的 localhost 上使用 HTTPS 和自签名证书

可能是什么问题?响应似乎是空的;而且我没有被要求在浏览器中插入 USB。

应用程序.js:

路由.js

索引.html

请求似乎超时或不允许。我试过寻找解决方案等等;但几乎没有关于这个问题的信息。

任何帮助深表感谢!

0 投票
1 回答
1012 浏览

android - Android 上的 Chrome 是否支持使用 Webauthn / FIDO2 对安全密钥进行用户验证?

我正在构建一个使用Webauthn进行无密码登录的网站。目前,这在适用于 Windows 和 macOS 的 Chrome 上运行良好。

我正在使用 YubiKey 5 来测试我的实现,它支持使用 PIN 来提供用户验证,而不仅仅是普通的用户存在(即用户触摸键的按钮)。

Windows PIN 提示符

但是,当我尝试在 Android 9 上的 Chrome 76 上使用同一站点时,系统不会提示我输入密码,因此未设置用户验证标志,并且我的登录(按设计)失败。

谷歌在 Android 7+ 兼容 FIDO2 方面做了很多工作,但除了一篇过时的文章提到:

我们还在研究 CTAP 2 和 WebAuthn 支持的更高级流程,例如 PIN 保护的身份验证器、本地帐户选择(而不是输入用户名或密码)和指纹注册。

现在支持指纹注册;即使 Windows 和 macOS 版本的 Chrome 76 支持PIN 保护的身份验证器,是否仍然不受支持?

这是我呼吁的相关部分navigator.credentials.create(),应该要求用户验证: