Un'impronta digitale della chiave pubblica è un identificatore breve e univoco derivato da una chiave pubblica crittografica utilizzando un hash funzione.
Cos'è l'impronta digitale di una chiave pubblica?
Un'impronta digitale di chiave pubblica è una rappresentazione condensata di una chiave pubblica crittografica generata utilizzando una funzione hash sicura. Fornisce un identificatore univoco e facilmente verificabile per una chiave pubblica, consentendo agli utenti di confermare la sua autenticità senza gestire la chiave completa. L'impronta digitale è in genere prodotta eseguendo l'hashing dei dati della chiave pubblica con algoritmi come SHA-256, MD5o SHA-1, a seconda del sistema o del protocollo utilizzato.
Questo meccanismo è ampiamente utilizzato in crittografico applicazioni come SSH, PGP, TLS e certificati X.509, dove la verifica dell'autenticità della chiave è essenziale per una comunicazione sicura. Quando due parti si scambiano chiavi pubbliche, possono confrontare le impronte digitali per garantire che la chiave non sia stata alterata o sostituita da un aggressore. Poiché un'impronta digitale è significativamente più corta della chiave originale, semplifica la verifica manuale, specialmente in scenari in cui gli utenti devono confermare verbalmente l'integrità della chiave o confrontarla con una fonte attendibile.
Perché è utile un'impronta digitale con chiave pubblica?
Un'impronta digitale della chiave pubblica è utile perché fornisce un identificatore compatto e univoco per una chiave pubblica, consentendo agli utenti di verificarne l'autenticità senza dover confrontare l'intera chiave. Ciò è particolarmente importante nelle applicazioni crittografiche in cui la sicurezza dipende dall'assicurare che una chiave pubblica non sia stata manomessa o sostituita da un aggressore.
Utilizzando un'impronta digitale, gli utenti possono confermare rapidamente che stanno comunicando con la persona interessata, riducendo il rischio di attacchi man-in-the-middle. È particolarmente utile in scenari in cui le chiavi pubbliche vengono scambiate manualmente, come la verifica delle chiavi host SSH, la firma delle chiavi PGP o l'autenticazione dei certificati TLS. Poiché un'impronta digitale è molto più corta di una chiave pubblica completa, semplifica la verifica, sia che venga visualizzata su un sito Web, condivisa su un canale sicuro o confermata verbalmente.
Inoltre, le impronte digitali aiutano con gestione delle chiavi fornendo un modo leggibile dall'uomo per fare riferimento e distinguere tra diverse chiavi pubbliche, rendendo più facile tracciare e convalidare le chiavi su vari sistemi. L'efficacia di un'impronta digitale dipende dalla forza della funzione hash sottostante, quindi le implementazioni moderne utilizzano algoritmi sicuri come SHA-256 per prevenire gli attacchi di collisione.
Casi d'uso dell'impronta digitale a chiave pubblica
Un'impronta digitale a chiave pubblica viene utilizzata in varie applicazioni crittografiche per verificare l'autenticità delle chiavi pubbliche e impedire l'accesso non autorizzato. Di seguito sono riportati i principali casi d'uso in cui le impronte digitali a chiave pubblica migliorano la sicurezza e l'affidabilità nelle comunicazioni digitali:
- Verifica della chiave host SSH. Quando ci si collega a un telecomando server tramite SSH per la prima volta, il client riceve il serverimpronta digitale della chiave pubblica. L'utente può confrontare questa impronta con una fonte attendibile per assicurarsi di connettersi alla corretta server e non un impostore. Se l'impronta digitale cambia inaspettatamente, potrebbe indicare una minaccia alla sicurezza, come un attacco man-in-the-middle.
- Autenticazione tramite chiave PGP. In Pretty Good Privacy (PGP) e OpenPGP, le impronte digitali della chiave pubblica vengono utilizzate per verificare l'autenticità di crittografia e chiavi di firma. Gli utenti confrontano manualmente le impronte digitali prima di fidarsi di una chiave, assicurandosi che i messaggi e i file siano crittografati in modo sicuro o firmati dalla parte interessata. Ciò è fondamentale per la crittografia delle e-mail e la comunicazione sicura tra individui o organizzazioni.
- Convalida dei certificati TLS e SSL. Le impronte digitali della chiave pubblica aiutano a verificare l'autenticità di SSL / TLS certificati utilizzati in HTTPS connessioni. Mentre browser web verifica automaticamente i certificati rispetto alle autorità attendibili; amministratori e sviluppatori possono confrontare manualmente le impronte digitali dei certificati per rilevare potenziali spoofing, certificati non configurati correttamente o autorità di certificazione compromesse.
- Firma sicura di file e software. Gli sviluppatori e le organizzazioni firmano software, aggiornamenti e documenti utilizzando chiavi crittografiche. Le impronte digitali delle chiavi pubbliche aiutano gli utenti a verificare che la chiave di firma appartenga allo sviluppatore ufficiale, impedendo l'installazione di software dannoso camuffati da aggiornamenti legittimi. Questo è comunemente usato nei gestori di pacchetti, distribuzioni open sourcee firma dell'applicazione.
- Scambio di chiavi VPN e WireGuard. In VPN protocolli come WireGuard, le impronte digitali a chiave pubblica vengono utilizzate per confermare l'autenticità dei dispositivi peer. Prima di stabilire una connessione sicura, gli utenti confrontano le impronte digitali per assicurarsi di connettersi al dispositivo corretto, impedendo l'accesso non autorizzato alle reti private.
- Sicurezza della blockchain e dei portafogli crittografici. I wallet crittografici utilizzano impronte digitali a chiave pubblica per identificare e verificare la proprietà di asset digitali. Gli utenti possono effettuare un controllo incrociato delle impronte digitali per confermare che stanno inviando transazioni all'indirizzo wallet corretto, riducendo il rischio di frode o transazioni mal indirizzate.
Come posso creare un'impronta digitale della chiave pubblica?
Un'impronta digitale di chiave pubblica è una rappresentazione unica e compatta di una chiave pubblica, generata tramite l'hashing della chiave tramite una funzione hash crittografica. Questa impronta digitale viene utilizzata per verificare l'autenticità della chiave pubblica nelle comunicazioni sicure. Il processo varia a seconda del sistema crittografico in uso, ma i passaggi generali sono i seguenti:
1. Genera una chiave pubblica (se non è già disponibile)
Prima di creare un'impronta digitale, hai bisogno di una chiave pubblica. Se non ne hai una, genera una coppia di chiavi usando uno strumento crittografico come OpenSSH, GnuPG o OpenSSL.
- Per le chiavi SSH:
ssh-keygen -t rsa -b 4096
Questo genera una chiave pubblica (id_rsa.pub) nella directory .ssh.
- Per le chiavi PGP:
gpg --full-generate-key
Questo crea una nuova coppia di chiavi PGP.
- Per i certificati SSL/TLS:
openssl req -new -x509 -key private_key.pem -out certificate.pem
Questo genera un certificato autofirmato.
2. Calcola l'impronta digitale
Una volta che la chiave pubblica è disponibile, calcola la sua impronta digitale utilizzando un hashing algoritmo.
- Per impronte digitali della chiave pubblica SSH (formato predefinito SHA-256):
ssh-keygen -lf ~/.ssh/id_rsa.pub
- Esempio di output:
2048 SHA256:ZJv7x9Oa3W2g5KcJ+Q1Ht6eAlRrUv2Lg4EhYd2dTpoA user@hostname
- Per ottenere un'impronta digitale MD5:
ssh-keygen -E md5 -lf ~/.ssh/id_rsa.pub
- Per le impronte digitali della chiave pubblica PGP:
gpg --fingerprint [email protected]
- Esempio di output:
pub rsa4096 2024-03-10 [SC]
9E6C 9B5F A99D 45DA D4C7 3E14 92C3 7F32 A6F1 8D2B
- Per le impronte digitali del certificato TLS/SSL (SHA-256):
openssl x509 -noout -fingerprint -sha256 -in certificate.pem
- Esempio di output:
SHA256 Fingerprint=3D:2B:45:A6:F3:91:82:12:D5:88:1F:...:97:6F:43
3. Verificare l'impronta digitale
Una volta generata, confronta l'impronta digitale con una copia attendibile per confermare l'autenticità della chiave pubblica. Questo passaggio è essenziale nella verifica dell'host SSH, nello scambio di chiavi PGP e nella convalida del certificato TLS.
Come posso visualizzare la chiave pubblica in Fingerprint?
Un'impronta digitale a chiave pubblica è una rappresentazione hash di una chiave pubblica e, sebbene fornisca un identificatore univoco per la verifica, non è direttamente reversibile alla chiave pubblica completa. Tuttavia, se hai accesso al sistema in cui è archiviata la chiave, puoi recuperare e visualizzare la chiave pubblica originale associata a una determinata impronta digitale. Il processo varia a seconda dello strumento crittografico e del tipo di chiave utilizzati. I passaggi includono:
1. Visualizzazione della chiave pubblica SSH dall'impronta digitale
Se hai un file di chiave pubblica e vuoi confermarne l'impronta digitale:
- Controlla l'impronta digitale di una chiave pubblica SSH:
ssh-keygen -lf ~/.ssh/id_rsa.pub
- Esempio di output:
2048 SHA256:ZJv7x9Oa3W2g5KcJ+Q1Ht6eAlRrUv2Lg4EhYd2dTpoA user@hostname
- Se hai bisogno di confrontare le impronte digitali, puoi aprire manualmente il file della chiave pubblica:
cat ~/.ssh/id_rsa.pub
2. Visualizzazione della chiave pubblica PGP dall'impronta digitale
Se hai una chiave PGP e vuoi abbinare un'impronta digitale a una chiave pubblica:
- Elenca le chiavi pubbliche PGP con le relative impronte digitali:
gpg --fingerprint
- Esempio di output:
pub rsa4096 2024-03-10 [SC]
9E6C 9B5F A99D 45DA D4C7 3E14 92C3 7F32 A6F1 8D2B
uid John Doe <[email protected]>
- Per visualizzare la chiave pubblica completa associata a un'impronta digitale:
gpg --export -a 9E6C9B5FA99D45DAD4C73E1492C37F32A6F18D2B
Verrà generata la chiave pubblica protetta da ASCII.
3. Visualizzazione della chiave pubblica del certificato SSL/TLS dall'impronta digitale
Se hai un certificato SSL/TLS e devi estrarre la sua chiave pubblica:
- Controlla l'impronta digitale di un certificato:
openssl x509 -noout -fingerprint -sha256 -in certificate.pem
- Estrarre e visualizzare la chiave pubblica dal certificato:
openssl x509 -in certificate.pem -noout -pubkey
Verrà generata la chiave pubblica completa in formato PEM.
4. Abbinamento di una chiave pubblica a un'impronta digitale
Poiché le impronte digitali vengono generate utilizzando funzioni hash crittografiche, non è possibile ricavare una chiave pubblica completa da una sola impronta digitale. Invece, è necessario avere accesso ai file chiave originali e confrontare le loro impronte digitali utilizzando i metodi sopra indicati.
L'impronta digitale della chiave pubblica è sicura?
Sì, un'impronta digitale a chiave pubblica è generalmente sicura e protetta finché viene generata utilizzando una funzione hash crittografica forte, come SHA-256. Fornisce un identificatore univoco e compatto per una chiave pubblica, rendendo più facile la verifica dell'autenticità senza esporre la chiave completa. Tuttavia, la sua sicurezza dipende dall'integrità dell'algoritmo hash sottostante: algoritmi più vecchi come MD5 e SHA-1 sono vulnerabili ad attacchi di collisione, in cui chiavi diverse potrebbero produrre la stessa impronta digitale.
Per garantire la sicurezza, gli utenti dovrebbero sempre verificare le impronte digitali tramite un canale attendibile prima di accettare una chiave pubblica, poiché un aggressore potrebbe altrimenti sostituire una chiave non autorizzata con un'impronta digitale corrispondente nei casi in cui vengono utilizzati algoritmi di hashing deboli.