# Infrastruttura a chiave pubblica

In crittografia una infrastruttura a chiave pubblica, in inglese public key infrastructure (PKI), è un insieme di processi e mezzi tecnologici che consentono a terze parti fidate di verificare e/o farsi garanti dell'identità di un utente, oltre che di associare una chiave pubblica a un utente, normalmente per mezzo di software distribuito in modo coordinato su diversi sistemi. Le chiavi pubbliche tipicamente assumono la forma di certificati digitali.
Il termine PKI viene usato per indicare sia l'autorità di certificazione (certification authority, CA) e i relativi accordi, sia, in senso più esteso, l'uso di algoritmi crittografici a chiave pubblica nelle comunicazioni elettroniche. L'uso del termine nell'ultimo senso è errato in quanto una PKI non necessariamente richiede l'uso di algoritmi a chiave pubblica. La struttura della PKI non riguarda solo la CA, ma anche:
* la registration authority, attraverso la quale gli utenti si rivolgono per richiedere la certificazione delle chiavi, identificandosi e fornendo almeno la chiave pubblica e l'indirizzo di posta elettronica.
* il certificate server ovvero un servizio di directory accessibile mediante un “operational protocol”, tipicamente LDAP; esso è principalmente una lista di pubblicazione dei certificati e delle liste di certificati revocati e sospesi.

## Scopo e funzione

Gli accordi alla base di una PKI consentono agli utenti di essere mutuamente autenticati e identificati e di utilizzare le informazioni contenute nei rispettivi certificati per cifrare e decifrare i messaggi in transito. In generale una PKI consiste di software client, software server (es. un'autorità di certificazione), hardware (es. smart card) e procedure operative. Un utente potrebbe firmare i propri messaggi con la sua chiave privata, e un altro utente controllare questa firma usando la chiave pubblica contenuta nel certificato del mittente, fornito dall'autorità di certificazione facente parte della PKI. Questo consente a due (o più) parti desiderose di comunicare di verificare la confidenzialità, l'integrità dei messaggi e l'autenticazione degli utenti senza il bisogno di un precedente scambio di informazioni segrete.

## Scenario di uso tipico

La maggior parte delle PKI al livello delle imprese fanno affidamento su catene di certificati per stabilire l'identità delle parti: un certificato viene emesso da un'autorità di certificazione, a sua volta autenticata da un certificato emesso da un'autorità di livello più alto, e così via. In questo modo si stabilisce una gerarchia di certificati, composta da computer, organizzazioni e pacchetti software diversi. Gli standard sono fondamentali per il funzionamento di una PKI, e gli standard pubblici sono fondamentali per le PKI di uso esteso. Molti degli standard nel campo delle PKI sono opera del gruppo di lavoro PKIX della IETF.
Le PKI a livello di impresa sono spesso strettamente legate ai servizi di directory dell'azienda, in cui la chiave pubblica di ogni dipendente può essere memorizzata (incorporata in un certificato) assieme ad altri dettagli personali (numero di telefono, indirizzo e-mail, dipartimento...). Oggi la principale tecnologia per i sistemi di directory è LDAP e infatti il più comune formato usato per i certificati (X.509) nasce con il predecessore di LDAP, lo standard X.500.
Nel World Wide Web, l'infrastruttura PKI viene utilizzata da SSL/TLS per verificare l'identità delle parti.

## Alternative
### Rete di fiducia (Web of trust)

Un approccio alternativo al problema dell'autenticazione di una chiave pubblica è lo schema della rete di fiducia, basato sull'uso di certificati emessi dalle parti stesse e sull'attestazione della bontà di questi certificati da parte di terzi. Esempi di implementazione di questo schema sono GPG (GNU Privacy Guard) e PGP (Pretty Good Privacy). Grazie alla diffusione di PGP (e delle sue varianti) in congiunzione con l'e-mail, la rete di fiducia creata originariamente da PGP è la più estesa PKI bi-direzionale esistente (dati del 2004). CAcert.org gestisce una rete di fiducia simile a quelle usate da PGP, con la differenza che le informazioni relative alle relazioni di fiducia tra le parti vengono mantenute su database centralizzati.

### Simple Public Key Infrastructure

Un'alternativa ancora più nuova che va rapidamente diffondendosi è la simple public key infrastructure (SPKI), nata da tre sforzi indipendenti di superare le complessità dello standard X.509 e l'anarchia della rete di fiducia PGP. La SPKI collega persone e/o sistemi direttamente alle chiavi usando un modello locale di fiducia, simile alla rete di fiducia di PGP, ma con l'aggiunta di autorizzazione integrata.

### Robot Certification Authorities

I Robot CA sono programmi non custoditi che automaticamente convalidano certi aspetti della validità di una chiave pubblica e la firmano attestando che questi aspetti sono validi. Possono eliminare o fortemente ridurre alcuni tipi di attacchi in sistemi a chiave pubblica, in particolare quelli che coinvolgono un attaccante che temporaneamente dirotta tutto il traffico di rete proveniente da un sito legittimo. Aspetti tipicamente convalidati includono (a) che la chiave è pubblicata con la conoscenza dell'utilizzatore dell'indirizzo email cui si suppone appartenere, (b) che l'utilizzatore dell'indirizzo email è in possesso della chiave segreta che corrisponde alla chiave pubblica e (c) quale sia la frequenza di uso della chiave.

## Storia

La pubblica diffusione nel 1976 dell'algoritmo di scambio della chiave da parte di Diffie e Hellman e della crittografia a chiave asimmetrica da parte di Rivest, Shamir e Adleman ha prodotto un profondo mutamento nelle comunicazioni sicure. Con l'ulteriore sviluppo di comunicazioni elettroniche digitali ad alta velocità (Internet e i suoi predecessori), è risultata evidente la necessità di una modalità nella quale gli utilizzatori potessero comunicare reciprocamente in maniera sicura e, come ulteriore conseguenza di ciò, la necessità per l'utilizzatore di poter essere sicuro della identità dell'interlocutore con il quale sta interagendo al momento. L'idea di utilizzare certificati protetti crittograficamente che possano collegare l'identità dell'utente con chiavi pubbliche si è sviluppata rapidamente.
Diversi protocolli crittografici vennero inventati ed analizzati per utilizzare effettivamente le nuove primitive crittografiche. Con l'invenzione del World Wide Web e la sua rapida diffusione, il bisogno di autenticazioni e di comunicazioni sicure è diventato ancora più pressante. Le sole ragioni commerciali, come commercio elettronico o l'accesso on-line a database privati direttamente da web, sono stati sufficienti a giustificarne lo sviluppo. Taher ElGamal e altri del Netscape hanno sviluppato il protocollo SSL ('HTTPS' sugli URLs Web), che includeva sistemi di definizione ed utilizzo di chiavi, autenticazione su server, (prima del v3, solo unidirezionale), e così via. Era così stata implementata una prima struttura PKI per quegli utenti del Web (singoli utilizzatori o siti) che desiderassero utilizzare una comunicazione affidabile o, perlomeno, più sicura.
Venditori e imprenditori, intuendo l'enorme potenzialità di un mercato molto vasto, hanno avviato nuove compagnie, o nuove ramificazioni all'interno di compagnie già esistenti, cominciando a mobilitarsi per ottenere riconoscimenti legali e protezioni da responsabilità.
L'American Bar Association technology project ha pubblicato una dettagliata analisi di alcuni dei più comuni aspetti legali riguardanti le operazioni di PKI (vedi ABA digital signature guidelines) e, poco dopo, alcuni degli stati USA (lo Utah è stato il primo nel 1995) ed altri enti sparsi per il mondo hanno cominciato ad legiferare al riguardo. Associazioni di consumatori e corporazioni simili hanno sollevato delle discussioni su alcune problematiche, come la privacy, la politica degli accessi e responsabilità legali, che sono state ascoltate di più da alcune giurisdizioni piuttosto che altre.
Le leggi emanate ed i regolamenti non sono uniformi ed in più ci sono stati alcuni problemi tecnici sorti nel tentativo di convertire gli schemi PKI in offerte commerciali competitive: il progresso della tecnica è stato quindi più lento di quello che all'inizio era stato previsto.
Durante i primi anni del XXI secolo, è diventato evidente il fatto che la cryptographic engineering, anche a livello basilare, non era facile da sviluppare senza errori, che non era semplice ottenere procedure operative (manuali o automatiche) che funzionassero correttamente (e, anche nel caso di una corretta implementazione, che fossero facili da eseguire esattamente come il programmatore aveva inizialmente previsto). Inoltre ci si è resi conto che gli stessi standard esistenti erano, per alcune applicazioni, inadeguati agli scopi per i quali erano stati sviluppati.
Gli sviluppatori di PKI hanno trovato comunque un mercato, che però non era esattamente quello previsto a metà degli anni '90: il mercato è infatti cresciuto in modo più lento e in qualche maniera diverso da quello previsto. Le PKI non hanno risolto alcuni dei problemi per risolvere i quali erano state ideate, ed alcuni dei principali venditori si sono ritirati dal mercato o sono stati inglobati da altre società.
PKI ha avuto maggiore successo in implementazioni governative: attualmente la maggiore implementazione è l'infrastruttura PKI della Defense Information Systems Agency (DISA).

## Esempi di utilizzo

Le PKI hanno molti utilizzi, che includono la fornitura di chiavi pubbliche e la loro connessione alle identità degli utenti:
* Cifratura e/o autenticazione del mittente nei messaggi e-mail (ad es. usando OpenPGP o S/MIME).
* Cifratura e/o autenticazione dei documenti (ad es. gli standard per i documenti XML come XML Signature * o XML Encryption *).
* Autenticazione degli utenti per le applicazioni (ad es. quando si effettua l'accesso ad un sistema tramite smart card o l'autenticazione di un client attraverso il SSL).
* Procedure di Bootstrap nei protocolli di comunicazione sicura, come Internet key exchange (IKE) e SSL. In entrambi, l'impostazione iniziale di un canale sicuro viene effettuata attraverso chiavi pubbliche, mentre le comunicazioni vere e proprie utilizzano sistemi a chiave segreta (ovvero Crittografia a chiave simmetrica) più veloci.

## Alcune implementazioni

Alcune autorità di certificazione, come VeriSign non sono elencate perché il loro software non è disponibile agli altri.
* Computer Associates eTrust PKI
* Entrust
* Microsoft
* Netscape CMS, su enterprise.netscape.com. URL consultato il 14 settembre 2005 (archiviato dall'url originale il 31 dicembre 2004).
* OpenCA (uno schema PKI Open Source che include il software per il server)
* RSA Security
* phpki, su phpki.sourceforge.net.
* GenCerti, su open.datacore.ch (archiviato dall'url originale il 30 settembre 2007).
* ejbca, su ejbca.sourceforge.net.
* newpki, su newpki.org. URL consultato il 14 settembre 2005 (archiviato dall'url originale il 14 marzo 2006).
* Papyrus CA Software, su papyrus.gatech.edu. URL consultato il 14 settembre 2005 (archiviato dall'url originale il 29 ottobre 2005).
* pyCA, su pyca.de.
* IDX-PKI, su idx-pki.idealx.org. URL consultato il 5 giugno 2019 (archiviato dall'url originale il 24 marzo 2005).
* EuropePKI (non disponibile), su europepki.org. URL consultato il 5 giugno 2019 (archiviato dall'url originale il 16 ottobre 2017).
* TinyCA, su tinyca.sm-zone.net. URL consultato il 14 settembre 2005 (archiviato dall'url originale il 6 luglio 2013).
* ElyCA, su elyca.eurodev.net. URL consultato il 14 settembre 2005 (archiviato dall'url originale il 12 dicembre 2005).
* SimpleCA, su vpnc.org. URL consultato il 14 settembre 2005 (archiviato dall'url originale il 1º novembre 2005).
* SeguriData, su seguridata.com.