Protocolo de status de certificado online
O protocolo de status de certificado online (do inglês Online Certificate Status Protocol - OCSP) é um protocolo de Internet usado para obter o status de revogação de um certificado digital X.509.[1] Ele é descrito no RFC 6960 e está no caminho de padrão de Internet. Ele foi criado como uma alternativa para as listas de revogação de certificado (CRLs), abordando especificamente certos problemas associados ao uso de CRLs em uma infraestrutura de chave pública (PKI).[2] As mensagens comunicadas via OCSP são codificadas em ASN.1 e geralmente são transmitidas por meio de HTTP. A natureza de "solicitação/resposta" dessas mensagens leva os servidores OCSP a serem denominados respondentes OCSP.
Alguns navegadores usam o OCSP para validar os certificados HTTPS.
Comparação com CRLs
editar- Como uma resposta OCSP contém menos dados do que uma típica lista de revogação de certificado (CRL), ela sobrecarrega menos os recursos da rede e do cliente.[3]
- Como uma resposta OCSP tem menos dados para análise, as bibliotecas do lado do cliente que a tratam podem ser menos complexas do que aquelas que tratam CRLs.[4]
- O OCSP revela ao respondente que um determinado host de rede usou um determinado certificado em um determinado momento. O OCSP não exige criptografia, portanto, outras partes podem interceptar essas informações.[1]
Implementação de PKI básica
editar- Alice e Bob têm certificados de chave pública emitidos por Carol, a autoridade de certificação (CA).
- Alice deseja realizar uma transação com Bob e envia a ele seu certificado de chave pública.
- Bob, preocupado que a chave privada de Alice possa ter sido comprometida, cria uma 'solicitação OCSP' que contém o número de série do certificado de Alice e o envia para Carol.
- O respondente OCSP de Carol lê o número de série do certificado da solicitação de Bob. O respondente do OCSP usa o número de série do certificado para pesquisar o status de revogação do certificado de Alice. O respondente do OCSP procura em um banco de dados CA mantido por Carol. Nesse cenário, o banco de dados de CA de Carol é o único local confiável onde um comprometimento do certificado de Alice seria registrado.
- O respondente OCSP de Carol confirma que o certificado de Alice ainda está OK e retorna uma 'resposta OCSP' bem-sucedida assinada para Bob.
- Bob verifica criptograficamente a resposta assinada de Carol. Bob armazenou a chave pública de Carol algum tempo antes desta transação. Bob usa a chave pública de Carol para verificar a resposta de Carol.
- Bob conclui a transação com Alice.
Detalhes do protocolo
editarUm respondente OCSP (um servidor normalmente executado pelo emissor do certificado) pode retornar uma resposta assinada, significando que o certificado especificado na solicitação é 'bom', 'revogado' ou 'desconhecido'. Se não puder processar a solicitação, ele pode retornar um código de erro.
O formato de solicitação OCSP oferece suporte a extensões adicionais. Isso permite uma ampla personalização para um determinado esquema de PKI.
O OCSP pode ser vulnerável a replay attacks,[5] ou seja, uma resposta "boa" assinada pode ser capturada por um intermediário malicioso e reproduzida para o cliente posteriormente (data após o certificado em questão ter sido revogado).
O OCSP permite que um nonce seja incluído na solicitação que pode ser incluída na resposta correspondente. Devido à alta carga, a maioria dos respondentes OCSP não usa a extensão nonce para criar uma resposta diferente para cada solicitação em vez de usar respostas predefinidas com um período de validade de vários dias. Portanto, o ataque de repetição é uma grande ameaça aos sistemas de validação.
O OCSP pode oferecer suporte a mais de um nível de CA. As solicitações OCSP podem ser encadeadas entre respondentes de pares para consultar a CA emissora apropriada para o certificado em questão, com respondentes validando as respostas uns dos outros contra a CA raiz usando suas próprias solicitações OCSP.
Um respondente do OCSP pode ser consultado para informações de revogação por servidores de validação de caminho delegado (DPV). O OCSP não realiza, por si só, qualquer DPV dos certificados fornecidos.
A chave que assina uma resposta não precisa ser a mesma que assinou o certificado. O emissor do certificado pode delegar outra autoridade para ser o respondente do OCSP. Neste caso, o certificado do respondente (aquele que é usado para assinar a resposta) deve ser emitido pelo emissor do certificado em questão e deve incluir uma determinada extensão que o marca como uma autoridade de assinatura OCSP (mais precisamente, uma extensão de uso de chave estendida com o OID {iso(1) identified-organization(3) dod(6) internet(1) security(5) mechanisms(5) pkix(7) keyPurpose(3) ocspSigning(9)})
Preocupações com a privacidade
editarA verificação OCSP cria uma preocupação com a privacidade para alguns usuários, uma vez que exige que o cliente entre em contato com um terceiro (embora seja uma parte de confiança do fornecedor do software cliente) para confirmar a validade do certificado. O grampeamento é uma forma de verificar a validade sem revelar o comportamento de navegação à CA.[1]
Críticas
editarA revogação baseada em OCSP não é uma técnica eficaz para mitigar o comprometimento da chave privada de um servidor HTTPS. Um invasor que comprometeu a chave privada de um servidor normalmente precisa estar em uma posição man-in-the-middle na rede para abusar dessa chave privada e se passar por um servidor. Um invasor em tal posição também pode interferir nas consultas OCSP do cliente. Como a maioria dos clientes ignora silenciosamente o OCSP se a consulta atingir o tempo limite, o OCSP não é um meio confiável de mitigar o comprometimento da chave do servidor HTTPS.[6]
A extensão MustStaple TLS em um certificado pode exigir que o certificado seja verificado por uma resposta OCSP grampeada, atenuando esse problema.[3] O OCSP também permanece uma defesa válida contra situações em que o invasor não é um "intermediário" (assinatura de código ou certificados emitidos por engano).
O protocolo OCSP assume que o solicitante tem acesso à rede para se conectar a um respondente OCSP apropriado. Alguns solicitantes podem não conseguir se conectar porque sua rede local proíbe o acesso direto à Internet (uma prática comum para nós internos em um data center). Forçar os servidores internos a se conectarem à internet para usar OCSP contribui para a tendência de Desperimetrização. O protocolo de grampeamento OCSP é uma alternativa que permite que os servidores armazenem em cache as respostas do OCSP, o que elimina a necessidade de o solicitante entrar em contato diretamente com o respondente do OCSP.
Suporte de navegador
editarHá amplo suporte para OCSP entre a maioria dos navegadores principais:
- O Internet Explorer é baseado no CryptoAPI do Windows e, portanto, a partir da versão 7 no Windows Vista (não XP[7]) suporta verificação OCSP.[8]
- Todas as versões do Mozilla Firefox suportam verificação OCSP. O Firefox 3 habilita a verificação OCSP por padrão.[9]
- O Safari no macOS oferece suporte à verificação OCSP. Ele é habilitado por padrão no Mac OS X 10.7 (Lion). Antes disso, ele é ativado manualmente nas preferências de chaveiro.[10]
- Versões do Opera a partir de 8.0[11][12] até a versão atual suporta verificação OCSP
No entanto, o Google Chrome é um ponto fora da curva. O Google desativou as verificações OCSP por padrão em 2012, citando latência e problemas de privacidade[13] e, em vez disso, usa seu próprio mecanismo de atualização para enviar certificados revogados ao navegador.[14]
Implementações
editarExistem várias implementações OCSP de código aberto e proprietário, incluindo servidor e bibliotecas para construir aplicativos personalizados. O suporte à cliente OCSP está integrado em muitos sistemas operacionais, navegadores web e outros softwares de redes devido à popularidade do HTTPS e a World Wide Web.
Servidor
editarCódigo aberto
editar- Boulder,[15] CA e respondente OCSP desenvolvido e usado por Let's Encrypt (Go).
- DogTag,[16] autoridade de certificação de código aberto CA, CRL e respondedor OCSP.
- EJBCA,[17] CA e respondente OCSP (Java).
- OpenXPKI,[18] CA e OCSP como extensão na configuração OpenXPKI.
- XiPKI,[19] CA e respondedor OCSP. Com suporte à RFC 6960 e SHA3 (Java)
Proprietário
editar- Certificate Services,[20] CA e respondedor OCSP incluído com Windows Server.
Bibliotecas
editarCódigo aberto
editarCliente
editarVeja também
editarReferências
editar- ↑ a b c A., Jesin (12 de junho de 2014). «How To Configure OCSP Stapling on Apache and Nginx». Community Tutorials. Digital Ocean, Inc. Consultado em 2 de março de 2015
- ↑ «OCSP Stapling». GlobalSign Support. GMO GlobalSign Inc. 1 de agosto de 2014. Consultado em 2 de março de 2015
- ↑ a b Gibson, Steve. «Security Certificate Revocation Awareness: The case for "OCSP Must-Staple"». Gibson Research Corporation. Consultado em 2 de março de 2015
- ↑ Keeler, David (29 de julho de 2013). «OCSP Stapling in Firefox». Mozilla Security Blog. Mozilla Foundation. Consultado em 2 de março de 2015
- ↑ RFC 6960, section 5, Security Considerations
- ↑ «No, Don't Enable Revocation Checking». 19 de abril de 2014. Consultado em 24 de abril de 2014
- ↑ «Windows XP Certificate Status and Revocation Checking». Microsoft. Consultado em 9 de maio de 2016
- ↑ «What's New in Certificate Revocation in Windows Vista and Windows Server 2008». Microsoft. Consultado em 9 de maio de 2016
- ↑ «Mozilla Bug 110161 – Enable OCSP by Default». Mozilla. 1 de outubro de 2007. Consultado em 18 de julho de 2010
- ↑ Wisniewski, Chester (26 de março de 2011). «Apple users left to defend themselves against certificate attacks». Sophos. Consultado em 26 de março de 2011
- ↑ Pettersen, Yngve Nysæter (9 de novembro de 2006). «Introducing Extended Validation Certificates». Opera Software. Consultado em 8 de janeiro de 2010. Arquivado do original em 10 de fevereiro de 2010
- ↑ Pettersen, Yngve Nysæter (3 de julho de 2008). «Rootstore newsletter». Opera Software. Consultado em 8 de janeiro de 2010
- ↑ Langley, Adam (5 de fevereiro de 2012). «Revocation checking and Chrome's CRL». Consultado em 30 de janeiro de 2015. Cópia arquivada em 12 de fevereiro de 2012
- ↑ "Chrome does certificate revocation better", April 21, 2014, Larry Seltzer, ZDNet
- ↑ «Boulder – an ACME CA». GitHub. 16 de março de 2018. Consultado em 17 de março de 2018
- ↑ «Dogtag Certificate System». Consultado em 12 de agosto de 2019
- ↑ «EJBCA – Open Source PKI Certificate Authority». PrimeKey. 2 de fevereiro de 2018. Consultado em 17 de março de 2018
- ↑ «OpenXPKI project documentation^ CRL and OCSP extensions». Consultado em 12 de agosto de 2019
- ↑ «XiPKI». GitHub. 13 de março de 2018. Consultado em 17 de março de 2018
- ↑ «Certificate Services (Windows)». Windows Dev Center. Microsoft. 2018. Consultado em 17 de março de 2018
- ↑ «Package ocsp». cfssl GoDoc. 25 de fevereiro de 2018. Consultado em 17 de março de 2018
- ↑ «OCSP_response_status». master manpages. OpenSSL. 2017. Consultado em 17 de março de 2018
- ↑ «OCSP in wolfSSL Embedded SSL – wolfSSL» (em inglês). 27 de janeiro de 2014. Consultado em 25 de janeiro de 2019
Ligações externas
editar- RFC 2560, X.509 Internet Public Key Infrastructure Online Certificate Status Protocol – OCSP
- RFC 4806, Online Certificate Status Protocol (OCSP) Extensions to IKEv2
- RFC 5019, The Lightweight Online Certificate Status Protocol (OCSP) Profile for High-Volume Environments
- RFC 6960, X.509 Internet Public Key Infrastructure Online Certificate Status Protocol – OCSP
- Processor.com April, 2009 article about Online Certificate Status Protocol