
Enclave d'identité cryptographique centralisée, soutenue par le matériel TPM 2.0, et pont multi-protocole pour Linux (FIDO2/CTAP2 WebAuthn Passkeys, OpenSSH Agent, GnuPG LibAssuan, age-plugin, stockage de configuration chiffré).
.. image:: https://gitlab.com/renich/genclave/-/raw/master/assets/banner.svg :width: 100% :align: center :alt: bannière gEnclave
|
.. image:: https://gitlab.com/renich/genclave/badges/master/pipeline.svg :target: https://gitlab.com/renich/genclave/-/commits/master :alt: état du pipeline .. image:: https://img.shields.io/gitlab/v/release/renich/genclave?logo=gitlab&label=release :target: https://gitlab.com/renich/genclave/-/releases :alt: Version GitLab .. image:: https://img.shields.io/badge/Go-1.26+-00ADD8?style=flat&logo=go :target: https://golang.org/ :alt: Version de Go .. image:: https://img.shields.io/badge/License-GPLv3-blue.svg?logo=gnu :target: https://www.gnu.org/licenses/gpl-3.0 :alt: Licence
|
.. 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: Ponts multi-protocoles .. image:: https://img.shields.io/badge/Donate-Liberapay-f6c915.svg?logo=liberapay&logoColor=black :target: https://liberapay.com/Renich/donate :alt: Faire un don via Liberapay
.. caution::
LOGICIEL PRÉ-ALPHA — À UTILISER À VOS RISQUES ET PÉRILS !
Malgré la numérotation des versions, gEnclave (anciennement gpasskey) est actuellement un logiciel expérimental en pré-alpha qui fait l'objet d'un développement architectural rapide. Les schémas cryptographiques, les formats de coffre-fort et les ponts de protocoles peuvent changer sans compatibilité ascendante.
gEnclave fournit une enclave de sécurité unifiée adossée au matériel qui stocke les clés privées et les secrets dans un coffre-fort chiffré scellé par TPM.
Il agit comme un pont multi-protocoles, prenant en charge les Passkeys WebAuthn/FIDO2, l'agent OpenSSH, le protocole de plugin de chiffrement age, l'émulation de signature de commit GnuPG et la configuration chiffrée de secrets.
Prise en charge multi-protocoles :
/dev/uhid pour l'authentification native par Passkey dans le navigateur (Firefox, Chrome, Chromium) et au niveau de l'OS.age (v1) (age-plugin-ge/age-plugin-gpasskey).genclave-gpg/gpasskey-gpg) pour une signature et une vérification transparentes des commits Git.Sécurité ancrée dans le matériel : Clés privées chiffrées avec AES-256-GCM, principalement scellées au TPM 2.0 avec mise en cache SRK et repli logiciel automatique sur Argon2id.
Liaison cryptographique au PIN et cache d'authentification : Chaque opération est liée à une sous-clé dérivée du PIN avec un cache d'autorisation en mémoire dans une RAM verrouillée par le noyau (mlock). Prend en charge une durée de rafale configurable (5 s par défaut) ou une mise en cache persistante/illimitée (configurée dans le coffre ou via GENCLAVE_SSH_CACHE_TTL), avec une remise à zéro instantanée lors d'une mise en veille du système ou d'un verrouillage manuel.
Pré-authentification CLI et contrôle du verrouillage : Déverrouillez ou verrouillez directement le cache en mémoire depuis le terminal (ge unlock [--stdin], ge lock) pour les scripts de traitement par lots automatisés et les workflows sans interface graphique.
KDF Argon2id : Dérivation de clé à coût mémoire pour la phrase de passe maître, la récupération et les sous-clés.
Protection contre la force brute : Ralentissement exponentiel automatique en cas de tentatives d'autorisation échouées.
Routage intelligent de l'interface : Détection automatique de la session (graphique ou TTY) pour les invites d'autorisation.
Mémoire sécurisée : Utilise mmap/mlock et une stratégie « Wrap and Clear » pour empêcher toute fuite du matériel de clé vers le swap ou le tas du GC.
Gestion des identités : CLI robuste (ge) pour l'administration du coffre et la gestion chiffrée des secrets.
Matériel et noyau
* **TPM 2.0**: Hardware TPM 2.0 device (``/dev/tpmrm0`` or ``/dev/tpm0``), or ``swtpm`` for software-emulated development.
* **Linux Kernel with /dev/uhid**: Native kernel support for user-space HID devices (enabled by default in modern distributions) to support virtual FIDO2/CTAP2 browser passkeys.
Runtime Dependencies
wl-copy) : recommandé pour la copie en un clic dans le presse-papiers depuis la boîte de dialogue de reprise après sinistre.Dépendances de compilation et de développement
* **Go 1.26** or later
* **GNU Make**
* **swtpm** (optional, required to execute the full integration test suite)
Package Manager Installation
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
On Fedora/RHEL/AlmaLinux:
.. code-block:: bash
sudo dnf install golang make tpm2-tools zenity pinentry wl-clipboard swtpm
On Arch Linux:
.. code-block:: bash
sudo pacman -S go make tpm2-tools zenity pinentry wl-clipboard swtpm
On Debian/Ubuntu:
.. code-block:: bash
sudo apt install golang-go make tpm2-tools zenity pinentry-curses wl-clipboard swtpm
Quick Start
-----------
Build and install for your user account (recommended, non-root):
.. code-block:: bash
make
make install-user # Installs binaries, systemd units, man pages, and activates services
Or install system-wide (requires root):
.. code-block:: bash
sudo make install # Installs to /usr/local/bin, /usr/share/man, etc.
Inspect enclave and daemon status:
.. code-block:: bash
ge status
Pre-authenticate the cache for automated scripts or headless sessions:
.. 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
Manage OpenSSH keys in the vault:
.. code-block:: bash
# Generate a new hardware-sealed Ed25519 SSH key:
ge ssh generate --name personal-github
# Or import your existing keys from ~/.ssh/:
ge ssh import ~/.ssh/
# Export OpenSSH public key for GitHub/GitLab:
ge ssh public personal-github
Manage GnuPG identities & Git commit signing:
.. code-block:: bash
# Generate an OpenPGP signing key:
ge gpg generate --user-name "Your Name" --email "[email protected]"
# List registered keys and Libgcrypt keygrips:
ge gpg list
Manage WebAuthn Passkeys in Browser:
.. code-block:: bash