Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
webauthn_tpm_portable — Portable, hardwaregestützte WebAuthn-Anmeldedaten mittels TPM 2.0. Ein deterministischer Elternschlüssel, abgeleitet von einem Master-Seed, ermöglicht geräteübergreifende Portabilität der Anmeldedaten. Private Signaturschlüssel verlassen nie das TPM. Beinhaltet Browsererweiterung und CLI. | Kitploit
Tools/GitHubGitHub/mimi89999/webauthn_tpm_portable
Verschlüsselungs-/EntschlüsselungstoolsSicherheitsvirtualisierungKryptographieHardware-SicherheitAuthentifizierung
GitHubmimi89999/webauthn_tpm_portable

webauthn_tpm_portable

Repository anzeigen

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →

Über

Portable, hardwaregestützte WebAuthn-Anmeldedaten mittels TPM 2.0. Ein deterministischer Elternschlüssel, abgeleitet von einem Master-Seed, ermöglicht geräteübergreifende Portabilität der Anmeldedaten. Private Signaturschlüssel verlassen nie das TPM. Beinhaltet Browsererweiterung und CLI.

4vor 5 MonatenNoch nicht geprüft
Teilen

Tragbare WebAuthn TPM-Anmeldeinformationen

⚠️ Früher Proof of Concept. Dieses Projekt wurde nicht gründlich getestet oder auditiert. Verwenden Sie es nicht für etwas anderes als Experimente.

Tragbare, hardwaregestützte WebAuthn/Passkey-Anmeldeinformationen, die mit TPM 2.0 auf mehreren Geräten funktionieren.

Traditionelle TPM-Anmeldeinformationen sind an das Gerät gebunden, das sie erstellt hat. Dieses Projekt macht sie portabel, indem es einen deterministischen Elternschlüssel (abgeleitet von einem Master-Seed) in das TPM jedes Geräts importiert. Von einem TPM verschlüsselte Credential-Blobs können dann von jedem anderen TPM geladen und verwendet werden, das mit demselben Seed bereitgestellt wurde. Private Signaturschlüssel werden vom TPM für jede Anmeldeinformation zufällig generiert und existieren außerhalb der Hardware niemals im Klartext.

Der Master-Seed wird pro Gerät nur während der Bereitstellung benötigt. Danach finden alle kryptografischen Vorgänge vollständig innerhalb des TPM statt.

So funktioniert es

Eine Browsererweiterung überschreibt navigator.credentials und leitet WebAuthn-Aufrufe über Native Messaging an ein Python-Backend weiter, das direkt mit dem TPM kommuniziert. Bei der Registrierung erstellt das TPM einen neuen Signaturschlüssel unter dem portablen Elternschlüssel und gibt einen verschlüsselten Blob zurück. Bei der Authentifizierung lädt es den Blob erneut, entschlüsselt ihn intern und signiert die Challenge.

Voraussetzungen

  • Betriebssystem: Linux oder Windows (macOS hat kein TPM)
  • Hardware: TPM 2.0
  • Python: 3.10+
  • Browser: Firefox (Chrome-Unterstützung geplant)

Installation

1. Abhängigkeiten installieren

Linux (Debian/Ubuntu):

root@kitploit:~
sudo apt install tpm2-tools python3-tpm2-pytss python3-cryptography

Windows:

root@kitploit:~
pip install cryptography

Windows kommuniziert mit dem TPM über TBS (TPM Base Services) mittels ctypes, daher sind keine zusätzlichen nativen Pakete erforderlich.

2. Native Messaging einrichten

Die Browsererweiterung kommuniziert mit native_host.py über Native Messaging. Sie müssen ein Manifest registrieren, das Firefox mitteilt, wo sich der Host befindet.

Erstellen Sie die Datei ~/.mozilla/native-messaging-hosts/webauthn_tpm_portable.json:

root@kitploit:~
{
    "name": "webauthn_tpm_portable",
    "description": "WebAuthn TPM Portable Credentials Backend",
    "path": "/absolute/path/to/native_host.py",
    "type": "stdio",
    "allowed_extensions": [
        "[email protected]"
    ]
}

Ersetzen Sie path durch den absoluten Pfad zu native_host.py. Stellen Sie sicher, dass es ausführbar ist (chmod +x native_host.py).

Unter Windows wird das Native-Messaging-Manifest über die Windows-Registrierung registriert. Siehe die Firefox Native Messaging Dokumentation für Details.

3. Browsererweiterung laden

root@kitploit:~
cd extension
npm install
npm run build

Dann in Firefox:

  1. Öffnen Sie about:debugging#/runtime/this-firefox
  2. Klicken Sie auf "Temporäres Add-on laden..."
  3. Wählen Sie eine beliebige Datei im Ordner extension/dist (z.B. manifest.json)

4. TPM bereitstellen

