
Enclave crittografico di identità centralizzato, con supporto hardware TPM 2.0, e bridge multi-protocollo per Linux (FIDO2/CTAP2 WebAuthn Passkeys, OpenSSH Agent, GnuPG LibAssuan, age-plugin, archivio di configurazione cifrato).
.. 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-ALPHA — USALO A TU PROPIO RIESGO!
Nonostante la numerazione delle release, gEnclave (precedentemente gpasskey) è attualmente un software sperimentale pre-alpha in rapido sviluppo architetturale. Gli schemi crittografici, i formati dei vault e i bridge di protocollo possono cambiare senza compatibilità retroattiva.
gEnclave fornisce un enclave di sicurezza unificato supportato da hardware che memorizza chiavi private e segreti in un vault crittografato sigillato tramite TPM.
Agisce come un bridge multi-protocollo, supportando Passkey WebAuthn/FIDO2, OpenSSH Agent, il protocollo plugin di crittografia age, l'emulazione della firma dei commit GnuPG e la configurazione crittografata dei segreti.
Supporto Multi-Protocollo:
/dev/uhid per l'autenticazione nativa con Passkey su browser (Firefox, Chrome, Chromium) e sistemi operativi.age (v1) (age-plugin-ge/age-plugin-gpasskey).genclave-gpg/gpasskey-gpg) per la firma e la verifica dei commit Git in modo trasparente.Sicurezza Supportata da Hardware: Chiavi private crittografate con AES-256-GCM, sigillate principalmente al TPM 2.0 con caching SRK e fallback software automatico Argon2id.
Binding Crittografico del PIN e Cache di Autorizzazione: Ogni operazione è vincolata a una sottochiave derivata dal PIN con una cache di autorizzazione in memoria in RAM bloccata dal kernel (mlock). Supporta una durata burst configurabile (predefinita 5s) o caching persistente/illimitato (GENCLAVE_SSH_CACHE_TTL="infinite"), con azzeramento istantaneo in caso di sospensione del sistema o blocco manuale.
Pre-Autenticazione CLI e Controllo del Blocco: Sblocca o blocca la cache in memoria direttamente dal terminale (ge unlock [--stdin], ge lock) per script batch automatizzati e flussi di lavoro headless.
KDF Argon2id: Derivazione delle chiavi memory-hard per la passphrase master, il recupero e le sottochiavi.
Protezione Brute-Force: Backoff esponenziale automatico per i tentativi di autorizzazione falliti.
Routing Intelligente dell'UI: Rilevamento automatico della sessione (Grafica vs. TTY) per le richieste di autorizzazione.
Memoria Sicura: Utilizza mmap/mlock e una strategia "Wrap and Clear" per impedire che il materiale delle chiavi finisca nello swap o nell'heap del GC.
Gestione delle Identità: CLI robusta (ge) per l'amministrazione del vault e la gestione crittografata dei segreti.
Hardware e Kernel
* **TPM 2.0**: Dispositivo hardware TPM 2.0 (``/dev/tpmrm0`` o ``/dev/tpm0``), oppure ``swtpm`` per lo sviluppo con emulazione software.
* **Kernel Linux con /dev/uhid**: Supporto nativo del kernel per dispositivi HID in user-space (abilitato di default nelle distribuzioni moderne) per supportare le passkey FIDO2/CTAP2 virtuali nel browser.
Dipendenze di Runtime
wl-copy) o xclip: Consigliato per la copia negli appunti con un clic nella finestra di ripristino di emergenza.Dipendenze di Build e Sviluppo
* **Go 1.26** o successivo
* **GNU Make**
* **swtpm** (opzionale, richiesto per eseguire l'intera suite di test di integrazione)
Installazione tramite Package Manager
Su Fedora/RHEL/AlmaLinux:
.. code-block:: bash
sudo dnf install golang make tpm2-tools zenity pinentry wl-clipboard swtpm
Su Arch Linux:
.. code-block:: bash
sudo pacman -S go make tpm2-tools zenity pinentry wl-clipboard swtpm
Su Debian/Ubuntu:
.. code-block:: bash
sudo apt install golang-go make tpm2-tools zenity pinentry-curses wl-clipboard swtpm
Compila e installa per il tuo account utente (consigliato, non-root):
.. code-block:: bash
make clean && make all make install-user # Installs to ~/.local/bin, ~/.config/systemd/user, ~/.local/share/dbus-1
Oppure installa a livello di sistema (richiede root):
.. code-block:: bash
sudo make install # Installs to /usr/local/bin
Abilita e avvia l'attivazione via socket:
.. code-block:: bash
systemctl --user enable --now genclave-ssh.socket genclave-gpg.socket
Inizializza il tuo vault e verifica lo stato:
.. code-block:: bash
ge status
Pre-autentica la cache per script automatizzati o sessioni headless:
.. code-block:: bash
ge unlock
echo "$PIN" | ge unlock --stdin
ge lock
Passkey WebAuthn nel Browser:
.. code-block:: bash
Gestisci i segreti crittografati nell'archivio di configurazione supportato da TPM:
.. code-block:: bash
ge set-secret my-api-key "super-secret-value" ge get-secret my-api-key