
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/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::
SOFTWARE PRE-ALFA — ¡ÚSALO BAJO TU PROPIO RIESGO!
A pesar de la numeración de versiones, gEnclave (anteriormente gpasskey) es actualmente software experimental pre-alfa que está experimentando 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 complemento de cifrado age, la emulación de firma de commits de GnuPG y la configuración de secretos cifrados.
Compatibilidad multiprotocolo:
/dev/uhid para autenticación nativa de Passkeys en navegadores (Firefox, Chrome, Chromium) y sistemas operativos.age (v1) (age-plugin-ge/age-plugin-gpasskey).genclave-gpg/gpasskey-gpg) para la firma y verificación de commits de Git sin interrupciones.Seguridad respaldada por hardware: Claves privadas cifradas con AES-256-GCM, selladas principalmente a TPM 2.0 con caché 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 (5 s por defecto) o caché persistente/ilimitada (GENCLAVE_SSH_CACHE_TTL="infinite"), 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 (, ) para scripts por lotes automatizados y flujos de trabajo sin interfaz gráfica.
Hardware y kernel
* **TPM 2.0**: Dispositivo TPM 2.0 físico (``/dev/tpmrm0`` o ``/dev/tpm0``), o ``swtpm`` para desarrollo con emulación por software.
* **Kernel de Linux con /dev/uhid**: Compatibilidad nativa del kernel con dispositivos HID en espacio de usuario (habilitada por defecto en distribuciones modernas) para admitir passkeys FIDO2/CTAP2 virtuales en el navegador.
Dependencias de tiempo de ejecución
wl-copy) o xclip: 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** o posterior
* **GNU Make**
* **swtpm** (opcional, necesario para ejecutar la suite completa de pruebas de integración)
Instalación mediante gestor de paquetes
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
En Fedora/RHEL/AlmaLinux:
.. code-block:: bash
sudo dnf install golang make tpm2-tools zenity pinentry wl-clipboard swtpm
En Arch Linux:
.. code-block:: bash
sudo pacman -S go make tpm2-tools zenity pinentry wl-clipboard swtpm
En Debian/Ubuntu:
.. code-block:: bash
sudo apt install golang-go make tpm2-tools zenity pinentry-curses wl-clipboard swtpm
Inicio rápido
-------------
Compila e instala para tu cuenta de usuario (recomendado, sin root):
.. code-block:: bash
make clean && make all
make install-user # Instala en ~/.local/bin, ~/.config/systemd/user, ~/.local/share/dbus-1
O instala en todo el sistema (requiere root):
.. code-block:: bash
sudo make install # Instala en /usr/local/bin
Habilita e inicia la activación por socket:
.. code-block:: bash
systemctl --user enable --now genclave-ssh.socket genclave-gpg.socket
Inicializa tu bóveda y verifica el estado:
.. code-block:: bash
ge status
# Las identidades se registran automáticamente en el primer uso por los clientes
# (passkeys WebAuthn, SSH, age, GPG) o a través de la API del portal.
Preautentica la caché para scripts automatizados o sesiones sin interfaz gráfica:
.. code-block:: bash
# Desbloquear la caché de forma interactiva mediante TTY:
ge unlock
# O preautenticar mediante una tubería en scripts:
echo "$PIN" | ge unlock --stdin
# Purgar y bloquear inmediatamente al terminar:
ge lock
Passkeys WebAuthn en el navegador:
.. code-block:: bash
# Abre Firefox o Chrome, ve a https://webauthn.io/
# Haz clic en "Register" -> introduce tu PIN en el aviso de gEnclave -> ¡Se crea la passkey!
# Haz clic en "Authenticate" -> introduce tu PIN -> ¡Inicio de sesión instantáneo verificado!
Gestiona secretos cifrados en el almacén de configuración respaldado por TPM:
.. code-block:: bash
ge set-secret my-api-key "super-secret-value"
ge get-secret my-api-key
Documentación y especificaciones
--------------------------------
Nuestra exhaustiva documentación de ingeniería está organizada en especificaciones modulares, registros de arquitectura y hojas de ruta:
* **Especificaciones funcionales**: `Functional Spec Index`_ — Define los requisitos de usuario y los modelos de autorización.
* **Planos técnicos**: `Technical Spec Index`_ — Arquitectura detallada en Go, primitivas criptográficas y diseños de enclave.
* **Registros de decisiones de arquitectura (ADR)**: `ADR Index`_ — Registro inmutable de decisiones arquitectónicas, criptográficas y de seguridad.
* **API y protocolos de comunicación**: `API Spec Index`_ — Socket de gestión, portales D-Bus y esquemas de comunicación de los puentes.
* **Hoja de ruta de ejecución del proyecto**: `Roadmap Index`_ — Cronogramas de ingeniería por fases y entregables por hitos.
Guías de usuario
~~~~~~~~~~~~~~~~
* `User Quick Start`_ - Empieza a usarlo en 5 minutos.
* `Installation Guide`_ - Compilación detallada, configuración de udev y systemd.
* `OpenSSH Guide`_ - Integración con el agente OpenSSH, hosts de salto y claves FIDO2.
* `GnuPG & Git Signing Guide`_ - Gestión de claves OpenPGP y firma de commits de Git.
* `Pluggable Factors Guide`_ - Keyfiles, YubiKeys, biometría y quórums de Shamir.
* `Security Guide`_ - Enclave de hardware TPM 2.0 y aislamiento de memoria "Wrap and Clear".
* `Configuration Guide`_ - Variables de entorno y opciones de servicio.
* `CLI Reference`_ - Documentación completa de la interfaz de línea de comandos.
.. _Functional Spec Index: docs/functional/spec.rst
.. _Technical Spec Index: docs/technical/spec.rst
.. _ADR Index: docs/adrs/index.rst
.. _API Spec Index: docs/api/spec.rst
.. _Roadmap Index: docs/project/roadmap.rst
.. _User Quick Start: docs/user/quickstart.rst
.. _Installation Guide: docs/user/installation.rst
.. _OpenSSH Guide: docs/user/ssh.rst
.. _GnuPG & Git Signing Guide: docs/user/gpg.rst
.. _Pluggable Factors Guide: docs/user/factors.rst
.. _Security Guide: docs/user/security.rst
.. _Configuration Guide: docs/user/configuration.rst
.. _CLI Reference: docs/user/cli.rst
Factores conectables y quórum multiparte (Fase 7)
-------------------------------------------------
**Fase 7: Motor de autenticación multifactor conectable y quórum multiparte** ofrece:
* **Hasher de archivos arbitrarios en streaming**: Usa cualquier archivo (desde un breve poema de texto hasta un máster de audio FLAC de 100 GB o una imagen) como factor de autorización con un consumo de memoria constante :math:`\mathcal{O}(1)` (búfer :math:`\le 64\,\text{KB}`).
* **Quórum multiparte ("La receta de Coca-Cola")**: **Shamir Secret Sharing con envoltura de claves** sobre :math:`\text{GF}(2^8)` con etiquetas de verificación HMAC, lo que permite autorización con clave dividida :math:`k`-de-:math:`n`.
* **Hardware y biometría**: YubiKey física (Slot 2 HMAC-SHA1), claves FIDO2 físicas (``hmac-secret``) y biometría de Linux (``fprintd``).
* **Recifrado dinámico de factores**: Recifrado atómico en memoria (``ge rekey``) para cambiar la política de factores de una identidad sobre la marcha sin recrear claves.
* **Modernización de la CLI**: Interfaz de línea de comandos simplificada en la canónica ``ge``.
* **Desbloqueo automático de escritorio**: Integración perfecta con el Freedesktop Secret Service (``org.freedesktop.secrets``).
Consulta `Phase 7 Roadmap`_ y `ADR-006`_ para ver las especificaciones completas.
.. _Phase 7 Roadmap: docs/project/roadmaps/phase-7-pluggable-factors.rst
.. _ADR-006: docs/adrs/2026-08-25-pluggable-auth-factors.rst
Componentes
-----------
* **genclaved**: El enclave de seguridad principal y el demonio de clave de seguridad USB CTAP2/FIDO2 virtual (``man 8 genclaved``).
* **ge**: Herramienta principal de línea de comandos para la administración de la bóveda, la generación de claves OpenSSH/GnuPG y la configuración cifrada (``man 1 ge``).
* **age-plugin-ge**: Complemento para la herramienta de cifrado ``age`` (``man 1 age-plugin-ge``).
* **genclave-gpg**: Puente de emulación para la firma y verificación compatibles con GnuPG (``man 1 genclave-gpg``).
* **genclave-ui**: Asistente gráfico para la introducción del PIN (``man 1 genclave-ui``).
Desarrollo
----------
Ejecuta las pruebas unitarias:
.. code-block:: bash
make test
Ejecuta la suite completa de integración nativa de Go (requiere ``swtpm``):
.. code-block:: bash
make integration-test
Soporte y donaciones
--------------------
Si encuentras útil **gEnclave** y quieres apoyar su desarrollo continuo, considera donar a través de Liberapay:
.. image:: https://liberapay.com/assets/widgets/donate.svg
:target: https://liberapay.com/Renich/donate
:alt: Donate using Liberapay
Licencia
--------
Copyright 2026 EVALinux
Este proyecto está licenciado bajo la GNU General Public License v3.0 o posterior.
Consulta el archivo LICENSE para más detalles.
ge unlock [--stdin]ge lockKDF Argon2id: Derivación de claves con uso intensivo de memoria para la frase de contraseña maestra, la recuperación y las subclaves.
Protección contra fuerza bruta: Retroceso exponencial automático para intentos de autorización fallidos.
Enrutamiento inteligente de la interfaz de usuario: Detección automática de sesión (gráfica vs. TTY) para 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.