#fido2 #u2f #platform #applications #key #virtual #webauthn

solo-virtual-key

Rust封装了SoloKeys' solo1项目的虚拟U2F键,用于测试U2F应用

1个不稳定发布版

0.1.0 2023年2月11日

#742 in 身份验证

Apache-2.0 OR MIT

3.5MB
77K SLoC

Bitbake 37K SLoC // 0.0% comments C 31K SLoC // 0.2% comments C++ 3.5K SLoC // 0.1% comments GNU Style Assembly 2.5K SLoC // 0.1% comments Python 2K SLoC // 0.2% comments Perl 156 SLoC // 0.2% comments Shell 120 SLoC // 0.2% comments Prolog 76 SLoC Rust 72 SLoC Arduino C++ 67 SLoC // 0.1% comments Forge Config 12 SLoC

xdg-credentials-portal

这是一个独立的服务,旨在在Linux上通过D-Bus Portal接口提供FIDO2平台功能(FIDO U2F和WebAuthn)。

项目由多个crate组成

  • libwebauthn:FIDO2和FIDO U2F平台API的Linux本地实现。
    • 完全用Rust编写。
    • 不再依赖于Mozilla的authenticator-rs
    • 支持多种传输方式(目前USB HID和BLE)。该库旨在具有可插拔的传输实现,使其易于添加传输后端(计划:NFC,caBLEv2)。
  • xdg-credentials-portal:通过D-Bus接口公开FIDO2和FIDO U2F平台API的服务API提案和参考实现,供桌面应用程序使用 - 包括容器化应用程序,如Flatpaks。

libwebauthn

平台功能

  • FIDO U2F
    • 🟢 注册(U2F_REGISTER)
    • 🟢 验证(U2F_AUTHENTICATE)
    • 🟢 版本(U2F_VERSION)
  • FIDO2
    • 🟢 创建凭证
    • 🟢 验证断言
    • 🟢 生物识别用户验证
    • 🟢 可发现凭证(驻留密钥)
  • FIDO2到FIDO U2F降级
    • 🟢 基本功能
    • 🟢 支持excludeList和预飞行请求
  • PIN/UV协议
    • 🟢 PIN/UV Auth协议一
    • 🟢 PIN/UV Auth协议二
  • PIN/UV操作
    • 🟢 获取PinToken
    • 🟢 使用Pin权限获取PinUvAuthToken
    • 🟢 使用Uv权限获取PinUvAuthToken
  • Passkey身份验证
    • 🟢 可发现凭证(驻留密钥)
    • 🔴 云辅助BLE(caBLE)传输(#31 受阻:规范尚未发布)

传输

USB(HID) 低功耗蓝牙(BLE) NFC TPM 2.0(平台)
FIDO U2F 🟢 支持(通过hidapi) 🟢 支持(通过bluez) 🟠 计划(#5 🟠 计划中 (#4)
WebAuthn (FIDO2) 🟢 支持(通过hidapi) 🟢 支持(通过bluez) 🟠 计划(#5 🟠 计划中 (#4)

xdg-credential-platform

这是一个非常早期的想法,目前还没有提出任何规范。

以下是拟议服务的总体架构图以及它如何与其客户端交互

High-Level Architecture

脚注

  • *:应考虑更好的UI替代方案,例如通过xdg-credentials-portal-{gnome, kde}的本地UI实现。
  • Δ:参见下文路线图部分

动机

其他平台

以下是在其他平台上提供的相关API列表,它们提供类似的功能

其他参考资料

贡献

如果您想贡献,但不知道从哪里开始,请查看问题选项卡中可用的任务。

或者,对以下方面的调查或专业知识将非常有帮助。请与我联系!

  • 平台认证器支持。类似于Android设备和Windows Hello。为了实现这一点(并请求FIDO2认证),需要以下支持

    • 可信平台模块(TPM)
    • 用户验证设备(例如指纹读取器)
  • 非特权访问。FIDO2凭证的范围限定在(例如https://example.org)。拟议的API允许应用程序指定任何源(如浏览器所需)。因此,出于安全目的,需要额外的用户确认步骤。如果请求发送者可以验证,则可能不需要此额外步骤,因为它可以作为指定源的合法所有者

  • 身份验证管理系统(PAM)和无密码登录(长期目标)。PAM模块将允许使用FIDO2进行用户登录,例如使用平台认证器(类似于Windows Hello)。

  • D-Bus网关API设计

  • 提案和贡献流程(Flatpak、GNOME等)

  • 用户界面/用户体验

依赖项

~5–18MB
~181K SLoC