Share via


Duas Sugestões para a ICP-Brasil

A maior parte do meu trabalho nos últimos tempos tem sido em projetos de Infraestrutura de Chaves Públicas (PKI), incluindo projetos de identidade eletrônica (eID) em outros países. E por ver de perto o trabalho de outros países em implementar PKIs nacionais, para mim é cada vez é mais admirável mais o trabalho feito pelo governo brasileiro na ICP-Brasil, que dotou o Brasil de uma infraestrutura tecnológica e legal de certificados digitais. Para resumir, não é nem um pouco fácil fazer o que foi feito - e bem feito.

Mas mesmo um bom trabalho ainda pode melhorar. Aqui neste post vão duas modestas sugestões para ajudar as Autoridades Certificadoras da ICP-Brasil a fornecer um serviço mais confiável e de mais fácil uso pelos usuários da infraestrutura:

Sugestão 1: Uso de Dois (ou mais) Pontos de Distribuição de LCRs

O aspecto mais crítico de uma PKI é normalmente o seu mecanismo revogação. Para validar um certificado digital é necessário verificar se ele foi revogado, e se a Autoridade Certificadora não deixa disponível informação atualizada de revogação fica impossível validar (e aceitar) um certificado digital.

A revogação é feita através de Listas de Certificados Revogados (LCRs), que são publicados periodicamente pela Autoridade Certificadora. A LCR é um arquivo que contém o número de série de todos os certificados que por qualquer motivo não devem ser considerados confiáveis. Fazendo uma analogia um pouco datada, a LCR é o equivalente àquele livro de cartões de crédito inválidos que as operadoras enviavam periodicamente aos lojistas, e que em priscas eras eram consultados antes do seu cartão ser aceito.

A LCR fica disponível em um ponto de distribuição de LCR, cuja URL está especificada no próprio certificado digital. Ao receber um certificado digital ICP-Brasil, um serviço tem que consulta o ponto de distribuição e obtém a LCR mais nova para validar o certificado. Na ICP-Brasil isso normalmente significa usar a Internet para obter a LCR no próprio site Web da Autoridade Certificadora. Agora, o que acontece se esse site estiver fora do ar? Ou se o link naquele momento estiver com problemas? Ou o roteamento da Internet para aquele bloco de endereços estiver com problemas? O serviço não vai conseguir obter a LCR e vai rejeitar usuários e transações.

Faz todo o sentido então a Autoridade Certificadora ter um segundo ponto (e até mesmo um terceiro) ponto de distribuição da LCRs, que pode ser usado automaticamente pelos clientes caso o ponto de distribuição principal esteja indisponível. O uso de mais de um ponto de distribuição de LCRs faz parte da RFC 2459, e é suportado tanto pelo Windows quanto por todas as outras implementações de PKI existentes.

Certificado com Dois Pontos de Distribuição de LCR 

Um segundo ponto de distribuição permitiria por exemplo que duas ACs pudessem ter inclusive acordos de reciprocidade e se tornassem pontos de distribuição secundários uma da outra. Eu não vejo por outro lado nenhum aspecto negativo em incluir pontos de distribuição de LCR adicionais, e de certo ponto até me surpreende que as ACs não tenham feito isso até agora.

Sugestão 2: Usar o Atributo AIA para Distribuir os Certificados das ACs

Para validar um certificado digital da ICP-Brasil você precisa também verificar se ele foi emitido por uma Autoridade Certificadora que está subordinada a Autoridade Certificadora Raiz Brasileira. Isso significa montar o que se chama de cadeia de confiança: o certificado do sujeito foi emitido por uma Autoridade Certificadora, cujo certificado por sua vez foi emitido por uma outra Autoridade Certificadora, cujo certificado foi emitido pela Autoridade Certificadora Raiz Brasileira. Ufa! Feito isso, é possível ter certeza de que se trata de um certificado da ICP-Brasil.

Para montar a cadeia de confiança é necessário portanto ter os certificados de todas as Autoridades Certificadoras que fazem parte da cadeia. Para distribuir a Autoridade Certificadora Raiz Brasileira é simples: ela é enviada automaticamente para todos os Windows via Windows Update, e em um ambiente corporativo você pode usar também o Active Directory para isso. O problema está nas Autoridades Certificadoras que ficam no meio da cadeia - como você configura os certificados delas? Um processo manual pode gerar uma carga administrativa enorme, para piorar novas Autoridades Certificadoras são instaladas ou renovadas a cada dia.

Felizmente a RFC  2459 vem de novo aqui em nosso socorro. Ela define uma extensão chamada Authority Information Access (AIA), que serve entre outras coisas para especificar o endereço onde pode ser obtido o certificado da Autoridade Certificadora que emitiu aquele certificado. Usando o AIA um cliente pode receber um certificado qualquer e montar toda a cadeia de confiança até o certificado raiz, sem ter instalado previamente os certificados das Autoridades Certificadoras intermediárias. Estes são obtidos e instalados automaticamente com base no AIA.

Certificado com Extensão AIA Configurada

Ambas as mudanças podem ser implementadas de forma relativamente fácil, e por si só não implicam em nenhum custo adicional. O ciclo de mudança no entanto é longo, já que ambas implicam em mudança no conteúdo dos certificados, o que normalmente só é feito quando os certificados são renovados. Ainda assim na minha opinião alguma hora elas vão ter que ser feitas, e quanto antes se começar a fazê-las melhor.