Öffnen Sie das Popup der Erweiterung und fügen Sie entweder einen vorhandenen Seed ein oder klicken Sie auf "Generieren", um einen neuen zu erstellen, und klicken Sie dann auf "Bereitstellen". Wenn Sie einen neuen Seed generieren, bewahren Sie ihn sicher auf. Sie benötigen ihn, um weitere Geräte bereitzustellen, und ein Verlust bedeutet, dass Sie keine neuen Geräte einrichten können (vorhandene Anmeldeinformationen auf bereits bereitgestellten Geräten funktionieren weiterhin).

Die Bereitstellung kann auch über die CLI erfolgen:

root@kitploit:~
./webauthn_cli.py provision --generate
# or with an existing seed:
./webauthn_cli.py provision <seed_hex>

5. Überprüfen

root@kitploit:~
./webauthn_cli.py test

Dies erstellt eine Anmeldeinformation, signiert eine Challenge und verifiziert die Signatur.

CLI-Referenz

root@kitploit:~
webauthn_cli.py [--backend=BACKEND] <command> [args]

Befehle:

Backends (ausgewählt mit --backend oder der Umgebungsvariable WEBAUTHN_BACKEND):

BackendBeschreibung
tpmPlattformübergreifendes TPM via Raw-Befehle (Standard)
linuxNur Linux, verwendet die Bibliothek tpm2-pytss
softReine Software, kein TPM erforderlich (zum Testen)

Sicherheit

Was geschützt ist

Signaturschlüssel für Anmeldeinformationen werden im TPM generiert und verlassen es niemals im Klartext. Der verschlüsselte Blob in der Credential-ID ist ohne Zugriff auf ein bereitgestelltes TPM nutzlos. Im Gegensatz zu softwarebasierten Credential-Speichern sind private Schlüssel während der Authentifizierung niemals im Host-Speicher vorhanden, was vor Cold-Boot-Angriffen und malwarebasierter Schlüsselextraktion schützt.

TPM2_Duplicate (das theoretisch Schlüssel exportieren könnte) wird blockiert, da Anmeldeinformationen mit einer leeren authPolicy erstellt werden, was eine Duplizierung selbst bei vollem Systemzugriff unmöglich macht.

Was nicht geschützt ist

Schadsoftware, die auf einem bereitgestellten System läuft, kann das TPM bitten, Challenges zu signieren, da es keine Benutzerüberprüfung gibt (kein Tastendruck oder Biometrie). Sie kann die Schlüssel nicht extrahieren, aber sie kann sie nutzen, solange sie aktiv ist. Dies ist eine geringere Angriffsfläche als bei softwarebasierten Credential-Speichern, bei denen Malware Schlüssel direkt stehlen kann.

Seed-Sicherheit

Der Master-Seed ist die Vertrauenswurzel. Wenn er kompromittiert wird, kann ein Angreifer sein eigenes TPM bereitstellen und alle erhaltenen Credential-Blobs verwenden. Wenn er verloren geht und alle bereitgestellten Geräte nicht verfügbar sind, sind Anmeldeinformationen nicht wiederherstellbar. Bewahren Sie ihn auf wie einen Hardware-Wallet-Wiederherstellungssatz: offline, an einem sicheren Ort, idealerweise mit Redundanz (z.B. auf mehrere Orte verteilt).

Backends

Das Projekt enthält drei austauschbare Backends:

webauthn_tpm_portable.py ist das primäre Backend. Es konstruiert TPM-Befehle auf Byte-Ebene und funktioniert sowohl unter Linux (/dev/tpmrm0) als auch unter Windows (TBS API via ctypes).

webauthn_tpm_linux.py verwendet die Python-Bibliothek tpm2-pytss und funktioniert nur unter Linux.

webauthn_soft.py ist eine reine Software-Implementierung, die dasselbe Credential-Format ohne TPM emuliert. Nützlich zum Testen und Entwickeln, bietet jedoch keinen Hardwareschutz.

Fehlerbehebung

"Permission denied" auf /dev/tpmrm0: Fügen Sie Ihren Benutzer zur Gruppe tss hinzu und melden Sie sich erneut an: sudo usermod -aG tss $USER

tpm2-pytss Importfehler: Versuchen Sie sudo apt install python3-tpm2-pytss oder pip install --upgrade tpm2-pytss --break-system-packages.

Erweiterung verbindet sich nicht mit nativem Host: Überprüfen Sie, ob der path im Native-Messaging-Manifest ein absoluter Pfad ist, der auf native_host.py zeigt. Öffnen Sie die Browserkonsole in Firefox (Strg+Umschalt+J), um Fehler von der Erweiterung zu überprüfen.

Lizenz

MIT

Tool herunterladen
BefehlBeschreibung
statusÜberprüfen, ob das TPM bereitgestellt ist
provision --generateEinen zufälligen Seed generieren und bereitstellen
provision <seed_hex>Mit einem vorhandenen Seed bereitstellen
create <rp_id>Eine Anmeldeinformation für eine vertrauende Partei erstellen
sign <cred_id> <rp_id> <challenge>Eine Challenge signieren
verify <cred_id> <rp_id> <challenge> <sig>Eine Signatur verifizieren
clearDen portablen Elternschlüssel aus dem TPM entfernen
testEinen vollständigen Erstellen/Signieren/Verifizieren-Zyklus ausführen