
Zentralisierte, TPM 2.0-hardwaregestützte kryptografische Identitäts-Enklave und Multi-Protokoll-Bridge für Linux (FIDO2/CTAP2 WebAuthn Passkeys, OpenSSH Agent, GnuPG LibAssuan, age-plugin, verschlüsselter Konfigurationsspeicher).
.. image:: https://gitlab.com/renich/gpasskey/-/raw/master/assets/banner.svg :width: 100% :align: center :alt: gEnclave banner
|
.. image:: https://gitlab.com/renich/gpasskey/badges/master/pipeline.svg :target: https://gitlab.com/renich/gpasskey/-/commits/master :alt: pipeline status .. image:: https://img.shields.io/gitlab/v/release/renich/gpasskey?logo=gitlab&label=release :target: https://gitlab.com/renich/gpasskey/-/releases :alt: GitLab Release .. image:: https://img.shields.io/badge/Go-1.26+-00ADD8?style=flat&logo=go :target: https://golang.org/ :alt: Go Version .. image:: https://img.shields.io/badge/License-GPLv3-blue.svg?logo=gnu :target: https://www.gnu.org/licenses/gpl-3.0 :alt: License
|
.. image:: https://img.shields.io/badge/FIDO2-CTAP2%20Virtual%20HID-4285F4?logo=fido :target: docs/technical/specs/ctap2-virtual-hid.rst :alt: FIDO2 CTAP2 .. image:: https://img.shields.io/badge/Hardware-TPM%202.0%20Sealed-4CAF50?logo=security :target: docs/technical/specs/tpm-binding.rst :alt: TPM 2.0 .. image:: https://img.shields.io/badge/Bridges-SSH%20%7C%20GPG%20%7C%20Age%20%7C%20D--Bus-8b5cf6 :target: docs/technical/specs/protocol-bridges.rst :alt: Multi-Protocol Bridges .. image:: https://img.shields.io/badge/Donate-Liberapay-f6c915.svg?logo=liberapay&logoColor=black :target: https://liberapay.com/Renich/donate :alt: Donate using Liberapay
.. caution::
PRE-ALPHA-SOFTWARE — NUTZUNG AUF EIGENES RISIKO!
Trotz der Versionsnummerierung ist gEnclave (früher gpasskey) derzeit experimentelle Pre-Alpha-Software, die sich in rasanter architektonischer Entwicklung befindet. Kryptografische Schemata, Vault-Formate und Protokoll-Bridges können sich ohne Abwärtskompatibilität ändern.
gEnclave bietet eine einheitliche hardwaregestützte Sicherheits-Enklave, die private Schlüssel und Geheimnisse in einem TPM-versiegelten verschlüsselten Vault speichert.
Es fungiert als Multi-Protokoll-Bridge und unterstützt WebAuthn/FIDO2-Passkeys, OpenSSH-Agent, das age-Verschlüsselungs-Plugin-Protokoll, GnuPG-Commit-Signierungsemulation und verschlüsselte Secret-Konfiguration.
Multi-Protokoll-Unterstützung:
/dev/uhid für native Browser- (Firefox, Chrome, Chromium) und OS-Passkey-Authentifizierung.age-Dateiverschlüsselung (v1) (age-plugin-ge/age-plugin-gpasskey).genclave-gpg/gpasskey-gpg) für nahtlose Git-Commit-Signierung und -Verifizierung.Hardwaregestützte Sicherheit: Private Schlüssel mit AES-256-GCM verschlüsselt, primär an TPM 2.0 versiegelt mit SRK-Caching und automatischem Argon2id-Software-Fallback.
Kryptografische PIN-Bindung & Auth-Cache: Jede Operation ist an einen von der PIN abgeleiteten Unterschlüssel gebunden, mit einem In-Memory-Autorisierungs-Cache im kernelgesperrten RAM (mlock). Unterstützt konfigurierbare Burst-Dauer (Standard 5s) oder persistentes/unbegrenztes Caching (GENCLAVE_SSH_CACHE_TTL="infinite"), mit sofortiger Nullisierung bei System-Suspend oder manueller Sperrung.
CLI-Vorauthentifizierung & Sperrsteuerung: Entsperren oder sperren Sie den In-Memory-Cache direkt vom Terminal aus (ge unlock [--stdin], ge lock) für automatisierte Batch-Skripte und Headless-Workflows.
Argon2id-KDF: Speicherharte Schlüsselableitung für Master-Passphrase, Wiederherstellung und Unterschlüssel.
Brute-Force-Schutz: Automatischer exponentieller Backoff bei fehlgeschlagenen Autorisierungsversuchen.
Intelligentes UI-Routing: Automatische Sitzungserkennung (grafisch vs. TTY) für Autorisierungsaufforderungen.
Sicherer Speicher: Verwendet mmap/mlock und eine „Wrap and Clear“-Strategie, um zu verhindern, dass Schlüsselmaterial in den Swap oder GC-Heap gelangt.
Identitätsverwaltung: Robuste CLI (ge) für Vault-Administration und verschlüsselte Secret-Verwaltung.
Hardware & Kernel
* **TPM 2.0**: Hardware-TPM-2.0-Gerät (``/dev/tpmrm0`` oder ``/dev/tpm0``) oder ``swtpm`` für softwareemulierte Entwicklung.
* **Linux-Kernel mit /dev/uhid**: Native Kernel-Unterstützung für User-Space-HID-Geräte (standardmäßig in modernen Distributionen aktiviert) zur Unterstützung virtueller FIDO2/CTAP2-Browser-Passkeys.
Laufzeitabhängigkeiten
wl-copy) oder xclip: Empfohlen für Ein-Klick-Kopieren in die Zwischenablage im Disaster-Recovery-Dialog.Build- & Entwicklungsabhängigkeiten
* **Go 1.26** oder neuer
* **GNU Make**
* **swtpm** (optional, erforderlich zur Ausführung der vollständigen Integrationstestsuite)
Installation über Paketmanager
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Unter Fedora/RHEL/AlmaLinux:
.. code-block:: bash
sudo dnf install golang make tpm2-tools zenity pinentry wl-clipboard swtpm
Unter Arch Linux:
.. code-block:: bash
sudo pacman -S go make tpm2-tools zenity pinentry wl-clipboard swtpm
Unter Debian/Ubuntu:
.. code-block:: bash
sudo apt install golang-go make tpm2-tools zenity pinentry-curses wl-clipboard swtpm
Schnellstart
------------
Für Ihr Benutzerkonto bauen und installieren (empfohlen, ohne Root):
.. code-block:: bash
make clean && make all
make install-user # Installs to ~/.local/bin, ~/.config/systemd/user, ~/.local/share/dbus-1
Oder systemweit installieren (erfordert Root):
.. code-block:: bash
sudo make install # Installs to /usr/local/bin
Socket-Aktivierung aktivieren & starten:
.. code-block:: bash
systemctl --user enable --now genclave-ssh.socket genclave-gpg.socket
Vault initialisieren und Status überprüfen:
.. code-block:: bash
ge status
# Identities are enrolled automatically on first use by clients
# (WebAuthn passkeys, SSH, age, GPG) or via the portal API.
Cache für automatisierte Skripte oder Headless-Sitzungen vorauthentifizieren:
.. code-block:: bash
# Unlock cache interactively via TTY:
ge unlock
# Or pre-authenticate via pipeline in scripts:
echo "$PIN" | ge unlock --stdin
# Purge and lock immediately when finished:
ge lock
WebAuthn-Passkeys im Browser:
.. code-block:: bash
# Open Firefox or Chrome, go to https://webauthn.io/
# Click "Register" -> enter your PIN in the gEnclave prompt -> Passkey is created!
# Click "Authenticate" -> enter your PIN -> Instant login verified!
Verschlüsselte Secrets im TPM-gestützten Konfigurationsspeicher verwalten:
.. code-block:: bash
ge set-secret my-api-key "super-secret-value"
ge get-secret my-api-key
Dokumentation & Spezifikationen
-------------------------------
Unsere umfassende Engineering-Dokumentation ist in modulare Spezifikationen, Architekturaufzeichnungen und Roadmaps gegliedert: