Certificato digitale

Da Wikipedia, l'enciclopedia libera.
Diagramma: come viene realizzato un certificato digitale

Nella crittografia asimmetrica un certificato digitale è un documento elettronico che attesta l'associazione univoca tra una chiave pubblica e l'identità di un soggetto (una persona, una società, un computer, etc) che dichiara di utilizzarla nell'ambito delle procedure di cifratura asimmetrica e/o autenticazione tramite firma digitale.

Il certificato digitale contiene informazioni sulla chiave, informazioni sull'identità del proprietario (denominato oggetto) e la firma digitale di un'entità che ha verificato i contenuti del certificato (denominato emittente). Se la firma è valida e il software che esamina il certificato si affida all'emittente, allora può utilizzare tale chiave per comunicare in modo sicuro con il soggetto del certificato. Nella crittografia email, nella firma di codice e nei sistemi di firma elettronica, un soggetto del certificato è tipicamente una persona o un'organizzazione

Tale certificato, fornito da un ente terzo fidato e riconosciuto come autorità di certificazione (CA), è a sua volta autenticato per evitarne la falsificazione sempre attraverso firma digitale ovvero cifrato con la chiave privata dell'associazione la quale fornisce poi la rispettiva chiave pubblica associata per verificarlo.

Il formato più comune per i certificati di chiave pubblica è definito da X.509. Poiché X.509 è molto generale, il formato è ulteriormente vincolato dai profili definiti per alcuni casi di utilizzo, come ad esempio l'infrastruttura di chiave pubblica (X.509) come definito in RFC 5280.

Il certificato digitale è impossibile da duplicare o falsificare e può essere facilmente verificato online (o via cellulare) dal possibile acquirente. Il "costo marginale di produzione" del certificato digitale è vicino allo zero, il che vuol dire che sarebbe possibile proteggere anche oggetti di prezzo unitario relativamente basso.[1]

Descrizione[modifica | modifica wikitesto]

Scopo[modifica | modifica wikitesto]

I certificati sono utili per la crittografia a chiave pubblica quando usata su larga scala. Infatti, scambiare la chiave pubblica in modo sicuro tra gli utenti diventa impraticabile, se non impossibile, quando il numero di utenti comincia a crescere. I certificati digitali sono una soluzione per superare questa difficoltà.

Lo scopo del certificato digitale è quello di garantire che una chiave pubblica sia associata alla vera identità del soggetto che la rivendica come propria.

In un sistema a crittografia asimmetrica ciò può essere molto importante: infatti, ogni messaggio crittografato con una data chiave pubblica può essere decrittato solo da chi possiede la relativa chiave privata (caso della cifratura asimmetrica); per cui, se siamo sicuri che la chiave pubblica appartiene a "Mario Rossi" allora siamo anche sicuri che solo "Mario Rossi" potrà leggere i messaggi crittati con quella chiave pubblica in quanto possessore della rispettiva chiave privata.

Vale inoltre anche il viceversa: se possiamo decriptare un messaggio con quella chiave pubblica allora siamo sicuri che quel messaggio è stato criptato da "Mario Rossi" garantendone l'autenticazione (caso della firma digitale) (anche se ciò non implica che quel messaggio sia stato inviato da "Mario Rossi" cioè sia passibile di attacchi di tipo man in the middle).

Funzionamento[modifica | modifica wikitesto]

In principio quindi se Mario Rossi voleva inviare/ricevere un messaggio cifrato oppure voleva firmare digitalmente un documento doveva divulgare la sua chiave pubblica agli altri attori della comunicazione. Ogni persona che la possedeva poteva inviargli o ricevere da lui messaggi sicuri tramite cifratura asimmetrica con quella chiave pubblica oppure ricevere da lui documenti firmati con la chiave privata per poi verificare la firma con la suddetta chiave pubblica; tuttavia qualsiasi individuo poteva divulgare una differente chiave pubblica (di cui conosceva la relativa chiave privata) e dichiarare che era la chiave pubblica di Mario Rossi.

Per evitare questo problema, Mario Rossi inserisce allora la sua chiave pubblica in un certificato firmato da una terza parte fidata ("trusted third party"): tutti quelli che riconoscono questa terza parte devono semplicemente controllarne la firma per decidere se la chiave pubblica appartiene veramente a Mario Rossi.

In una PKI, la terza parte fidata sarà un'autorità di certificazione che apporrà anch'essa una firma sul certificato per validarlo. Nel web of trust, invece, la terza parte può essere un utente qualsiasi (ovvero la firma è quella o dello stesso utente (un'auto-certificazione) oppure di altri utenti ("endorsements")) e sarà compito di chi vuole comunicare con Mario Rossi decidere se questa terza parte è abbastanza fidata.

In entrambi i casi, la firma certifica che la chiave pubblica dichiarata nel certificato appartiene al soggetto descritto dalle informazioni presenti sul certificato stesso (nome, cognome, indirizzo abitazione, indirizzo IP, etc.).

Tipi di certificato[modifica | modifica wikitesto]

TLS/SSL server certificato[modifica | modifica wikitesto]

Il TLS (precedentemente noto come SSL), un server è richiesto per presentare un certificato come parte della configurazione iniziale della connessione.

Un client che si connette a tale server eseguirà l'algoritmo di convalida del percorso di certificazione:

  •  L'oggetto del certificato corrisponde al nome host a cui il client cerca di connettersi
  •  Il certificato è firmato da un'autorità di certificazione attendibile.

Il nome host principale (nome di dominio del sito) viene elencato come Nome comune nel campo Oggetto del certificato. Un certificato può essere valido per più nomi host (più siti web). Tali certificati sono comunemente denominati certificati SAN (Subject Alternative Name) o certificati di comunicazione unificata (certificati UCC). Questi certificati contengono il campo Alternative Name, anche se molte CA inseriranno anche nel campo Nome Oggetto comune per la compatibilità all'indietro. Se alcuni dei nomi host contengono un asterisco (*), un certificato può anche essere chiamato un certificato wildcard.

Un server TLS può essere configurato con un certificato auto-firmato. In questo caso, i client non saranno in genere in grado di verificare il certificato e terminano la connessione a meno che il controllo dei certificati non sia disattivati.

TLS/SSL client certificato[modifica | modifica wikitesto]

I certificati client sono meno comuni dei certificati server e vengono utilizzati per autenticare il client che si connette a un servizio TLS, ad esempio per fornire un controllo di accesso. Poiché la maggior parte dei servizi fornisce l'accesso agli individui, piuttosto che ai dispositivi, la maggior parte dei certificati client contengono un indirizzo email o un nome personale piuttosto che un nome host. Inoltre, poiché l'autenticazione è di solito gestita dal provider di servizi, i certificati client non vengono generalmente rilasciati da una CA pubblica che fornisce certificati server. Invece, l'operatore di un servizio che richiede certificati client generalmente gestisce la propria CA interna per rilasciarli. I certificati client sono supportati da molti browser Web, ma la maggior parte dei servizi utilizza password e cookie per autenticare gli utenti, anziché i certificati client.I certificati client sono più comuni nei sistemi RPC, in cui vengono utilizzati per autenticare i dispositivi per garantire che solo dispositivi autorizzati possano effettuare chiamate RPC.

Struttura dei Certificati[modifica | modifica wikitesto]

La struttura di un certificato digitale X.509 v3 è la seguente:

  • Certificato
    • Versione
    • Numero seriale
    • ID dell'algoritmo
    • Ente emettitore
    • Validità
      • Non prima
      • Non dopo
    • Soggetto
    • Informazioni sulla chiave pubblica del soggetto
      • Algoritmo per l'utilizzo della chiave pubblica
      • Chiave pubblica
    • Codice identificativo univoco dell'emittente (facoltativo)
    • Codice identificativo univoco del soggetto (facoltativo)
    • Estensioni (facoltativo)
      • ...
  • Algoritmo di firma del certificato
  • Firma del certificato[2]

Email certificata[modifica | modifica wikitesto]

Nel protocollo S / MIME per l'e-mail protetta, i mittenti devono scoprire quale è la chiave pubblica da utilizzare per un determinato destinatario. Ottengono queste informazioni da un certificato di posta elettronica. Alcune autorità di certificazione pubbliche di fiducia forniscono certificati di posta elettronica, ma più comunemente S / MIME viene utilizzato quando si comunica all'interno di un'organizzazione specifica e tale organizzazione gestisce la propria CA, che è attendibile dai partecipanti a quel sistema di posta elettronica.

Certificato di firma del codice[modifica | modifica wikitesto]

I certificati possono anche essere utilizzati per convalidare le firme sui programmi per garantire che non siano stati manomessi durante la consegna.

Authenticode è un esempio di uno schema di firma di codice.

Certificato Qualificato[modifica | modifica wikitesto]

Un certificato qualificato è un certificato che identifica un individuo, tipicamente per scopi di firma elettronica. Questi sono comunemente usati in Europa, dove la normativa eIDAS standardizza e richiede il loro riconoscimento.

Certificato Intermedio[modifica | modifica wikitesto]

Un certificato intermedio è utilizzato per firmare altri certificati, che non sono auto-firmati. Un certificato intermedio deve essere firmato da un altro certificato intermedio o un certificato di origine.

Certificato auto-firmato[modifica | modifica wikitesto]

Un certificato con un soggetto che corrisponde all'emittente e una firma che può essere verificata con la propria chiave pubblica. La maggior parte dei tipi di certificato può essere autoscritta. I certificati auto-firmati sono anche spesso denominati certificati petroliferi per sottolineare la loro non fiducia.

Contenuto di un certificato[modifica | modifica wikitesto]

Un certificato tipicamente include:

  • una chiave pubblica;
  • dei dati identificativi, che possono riferirsi ad una persona, un computer o un'organizzazione;
  • un periodo di validità;
  • l'URL della lista dei certificati revocati (CRL);

Il tutto è firmato da una terza parte fidata.

Validità e liste di revoca[modifica | modifica wikitesto]

Un certificato solitamente ha un intervallo temporale di validità, al di fuori del quale deve essere considerato non valido. Un certificato può essere revocato se si scopre che la relativa chiave privata è stata compromessa, oppure se la relazione specificata nello stesso (cioè la relazione tra un soggetto ed una chiave pubblica) è incorretta o è cambiata; questo potrebbe succedere se, per esempio, una persona cambia lavoro oppure indirizzo. Ciò significa che un utente oltre a controllare che il certificato sia fidato (verificare che sia firmato da una CA riconosciuta) e non sia scaduto dovrebbe controllare anche che non sia stato revocato. Questo può essere fatto attraverso la lista dei certificati revocati (CRL). Una funzione chiave della PKI è proprio quella di tenere aggiornata la CRL. Un altro modo per verificare la validità di un certificato è quello di interrogare la CA attraverso un protocollo specifico come, per esempio, Online Certificate Status Protocol (OCSP).

Standard di certificati[modifica | modifica wikitesto]

Lo standard più comune per i certificati è ITU-T X.509. X.509 è stato adattato ad Internet dal gruppo di lavoro PKIX dell'IETF (IETF PKIX Working Group).

Certificati e sicurezza dei siti web[modifica | modifica wikitesto]

L'uso più comune dei certificati digitali è per l'accesso ai siti web via HTTPS, ossia HTTP su protocollo sicuro SSL. Attraverso i certificati possiamo accertarci che il server a cui ci si è connessi è autentico, ovvero è effettivamente quello che dichiara di essere. Il protocollo SSL prevede che, alla connessione, il server fornisca il proprio certificato digitale; se il certificato digitale è firmato da un'autorità di certificazione da noi riconosciuta, e la decifratura della firma del certificato ha buon fine, allora possiamo utilizzare la chiave pubblica presente nello stesso per avviare una comunicazione sicura.

Voci correlate[modifica | modifica wikitesto]

Collegamenti esterni[modifica | modifica wikitesto]

Controllo di autoritàGND: (DE4814408-3
  1. ^ Contro i falsi, i certificati. Digitali, su punto-informatico.it. URL consultato il 05 dicembre 2017.
  2. ^ Sicurezza/CertificatiX509 - Wiki di ubuntu-it, su wiki.ubuntu-it.org. URL consultato il 05 dicembre 2017.