
Enclave de identidade criptográfica centralizada com suporte de hardware TPM 2.0 e ponte multiprotocolo para Linux (FIDO2/CTAP2 WebAuthn Passkeys, OpenSSH Agent, GnuPG LibAssuan, age-plugin, armazenamento de configuração criptografado).
.. image:: https://gitlab.com/renich/genclave/-/raw/master/assets/banner.svg :width: 100% :align: center :alt: banner do gEnclave
|
.. image:: https://gitlab.com/renich/genclave/badges/master/pipeline.svg :target: https://gitlab.com/renich/genclave/-/commits/master :alt: status do 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: Versão do Go .. image:: https://img.shields.io/badge/License-GPLv3-blue.svg?logo=gnu :target: https://www.gnu.org/licenses/gpl-3.0 :alt: Licença
|
.. 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: Pontes Multiprotocolo .. image:: https://img.shields.io/badge/Donate-Liberapay-f6c915.svg?logo=liberapay&logoColor=black :target: https://liberapay.com/Renich/donate :alt: Doe usando Liberapay
.. caution::
SOFTWARE PRÉ-ALFA — USE POR SUA CONTA E RISCO!
Apesar da numeração de versões, o gEnclave (anteriormente gpasskey) é atualmente um software experimental pré-alfa em rápido desenvolvimento arquitetural. Esquemas criptográficos, formatos de cofre e pontes de protocolo podem mudar sem compatibilidade retroativa.
O gEnclave fornece um enclave de segurança unificado com suporte de hardware que armazena chaves privadas e segredos em um cofre criptografado selado por TPM.
Ele atua como uma ponte multiprotocolo, suportando Passkeys WebAuthn/FIDO2, OpenSSH Agent, o protocolo de plugin de criptografia age, emulação de assinatura de commit do GnuPG e configuração de segredos criptografados.
Suporte Multiprotocolo:
/dev/uhid para autenticação nativa de Passkeys em navegadores (Firefox, Chrome, Chromium) e no sistema operacional.age (v1) (age-plugin-ge/age-plugin-gpasskey).genclave-gpg/gpasskey-gpg) para assinatura e verificação de commits Git de forma transparente.Segurança com Suporte de Hardware: Chaves privadas criptografadas com AES-256-GCM, seladas primariamente ao TPM 2.0 com cache de SRK e fallback automático para software via Argon2id.
Vinculação Criptográfica de PIN e Cache de Autorização: Toda operação é vinculada a uma subchave derivada do PIN com um cache de autorização em memória em RAM bloqueada pelo kernel (mlock). Suporta duração de burst configurável (padrão de 5s) ou cache persistente/ilimitado (configurado no vault ou via GENCLAVE_SSH_CACHE_TTL), com zeragem instantânea em suspensão do sistema ou bloqueio manual.
Pré-Autenticação via CLI e Controle de Bloqueio: Desbloqueie ou bloqueie o cache em memória diretamente pelo terminal (ge unlock [--stdin], ge lock) para scripts em lote automatizados e fluxos de trabalho headless.
KDF Argon2id: Derivação de chave com dureza de memória para a passphrase mestra, recuperação e subchaves.
Proteção contra Força Bruta: Backoff exponencial automático para tentativas de autorização falhas.
Roteamento Inteligente de UI: Detecção automática de sessão (Gráfica vs. TTY) para prompts de autorização.
Memória Segura: Utiliza mmap/mlock e uma estratégia de "Wrap and Clear" para evitar que material de chave vaze para swap ou para o heap do GC.
Gerenciamento de Identidade: CLI robusta (ge) para administração do vault e gerenciamento de segredos criptografados.
Hardware e 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 cópia rápida para a área de transferência com um clique no diálogo de recuperação de desastres.Dependências de Build e Desenvolvimento
* **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
# 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!
Manage encrypted secrets in the hardware-bound configuration store:
.. code-block:: bash
ge secret set my-api-key "super-secret-value"
ge secret get my-api-key