
Enclave de identidad criptográfica centralizada con respaldo de hardware TPM 2.0 y puente multiprotocolo para Linux (FIDO2/CTAP2 WebAuthn Passkeys, OpenSSH Agent, GnuPG LibAssuan, age-plugin, almacén de configuración cifrado).
.. image:: https://gitlab.com/renich/genclave/-/raw/master/assets/banner.svg :width: 100% :align: center :alt: banner de gEnclave
|
.. image:: https://gitlab.com/renich/genclave/badges/master/pipeline.svg :target: https://gitlab.com/renich/genclave/-/commits/master :alt: estado del pipeline .. image:: https://img.shields.io/gitlab/v/release/renich/genclave?logo=gitlab&label=release :target: https://gitlab.com/renich/genclave/-/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::
SOFTWARE PRE-ALFA — ¡ÚSELO BAJO SU PROPIO RIESGO!
A pesar de la numeración de las versiones, gEnclave (anteriormente gpasskey) es actualmente software experimental pre-alfa que está atravesando un rápido desarrollo arquitectónico. Los esquemas criptográficos, los formatos de bóveda y los puentes de protocolo pueden cambiar sin compatibilidad hacia atrás.
gEnclave proporciona un enclave de seguridad unificado respaldado por hardware que almacena claves privadas y secretos en una bóveda cifrada sellada por TPM.
Actúa como un puente multiprotocolo, compatible con Passkeys WebAuthn/FIDO2, OpenSSH Agent, el protocolo de plugin de cifrado age, la emulación de firma de commits de GnuPG y la configuración cifrada de secretos.
Soporte multiprotocolo:
/dev/uhid para autenticación nativa de Passkeys en navegadores (Firefox, Chrome, Chromium) y en el sistema operativo.age (v1) (age-plugin-ge/age-plugin-gpasskey).genclave-gpg/gpasskey-gpg) para la firma y verificación de commits de Git sin fricción.Seguridad respaldada por hardware: Claves privadas cifradas con AES-256-GCM, selladas principalmente a TPM 2.0 con caché de SRK y respaldo automático de software Argon2id.
Vinculación criptográfica de PIN y caché de autenticación: Cada operación está vinculada a una subclave derivada del PIN con una caché de autorización en memoria en RAM bloqueada por el kernel (mlock). Admite duración de ráfaga configurable (5s por defecto) o caché persistente/ilimitada (configurada en la bóveda o mediante GENCLAVE_SSH_CACHE_TTL), con puesta a cero instantánea al suspender el sistema o al bloquear manualmente.
Preautenticación por CLI y control de bloqueo: Desbloquea o bloquea la caché en memoria directamente desde la terminal (ge unlock [--stdin], ge lock) para scripts por lotes automatizados y flujos de trabajo sin interfaz.
KDF Argon2id: Derivación de claves con dureza de memoria para la frase de contraseña maestra, la recuperación y las subclaves.
Protección contra fuerza bruta: Retardo exponencial automático para intentos de autorización fallidos.
Enrutamiento inteligente de la interfaz: Detección automática de sesión (gráfica vs. TTY) para las solicitudes de autorización.
Memoria segura: Utiliza mmap/mlock y una estrategia de "Wrap and Clear" para evitar que el material de claves se filtre al swap o al heap del GC.
Gestión de identidades: CLI robusta (ge) para la administración de la bóveda y la gestión de secretos cifrados.
Hardware y kernel
* **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): Recomendado para copiar al portapapeles con un solo clic en el diálogo de recuperación ante desastres.Dependencias de compilación y desarrollo
* **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