# 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 organizzazione, un hardware, un servizio, un software, un file, 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 soggetto) e la firma digitale di un'entità che ha verificato i contenuti del certificato (denominato emittente). Se la firma è valida e l'applicazione 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 (trusted) come autorità di certificazione (CA), è a sua volta autenticato per evitarne la falsificazione sempre attraverso firma digitale ovvero cifrato con la chiave privata dell'organizzazione stessa (CA) 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.

## Descrizione
### Patent

Il Brevetto Italiano con estensione Europea di questa nuova metodologia di certificazione digitale è stata depositata con priorità dal 20/02/2012 e Patent definitivo rilasciato 26/06/2020.

### Sostenibilità

Promuove politiche di sostenibilità ambientale per ridurre e addirittura eliminare l’uso della carta contribuendo alla gestione responsabile del patrimonio forestale globale.

### Trust

Nella certificazione digitale e argomenti correlati, si usa spesso il termine trust. Trust, in inglese informatico, significa genericamente "fiducia" o "accordo fiduciario". Trusted significa "fidato" nel senso di "affidabile, garantito, riconosciuto". A volte i testi originali in inglese vengono resi in italiano senza tradurre trust oppure lasciandolo in inglese. In pratica, trust è sia il concetto che la metodologia che permettono di essere "fiduciosi" (perché garantito dall'autorità a capo del trust) della sicurezza del sistema (operazione, firma, driver, comunicazione, rete, software, ecc.). Ad esempio, i fornitori di servizi fiduciari (secondo l'eIDAS) sono quelli che erogano, appunto, servizi di tipo trust (certificati, conservazione a norma, firme elettroniche o firme digitali, sigilli elettronici o marca temporale elettronica, servizi di consegna elettronica certificata, etc).

### Scopo

Lo scopo principale di un certificato digitale è crittografare comunicazioni o informazioni o, meglio, fornire gli elementi fidati (trusted) che presiedono il processo di cifratura. 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 decriptato 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

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
### Certificato TLS/SSL server

Il TLS (precedentemente noto come SSL) è un protocollo usato dal client per richiedere al server di 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). 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 disattivato.

### Certificato TLS/SSL client

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 invece fornisce certificati server. 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

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

### Email certificata

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

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

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

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

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

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

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

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).

## Applicazioni

I certificati digitali si utilizzano come uno dei metodi per implementare la sicurezza. Di seguito alcuni di questi utilizzi.

### Software

Software quali i firmware, i sistemi operativi e loro componenti chiave come i boot loader, le varie applicazioni di sicurezza sono dotati di certificato digitale che ne assicura l'autenticità e fidatezza.

### Siti web

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 va a buon fine, allora possiamo utilizzare la chiave pubblica presente nello stesso per avviare una comunicazione sicura.

### Connessioni di rete

Per garantire che la connessione di rete sia cifrata si utilizzano i certificati digitali. Il protocollo di rete Kerberos è, ad esempio, garantito da un certificato digitale. Diverse organizzazioni pubbliche e private provvedono a far utilizzare certificati digitali propri (cioè acquisiti da una CA e fatti intestare alla loro ragione sociale) per la connessione wireless.

### Posta elettronica certificata

I provider che forniscono il servizio PEC sigillano ciascun messaggio con il relativo certificato.

### Firma elettronica avanzata

La Firma elettronica avanzata e le sue derivazioni basano la loro caratteristica di autenticità su un certificato digitale.

### Marca temporale

La marca temporale è un servizio che utilizza un certificato digitale (sigillo di data certa).

### Timbro digitale

Accorgimento della PA italiana (seppur basata su metodologie internazionali), il timbro digitale ricorre ad un certificato digitale per garantire la validità del documento stampato (su carta).