Skip to content

Commit 491543c

Browse files
linux-credentials: Update README.md and remove illustrations (Ref #53)
1 parent 83ad1d6 commit 491543c

File tree

7 files changed

+17
-501
lines changed

7 files changed

+17
-501
lines changed

README.md

Lines changed: 17 additions & 96 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,18 @@
1-
# xdg-credentials-portal
1+
# libwebauthn
22

3-
![](https://media.giphy.com/media/Jo6ye8NvYF2Z2Odb5b/giphy.gif)
3+
A Linux-native implementation of FIDO2 and FIDO U2F Platform API, fully written in Rust.
44

5-
This is a standalone service which aims to offer FIDO2 platform functionality (FIDO U2F, and WebAuthn) on Linux, over a [D-Bus Portal interface][xdg-portal].
5+
This library supports multiple transports (see [Transports][#transports] for a list) via a pluggable interface, making it easy to add additional backends.
66

7-
The project is composed of multiple crates:
7+
## The Linux Credentials Project
88

9-
- **libwebauthn**: Linux native implementation of FIDO2 and FIDO U2F Platform APIs.
10-
- Fully written in Rust.
11-
- No longer relies on Mozilla's [authenticator-rs][authenticator-rs].
12-
- Supporting multiple transports (currently USB HID, BLE, and Hybrid Transport). The library is designed to have pluggable transport implementations, making it easy to add transport backends (planned: NFC, caBLEv2).
13-
- **xdg-credentials-portal**: API proposal and reference implementation for a service which will expose FIDO2 and FIDO U2F Platform APIs via a D-Bus interface, for desktop applications to use - including conteinerized apps such as Flatpaks.
14-
- Similarly to [xdg-desktop-portal][xdg-desktop-portal] and [xdg-documents-portal][xdg-documents-portal], the service is intended to be accessed over a proposed D-Bus _portal_: [org.freedesktop.portal.Credentials][xml-spec].
9+
This project is now part of [The Linux Credentials Project](linux-credentials), and was previously known as **xdg-credentials-portal**.
1510

16-
## libwebauthn
11+
[The Linux Credentials Project](linux-credentials) aims to offer FIDO2 platform functionality (FIDO U2F, and WebAuthn) on Linux, over a [D-Bus Portal interface][xdg-portal].
1712

18-
### Platform functionality
13+
_Looking for the D-Bus API proposal?_ Check out [platform-api][linux-credentials].
14+
15+
## Features
1916

2017
- FIDO U2F
2118
- 🟢 Registration (U2F_REGISTER)
@@ -39,98 +36,22 @@ The project is composed of multiple crates:
3936
- [Passkey Authentication][passkeys]
4037
- 🟢 Discoverable credentials (resident keys)
4138
- 🟢 Hybrid transport (caBLE v2): QR-initiated transactions ([#52][#52]: iOS only)
42-
- 🟠 Hybrid transport (caBLE v2): State-assisted transactions transactions ([#31][#31]: planned)
43-
39+
- 🟠 Hybrid transport (caBLE v2): State-assisted transactions ([#31][#31]: planned)
4440

41+
## Transports
4542

46-
### Transports
47-
48-
| | USB (HID) | Bluetooth Low Energy (BLE) | NFC | TPM 2.0 (Platform) | Hybrid (caBLEv2) |
49-
| -------------------- | ------------------------- | --------------------------- | --------------------- | --------------------- | ----------------------|
50-
| **FIDO U2F** | 🟢 Supported (via hidapi) | 🟢 Supported (via bluez) | 🟠 Planned ([#5](#5)) | 🟠 Planned ([#4][#4]) | N/A |
43+
| | USB (HID) | Bluetooth Low Energy (BLE) | NFC | TPM 2.0 (Platform) | Hybrid (caBLEv2) |
44+
| -------------------- | ------------------------- | -------------------------- | --------------------- | --------------------- | ---------------------------------- |
45+
| **FIDO U2F** | 🟢 Supported (via hidapi) | 🟢 Supported (via bluez) | 🟠 Planned ([#5](#5)) | 🟠 Planned ([#4][#4]) | N/A |
5146
| **WebAuthn (FIDO2)** | 🟢 Supported (via hidapi) | 🟢 Supported (via bluez) | 🟠 Planned ([#5](#5)) | 🟠 Planned ([#4][#4]) | 🟠 Partly implemented ([#31][#31]) |
5247

53-
54-
## xdg-credential-platform
55-
56-
This is a very early stage idea, no proposed spec exists yet.
57-
58-
Here is an high-level architecture diagram of the proposed service and how it will interact with its clients:
59-
60-
![High-Level Architecture](./images/diagram-1.svg)
61-
62-
Footnotes:
63-
64-
- **\***: Better alternatives for UI should be considered, e.g. native UI implementations via xdg-credentials-portal-{gnome, kde}.
65-
- **Δ**: See Roadmap section below
66-
67-
### Motivation
68-
69-
- **Sandboxed Browsers**. A modern solutions is required to allow sandboxed applications (Flatpaks, Snaps) to access U2F and FIDO2 devices, without granting blanket access to all devices.
70-
71-
- Firefox has now officially been [released on Flathub][firefox-flathub], but is unable to access U2F devices. See [flatpak issue #2764][flatpak-issue]
72-
73-
- **Passwordless Authentication**. FIDO2/WebAuthn brings the promise of a world without passwords, and related security incidents, which is worth pursuing. A platform API would make it easier for applications to support stronger authentication.
74-
75-
- **Platform Authenticators** are an important part of the FIDO2 specification, and fundamental for widespread adoption of passwordless authentication. Windows Hello, [Android's FIDO2 support][fido-android], Apple's TouchID and FaceID, are all examples of platform authenticators. There is no reason why the Linux desktop community could not enjoy similar benefits
76-
77-
- [Passwordless Web Authentication Support via Windows Hello - Mozilla Security Blog][firefox-hello]
78-
- [Your Google Android 7+ Phone Is Now a FIDO2 Security Key - Fido Alliance][fido-android]
79-
80-
- **Native Apps FIDO2 Support**. FIDO2 should not be segregated to web applications.
81-
- [FIDO2 API for Android][fido-android-api] (native apps)
82-
83-
### Other platforms
84-
85-
Here is a list of related APIs available on other platforms, which offer similar functionality:
86-
87-
- **Android SDK**: [Fido2ApiClient][android-fido-unprivileged]
88-
- **Windows Hello**: [FIDO2 Win32 APIs][windows-hello-api]
89-
- **macOS, iOS**: WebAuthn via [ASWebAuthenticationSession][apple-apis]
90-
91-
Further references:
92-
93-
- [D-Bus API Design Guidelines][dbus-api-guidelines]
94-
- Relevant FIDO2 specifications:
95-
- **[CTAP 2.0 Proposed Standard][ctap2]**
96-
- [Section 7: Interoperating with CTAP1/U2F authenticators][ctap2-interop]
97-
- [CTAP 2.1 Review Draft][ctap21]
98-
- [W3C - Web Authentication API][webauthn]
99-
10048
## Contributing
10149

102-
If you'd like to contribute but you don't know where to start, take a look at available tasks in the _Issues_ tab.
103-
104-
Alternatively, any investigation or expertise on the following would be very helpful. Please reach out!
105-
106-
- **Platform Authenticator support**. Similarly to Android devices, and Windows Hello. In order to implement this (and request FIDO2 certification), support for the following is needed:
107-
108-
- Trusted Platform Modules (TPMs)
109-
- User-verification devices (e.g. fingerprint readers)
110-
111-
- **Unprivileged access**. FIDO2 credentials are scoped to an _origin_ (e.g. `https://example.org`). The proposed API allows applications to specify any origin (as needed by browsers). Hence, it requires an additional user confirmation step for security purposes. This extra step may not be needed if the request sender could be verified, as the legitimate _owner_ of the specified origin.
112-
113-
- As an example, Android has implemented two APIs: [Fido2ApiClient][android-fido-unprivileged] (unprivileged), and [Fido2PrivilegedApiClient][android-fido-privileged] (privileged) for use by web browsers. The main difference between the two is that the privileged API allows specifying an arbitrary _origin_, whilst the unprivileged API requires [linking your app to your origin][android-fido-unprivileged-cert].
114-
115-
- **PAM, and passwordless login** (long-term goal). A PAM module would allow using FIDO2 for user login purposes, e.g. using the platform authenticator (similar to Windows Hello).
116-
117-
- **D-Bus Portal API design**
118-
119-
- **Proposal and contribution processes (Flatpak, GNOME, etc.)**
50+
Contributions are very welcome!
12051

121-
- **UI/UX**
52+
If you'd like to contribute but you don't know where to start, check out the _Issues_ tab of [each repository][#repositories].
12253

123-
[xdg-portal]: https://flatpak.github.io/xdg-desktop-portal/portal-docs.html
124-
[xdg-desktop-portal]: https://github.com/flatpak/xdg-desktop-portal
125-
[xdg-documents-portal]: https://github.com/flatpak/xdg-desktop-portal/tree/master/document-portal
126-
[xml-spec]: ./data/org.freedesktop.portal.FIDO2.xml
127-
[authenticator-rs]: https://github.com/mozilla/authenticator-rs
128-
[authenticator-rs-ctap2]: https://github.com/mozilla/authenticator-rs/tree/ctap2
129-
[windows-hello-api]: https://github.com/Microsoft/webauthn
130-
[dbus-api-guidelines]: https://dbus.freedesktop.org/doc/dbus-api-design.html
131-
[ctap2]: https://fidoalliance.org/specs/fido-v2.0-ps-20190130/fido-client-to-authenticator-protocol-v2.0-ps-20190130.html
132-
[ctap2-interop]: https://fidoalliance.org/specs/fido-v2.0-ps-20190130/fido-client-to-authenticator-protocol-v2.0-ps-20190130.html#u2f-interoperability
133-
[ctap21]: https://fidoalliance.org/specs/fido2/fido-client-to-authenticator-protocol-v2.1-rd-20191217.html
54+
[linux-credentials]: https://github.com/linux-credentials
13455
[webauthn]: https://www.w3.org/TR/webauthn/
13556
[firefox-hello]: https://blog.mozilla.org/security/2019/03/19/passwordless-web-authentication-support-via-windows-hello/
13657
[flatpak-issue]: https://github.com/flatpak/flatpak/issues/2764

data/org.freedesktop.portal.Notification.xml

Lines changed: 0 additions & 158 deletions
This file was deleted.

data/org.freedesktop.portal.Request.xml

Lines changed: 0 additions & 72 deletions
This file was deleted.

0 commit comments

Comments
 (0)