# Online Certificate Status Protocol

Online Certificate Status Protocol (OCSP) è un protocollo che permette di verificare la validità di un certificato senza ricorrere alle liste di revoca dei certificati. Fa parte dello standard X.509 e viene descritto in RFC 2560.

## Funzionalità

L'Online Certificate Status Protocol è lo standard emergente dell'IETF (Internet Engineering Task Force) destinato al controllo della validità dei certificati digitali nel corso di una determinata transazione. OCSP permette di condurre queste verifiche in tempo reale, risparmiando tempo e denaro, e fornendo alle attività di e-business un sistema più rapido, semplice e affidabile per la validazione dei certificati digitali rispetto a quello offerto dal tradizionale scaricamento ed elaborazione delle Certificate Revocation Lists (CRL). Mentre infatti CRL prevede il download di una pesante lista contenente i certificati revocati, OCSP sfrutta l'interrogazione da parte del client usando il numero di serie del certificato per indicare al richiedente se tale certificato è stato revocato oppure no. Gli URL utilizzati per la connessione al server OCSP possono essere visualizzati con l'apertura del certificato.
Tuttavia nonostante OCSP e CRL siano mutualmente esclusivi, nel caso in cui la connessione con il fornitore del servizio di stato del certificato non sia possibile, al posto di OCSP i sistemi che sfruttano i certificati potrebbero usare CRL come ripiego.

## Architettura

L'architettura del protocollo è di tipo client server, da un lato abbiamo i vari client che effettuano una richiesta (OCSP request) per controllare la validità del certificato, mentre dall'altra parte abbiamo il server (responder) che cerca di soddisfare tutte le richieste inviando messaggi di validità.
La chiamata di accesso al server OCSP può restituire tre diversi risultati: valido, revocato o sconosciuto. Il primo indica una risposta positiva, nel senso che il certificato non è stato revocato, ma non assicura che il certificato non abbia mai avuto problemi o che la risposta non sia stata prodotta quando il certificato era nel proprio intervallo di validità. Si possono usare anche delle estensioni per ricevere informazioni aggiuntive, quali emissione o validità, sul certificato. Il secondo risultato, revocato, indica che il certificato è stato revocato, permanentemente o temporaneamente. Lo stato "sconosciuto", invece, indica che il rispondente non sa nulla sul certificato richiesto.
Un problema di sicurezza si evidenzia inoltre quando si ha a che fare con un flusso di query e si potrebbe avere una vulnerabilità "denial of service". Ciò è dovuto alla lentezza della produzione di una firma crittografica, la quale rende più lenta la generazione della risposta da parte del server. Le risposte di errore per una mancata firma infatti rendono vulnerabile il protocollo ad un altro "denial of service", dove l'attaccante invia proprie false risposte di errore. L'utilizzo di risposte precompilate quindi consente attacchi in cui una risposta vecchia ma valida, viene riprodotta prima della data di scadenza ma dopo che il certificato è stato revocato.

## Vantaggi

OCSP ha alcuni vantaggi rispetto alle CRL:
* Elimina la necessità per i client di scaricare e analizzare le liste di revoca.
* Provvede ad un migliore utilizzo della banda: dal momento che un messaggio OCSP ha una dimensione trascurabile rispetto alle CRL.
* Supporta una catena fidata di OCSP richiesta tra i vari responder. Questo permette ai clienti di comunicare con un responder fidato per interrogare un altro responder.
* OCSP è più efficiente delle CRL e quindi scala in modo migliore.

## Svantaggi

OCSP ha anche alcuni svantaggi rispetto alle CRL:
* Per ogni revoca è necessario fare una richiesta al responder: se la risposta non viene ricevuta entro un tempo limite, OCSP verrà ignorato silenziosamente.
* Ogni richiesta deve essere analizzata dal responder; ciò comporta la trasmissione della cronologia di navigazione al responder, introducendo un evidente problema di privacy.

## Supporto dei browser

La maggior parte dei browser principali supporta OCSP:
* Internet Explorer è costruito sulla CryptoAPI del sistema operativo Windows e quindi con la versione 7 su Windows Vista (non XP) supporta il controllo con OCSP.
* Tutte le versioni di Mozilla Firefox supportano OCSP. Firefox 3 consente OCSP per impostazione predefinita.
* Safari su MacOS supporta OCSP. È abilitato di default da Mac OS X 10.7 (Lion). Prima di questo, deve essere attivato manualmente nelle preferenze portachiavi.
* Le versioni di Opera dalla 8.0 in poi, supportano OCSP.
Google Chrome ha disabilitato i controlli OCSP di default, decisione presa da Google nel 2012, a causa dei problemi di latenza e di privacy. Google utilizza un proprio meccanismo di aggiornamento per inviare al browser le revoche dei certificati.