
Windows/Entraとの相互運用性を文書化した、パックされたアテステーションを備える実験的なRP2040 FIDO2/WebAuthn認証器
Karaaslan Labsによる実験的なオープンソースRP2040 FIDO2/WebAuthn認証器のエンジニアリングおよび相互運用性プロジェクト。
ステータス: エンジニアリング/研究プロジェクト。FIDO Alliance認証取得済みではありません。 商用の高保証セキュリティトークンではありません。
KL Security Keyは、polhenarejos/pico-fidoのキュレーションされた派生プロジェクトです。低コストのRP2040ボードを物理的なWebAuthn認証器としてどこまで活用できるかを探求しつつ、アイデンティティ、アテステーション、検証エビデンス、信頼境界を明示的に保つことを目指しています。
| 領域 | 現在のエンジニアリングリファレンス |
|---|---|
| ハードウェア | RP2040 USB開発ボード |
| トランスポート | USB FIDO HID |
| CTAP/GetInfoバージョン | FIDO_2_0、FIDO_2_1、FIDO_2_3 |
| ユーザープレゼンス / 検証 | 物理ボタン + PIN/UVサポート |
| アテステーション | Packed ES256、x5c、デバイス固有証明書 |
| AAGUID | d9359dc7-6938-5822-b951-006507247d8f |
| 相互運用性 | Windows WebAuthn + テナントローカルMicrosoft Entra検証 |
| 配布 | ソースファースト。KLファームウェアバイナリのリリースなし |
| セキュアエレメント | なし |
| 認証 | FIDO Alliance認証取得済みではありません |
このプロジェクトは、実用的な問いから始まりました。安価な開発ボードは、エンジニアリング上の妥協を隠すことなく、実際のWebAuthnサインインに使える物理セキュリティキーになれるのか?
興味深い作業は、単にRP2040でFIDO2を動かすことではありませんでした。より難しい部分は、認証器のアイデンティティ、物理的なユーザープレゼンス、アテステーション、Windowsの挙動、再現可能なソース変更、リライングパーティの相互運用性、そしてエビデンスが何を証明し、何を証明しないかを正確に把握することでした。
MicrosoftCtapHidProvider。U2fProtocol=falseでCTAP2パスを確認。Entraの結果は相互運用性の結果であり、Microsoft認証やグローバルな認証器認識ではありません。正確な境界についてはdocs/interoperability-case-study.mdを参照してください。
flowchart LR
RP["Relying party / Microsoft Entra"] --> WA["Browser + Windows WebAuthn"]
WA --> CTAP["CTAP2 over USB HID"]
CTAP --> KEY["KL Security Key<br/>RP2040"]
KEY --> AT["Packed ES256 attestation<br/>device-specific key + x5c"]
AT --> ROOT["KL Security Key Root CA"]
検証済みランタイムは意図的に狭く設計されています。FIDO HIDがセキュリティキーインターフェースであり、無関係なキーボード/CCIDスタイルのランタイムインターフェースはKLリファレンスプロファイルの一部ではありません。
git clone --recurse-submodules https://github.com/karaaslanlabs/kl-security-key.git
cd kl-security-key
export PICO_SDK_PATH=/path/to/pico-sdk
export PICO_TOOLCHAIN_PATH=/path/to/arm-none-eabi-toolchain
./scripts/build-kl-reference.sh
このビルドでは、物理的なユーザープレゼンスの強制、FIDO専用ランタイムプロファイル、Packedアテステーションパスが有効になります。有効なアテステーションキー/証明書素材は別途プロビジョニングする必要があります。プライベートアテステーションキーはこのリポジトリによって公開または自動プロビジョニングされません。
このリポジトリは以下を主張しません:
リファレンスをエンジニアリング/研究用認証器以上のものとして扱う前に、THREAT-MODEL.mdをお読みください。
| ドキュメント | 目的 |
|---|---|
docs/architecture.md | ランタイムプロファイル、ソースレイアウト、エンジニアリング境界 |
docs/attestation-and-pki.md | AAGUID、Packedアテステーション、PKIモデル |
docs/validation-evidence.md | 物理リファレンスおよびキュレーションされたソースの検証エビデンス |
docs/interoperability-case-study.md | リライングパーティ / Microsoft Entraの相互運用性エビデンスと限界 |
docs/windows-webauthn-debugging.md | エビデンス主導のWindows/WebAuthnデバッグワークフロー |
THREAT-MODEL.md | 脅威モデルとセキュリティに関する非主張 |
UPSTREAM.md | アップストリームの来歴と派生変更 |
SECURITY.md | 脆弱性報告とセキュリティポリシー |
pico-keys-sdkサブモジュールは既知のアップストリームコミットに固定されています。KL固有のSDK変更はscripts/apply-sdk-overlay.pyによって適用され、これは正確なコミットに固定され、予期しないソース状態ではフェイルクローズします。
この公開リポジトリは、KL Security Keyリファレンスパスを中心に意図的にキュレーションされています。無関係な継承された研究成果物やレガシーリリースヘルパーは公開されたKLサーフェスの一部ではありません。アップストリームの来歴はUPSTREAM.mdおよびGit履歴に文書化されたままです。
USBアイデンティティ/配布要件が未解決である間、バイナリ配布は意図的に初期公開ターゲットではありません。ソース、ドキュメント、検証方法論が主要な成果物です。
公開アテステーションルート証明書はcerts/KL-Security-Key-Root-CA-v1.cert.pemで入手できます。プライベートルート/デバイスキーは決して公開されません。
コントリビューションは、小さく、監査可能で、セキュリティへの影響について明示的である場合に歓迎されます。まずCONTRIBUTING.mdから始めてください。未修正の脆弱性について公開Issueを開かないでください。SECURITY.mdに従ってください。
KL Security Keyはpolhenarejos/pico-fidoから派生し、polhenarejos/pico-keys-sdkを使用しています。ソースはGNU Affero General Public License v3.0の下に残ります。LICENSE、NOTICE.md、UPSTREAM.mdを参照してください。
Karaaslan LabsはアップストリームのPico FIDO / Pico Keys SDKの著作権を主張しません。元の通知は保持され、KL固有の変更は別途文書化されています。
範囲を限定したWebAuthn/パスキーのデバッグやFIDO2認証器/アテステーションのエンジニアリングに関するお問い合わせは、[email protected]までご連絡ください。
有償デバッグサービス: https://www.upwork.com/services/product/development-it-get-expert-webauthn-passkey-and-fido2-authentication-debugging-2106330281996723797。このサービスはソフトウェア/認証エンジニアリングを対象としています。物理的なKL Security Keyは販売されていません。
Karaaslan Labs: https://karaaslanlabs.com