USB 経由で FIDO デバイスと通信し、アテステーションとアサーションの署名を検証するためのライブラリ機能を提供します。
このライブラリは、クライアント対オーセンティケータ プロトコル (CTAP 1 および 2) を介して USB オーセンティケータと通信するための FIDO U2F および FIDO 2 プロトコルをサポートすることを目的としています。この低レベルのデバイス アクセスに加えて、 fido2.client
モジュールとfido2.server
モジュールで定義されたクラスは、オーセンティケータとインターフェイスするとき、または証明書利用者に対する WebAuthn サポートを実装するときに役立つ高レベルの操作を実装します。
使用方法については、 examples/
ディレクトリを参照してください。
WebAuthn と FIDO2 に関連する次のリンクは、開始に役立ちます。
Yubico WebAuthn/FIDO2 ガイド: https://developers.yubico.com/FIDO2/
W3C WebAuthn 仕様: https://www.w3.org/TR/webauthn/
FIDO 仕様: https://fidoalliance.org/specations/download/
このプロジェクトは、以下に示すファイルを除き、BSD 2 条項ライセンスに基づいてライセンスされています。ライセンスの全文については、 COPYINGファイルを参照してください。
このプロジェクトには、Apache License バージョン 2.0 に基づいてライセンスされている pyu2f (https://github.com/google/pyu2f) のソース コードが含まれています。これらのファイルはfido2/hid/
にあります。ライセンスの全文については、http://www.apache.org/licenses/LICENSE-2.0 またはCOPYING.APLv2ファイルを参照してください。
このプロジェクトには、Mozilla Public License バージョン 2.0 に基づいてライセンスされているパブリック サフィックス リスト (https://publicsuffix.org) もバンドルされています。このファイルはfido2/public_suffix_list.dat
として保存されます。ライセンスの全文については、https://mozilla.org/MPL/2.0/、またはCOPYING.MPLv2ファイルを参照してください。
fido2 は Python 3.7 以降と互換性があり、Windows、MacOS、Linux でテストされています。 OpenBSD、FreeBSD、および NetBSD のサポートは現状のまま提供され、コミュニティの貢献に依存しています。
fido2 は、次のコマンドを実行してインストールできます。
pip インストール fido2
NFC 認証システムとの通信に必要な依存関係をインストールするには、代わりに以下を使用します。
pip インストール fido2[pcsc]
Windows 10 (1903 以降) では、FIDO デバイスへのアクセスは制限されており、管理者として実行する必要があります。このライブラリは、非管理者として実行している場合でも、 fido.client.WindowsClient
クラスを介して使用できます。この例は、ファイルexamples/credential.py
に含まれています。
Linux では、FIDO デバイスにアクセスできるようにするか、root として実行できるように Udev ルールを追加する必要があります。たとえば、Udev ルールには次のものが含まれる場合があります。
#FIDO サポートのために Yubico デバイスへの HID アクセスを許可するための Udev ルール。 KERNEL=="hidraw*"、SUBSYSTEM=="hidraw"、 MODE="0664"、GROUP="plugdev"、ATTRS{idVendor}=="1050"
これを行うディストリビューション用のパッケージがすでに利用可能である可能性があります。https://support.yubico.com/hc/en-us/articles/360013708900-Using-Your-U2F-YubiKey-with-Linux を参照してください。
FreeBSD では、root として実行するか、デバイスのルールを /etc/devd.conf に追加する必要があります。これは security/u2f-devd をインストールすることで自動化できます。
# pkg インストール u2f-devd
このプロジェクトは暗号化に依存しています。この依存関係をインストールする手順については、https://cryptography.io/en/latest/installation/ を参照してください。
NFC サポートは、pyscard ライブラリを使用して、PC/SC 経由でオプションで利用できます。この依存関係をインストールする手順については、https://github.com/LudovicRousseau/pyscard/blob/master/INSTALL.md を参照してください。
ライブラリの開発には詩を使用します。開発環境をセットアップするには、リポジトリのルート ディレクトリで次のコマンドを実行します。
詩のインストール
また、プリコミットを使用して、コミットする前にコードに対していくつかのスキャンを実行します。
多くのテストは単独で実行できますが、一部のテストは実行するために接続された U2F または FIDO2 デバイスを必要とします。
詩はpytestを実行します