Il protocollo SSH supporta molti metodi di autenticazione. Probabilmente uno dei più importanti è l’autenticazione a chiave pubblica per connessioni interattive e automatiche.
Autenticazione a chiave pubblica – cosa e perché?
La motivazione per usare l’autenticazione a chiave pubblica rispetto alle semplici password è la sicurezza. L’autenticazione a chiave pubblica fornisce una forza crittografica che anche le password estremamente lunghe non possono offrire. Con SSH, l’autenticazione a chiave pubblica migliora notevolmente la sicurezza in quanto libera gli utenti dal ricordare password complicate (o peggio ancora, scriverle).
In aggiunta alla sicurezza l’autenticazione a chiave pubblica offre anche vantaggi di usabilità – permette agli utenti di implementare il single sign-on attraverso i server SSH a cui si connettono. L’autenticazione a chiave pubblica permette anche il login automatico, senza password, che è un fattore chiave per gli innumerevoli processi di automazione sicuri che vengono eseguiti all’interno delle reti aziendali a livello globale.
La crittografia a chiave pubblica ruota intorno a un paio di concetti chiave. Le sezioni seguenti li spiegano brevemente.
Crittografia asimmetrica – Algoritmi
Come ogni schema di crittografia, l’autenticazione a chiave pubblica si basa su un algoritmo. Ci sono diversi algoritmi ben studiati, sicuri e affidabili – i più comuni sono RSA e DSA. A differenza degli algoritmi di crittografia comunemente conosciuti (simmetrici o a chiave segreta) gli algoritmi di crittografia a chiave pubblica lavorano con due chiavi separate. Queste due chiavi formano una coppia che è specifica per ogni utente.
Coppia di chiavi – pubblica e privata
Nel caso di utilizzo dell’autenticazione a chiave pubblica SSH, è piuttosto tipico che gli utenti creino (cioè forniscano) la coppia di chiavi per se stessi. Le implementazioni SSH includono utility facilmente utilizzabili per questo (per maggiori informazioni vedi ssh-keygen e ssh-copy-id).
Ogni coppia di chiavi SSH include due chiavi:
-
Una chiave pubblica che è copiata sul/i server SSH. Chiunque abbia una copia della chiave pubblica può criptare i dati che possono essere letti solo dalla persona che possiede la chiave privata corrispondente. Una volta che un server SSH riceve una chiave pubblica da un utente e considera la chiave affidabile, il server segna la chiave come autorizzata nel suo file authorized_keys. Tali chiavi sono chiamate chiavi autorizzate.
-
Una chiave privata che rimane (solo) all’utente. Il possesso di questa chiave è la prova dell’identità dell’utente. Solo un utente in possesso di una chiave privata che corrisponde alla chiave pubblica del server potrà autenticarsi con successo. Le chiavi private devono essere conservate e trattate con cura, e nessuna copia della chiave privata deve essere distribuita. Le chiavi private usate per l’autenticazione dell’utente sono chiamate chiavi di identità.
Impostare l’autenticazione a chiave pubblica per SSH
I seguenti semplici passi sono necessari per impostare l’autenticazione a chiave pubblica (per SSH):
-
La coppia di chiavi viene creata (tipicamente dall’utente). Questo è tipicamente fatto con ssh-keygen.
-
La chiave privata rimane all’utente (e solo lì), mentre la chiave pubblica è inviata al server. Tipicamente con l’utilità ssh-copy-id.
-
Il server memorizza la chiave pubblica (e la “contrassegna” come autorizzata).
-
Il server ora permetterà l’accesso a chiunque possa dimostrare di avere la chiave privata corrispondente.
Gestione della chiave privata
È estremamente importante che la privacy della chiave privata sia custodita attentamente. Per la maggior parte dei casi d’uso guidati dall’utente, questo si ottiene criptando la chiave privata con una passphrase.
Quando una chiave privata è necessaria, all’utente viene chiesto di fornire la passphrase in modo che la chiave privata possa essere decriptata. La gestione delle passphrase può essere automatizzata con un agente SSH.
Nella maggior parte dei casi d’uso automatizzati (script, applicazioni, ecc.) le chiavi private non sono protette e un’attenta pianificazione e pratiche di gestione delle chiavi devono essere esercitate per rimanere sicure e conformi ai mandati normativi.
Dal caos all’ordine – Gestione delle chiavi SSH
In ambienti in cui gli utenti sono liberi di auto-provisionare le chiavi di autenticazione, è comune che nel corso degli anni il numero di chiavi fornite e distribuite cresca molto grande. Poiché non c’è modo di scoprire chi possiede o ha originariamente fornito una determinata chiave pubblica trovata su un server, e poiché queste chiavi non scadono mai, il vero stato del controllo degli accessi in grandi ambienti non gestiti può essere molto poco chiaro o del tutto caotico.
Gestire e controllare l’accesso ai server e ad altre infrastrutture IT è un requisito legale per qualsiasi impresa che opera in mercati regolamentati come la finanza, l’energia, la sanità o il commercio. Queste imprese hanno bisogno di impiegare soluzioni per la gestione delle chiavi SSH per controllare l’accesso concesso dalle chiavi SSH.