Eliminare le chiavi private SSH dal computer per spostarle in hardware protetto
Nell’articolo “I deleted all my SSH keys” si parla di come eliminare le chiavi private SSH dal disco del computer e spostarle in dispositivi hardware protetti.
Quando si usa SSH per collegarsi a un server Linux, normalmente c’è una coppia di chiavi:
id_ed25519: chiave privata, che deve rimanere segreta.
id_ed25519.pub: chiave pubblica, distribuibile liberamente.
Per collegarsi a un server SSH utilizza la chiave privata per l’autorizzazione ad accedere. Il problema è che la chiave privata si trova sul disco.
Memorizzare la chiave privata sul PC comporta alcuni rischi, per esempio se qualcuno compromette il computer, potrebbe rubarla oppure la chiave può finire accidentalmente in un backup, repository Git o archivio, e potrebbe finire per essere esposta o pubblicata.
La soluzione più banale e tradizionale consiste nel proteggere la chiave privata con una passphrase.
Ma l’autore dell’articolo vuole fare un passo ulteriore: l’idea base è che le chiavi private non devono più stare sul disco.
Questo è possibile usando un dispositivo hardware che custodisca la chiave privata.
L’autore dell’articolo, Alex Haydock, confronta tre tecnologie: YubiKey, TPM e Apple Secure Enclave.
Nel caso di YubiKey, il computer chiede al dispositivo hardware di effettuare un’operazione crittografica. La differenza fondamentale è che il computer non deve necessariamente conoscere la chiave privata.
YubiKey è una chiavetta USB con funzionalità crittografiche integrate. È probabilmente la soluzione più interessante dell’articolo perchè multipiattaforma.
OpenSSH supporta direttamente le chiavi hardware come YubiKey attraverso il formato ed25519-sk (dove il suffisso sk significa Security Key mentre ed25519 è uno schema di firma digitale ad alte prestazioni basato sulla crittografia a curva ellittica).
Con YubiKey, la chiave viene generata e custodita nella YubiKey. Il computer che conserva un riferimento (un file privato che sta sul computer che non contiene effettivamente la chiave privata ed è sostanzialmente un riferimento alla credenziale hardware) alla chiave consente di autenticarsi tramite la YubiKey che esegue la firma crittografica. Si può configurare la richiesta di un tocco fisico sulla chiavetta ossia aggiungere l’obbligo di premere sull’area sensibile al tocco della chiavetta in fase di autenticazione.
Perché è interessante? Anche se qualcuno riesce a ottenere accesso root al computer e copiare tutti i file, non può semplicemente copiare la chiave privata e utilizzarla altrove. Naturalmente, se il computer è compromesso mentre la YubiKey è collegata, un attaccante potrebbe comunque tentare di utilizzare la chiave attraverso il computer stesso.
L’altro metodo è TPM (Trusted Platform Module), che è un componente di sicurezza integrato in tutti i pc moderni.
Il TPM può memorizzare i segreti crittografici, effettuare operazioni crittografiche e proteggere determinate chiavi.
L’autore dell’articolo utilizza ssh-tpm-agent con TPM. Il funzionamento è diverso rispetto alla YubiKey in quanto viene generata una chiave SSH che viene protetta attraverso il TPM. Sul disco rimane un file con estensione .tpm e per utilizzare la chiave, il software interagisce con il TPM.
Qui c’è possibile notare una differenza importante rispetto alla chiavetta USB, infatti il materiale della chiave privata è conservato sul disco in forma cifrata.
Il TPM serve a proteggerlo e consentirne l’utilizzo, quindi non è proprio la stessa cosa di una chiave salvata nella YubiKey.
Il vantaggio è che non si deve acquistare necessariamente un dispositivo aggiuntivo: molti computer hanno già un TPM.
Apple Secure Enclave, invece, è il sottosistema hardware di sicurezza presente nei dispositivi Apple. L’autore sfrutta questa tecnologia per creare identità SSH protette dal Secure Enclave. La particolarità è che si può integrare l’autenticazione con Touch ID.
In questo caso, la chiave viene gestita dal Secure Enclave, il materiale privato non viene esportato normalmente e l’autenticazione può richiedere la biometria.
OpenSSH può utilizzare questa identità attraverso il supporto Smart Card di macOS.
C’è però una limitazione interessante: l’autore segnala problemi nell’utilizzo di queste chiavi quando il Mac viene utilizzato in modalità clamshell (chiuso e collegato a monitor esterno).
Apple Secure Enclave così come TPM può essere utilizzato solo se il sistema lo integra. Chiaro che non è possibile usare Apple Secure Enclave su PC.
Ma è davvero necessario l’uso di una di queste tre soluzione? Questa è probabilmente la parte più importante dell’articolo perché l’autore stesso ammette che probabilmente non è necessario per la maggior parte delle persone.
Una normale chiave SSH protetta da una buona passphrase è già una soluzione ragionevolmente sicura.
Per esempio col comando
ssh-keygen -t ed25519
Viene richiesta una passphrase che protegge la chiave privata e si può anche usare ssh-agent per evitare di inserirla continuamente.
Il vantaggio delle soluzioni hardware è soprattutto la protezione contro il furto del materiale crittografico.
E’ facile capire che queste 3 proposte hanno alcuni svantaggi: un malware potrebbe utilizzare una chiave hardware collegata al computer. La perdita della YubiKey fa perdere l’accesso se non c’è un “duplicato”. Nel caso del TPM se viene resettato o cambia l’hardware, si potrebbero avere problemi ad accedere alle chiavi.
Quindi in questi casi bisogna gestire correttamente backup e chiavi di emergenza.

