Os certificados digitais estão presentes em nosso dia a dia e muitas vezes nem sequer nos damos conta. Por isso, vamos entender melhor o que são e como estão presentes sempre que fazemos um acesso seguro à Internet.
O que são certificados digitais?
Já vimos como criptografia simétrica e assimétrica são utilizadas a fim de garantir uma comunicação segura. No entanto, percebemos também como o uso simples e direto de cifras simétricas e assimétrica para a proteção da informação pode ser burlado e permitir que o adversário obtenha sucesso em acessar o conteúdo da comunicação.
A estratégia do adversário consiste em intermediar a troca de mensagens e explorar a falta de autenticidade das chaves públicas utilizadas pelas partes da comunicação. Dessa forma, o adversário se passa pelo receptor para enganar ao emissor das mensagens e vice-versa.
Para resolver esse problema, é necessário que ambas as partes da comunicação sejam capazes de verificar a autenticidade da identidade do seu interlocutor - e para isso existem os certificados digitais.
Assim como no dia a dia necessitamos de documentos, como o RG, para comprovar nossa identidade, na Internet essa comprovação também é necessária. De certa forma, certificados visam cumprir o mesmo papel de um RG, porém no mundo virtual.
Em uma cédula de identidade temos dados de diversas naturezas, como:
- Dados verificáveis relativos à pessoa identificada que associam o indivíduo ao documento.
- Dados pessoais da pessoa identificada.
- Dados referentes à validade do documento.
- Dados de identificação do documento.
- Dados da entidade emissora que confere autenticidade ao documento.
No caso de um certificado digital, apesar de diferentes, os dados cumprem propósitos semelhantes.
Um certificado digital possui dados como:
- Subject: dado que identifica a entidade para a qual o certificado foi emitido.
- Validade do certificado.
- Chave pública: dado que permite verificar a associação da entidade ao certificado digital.
- Dados da entidade emissora que confere autenticidade ao certificado digital.
A criptografia e os certificados digitais
Um ponto importante para entender o papel dos certificados digitais na segurança das comunicações. Vimos que tanto nos documentos de identidade do mundo físico quanto nos certificados digitais há dados “verificáveis” e dados sobre a entidade emissora. Agora vamos ver como essas informações podem ser utilizadas para verificar a autenticidade do documento (digital).
Primeiramente, quando analisamos o caso do RG, vemos que sendo capazes de verificar a digital, foto e assinatura do indivíduo que está sendo identificado pelo documento (por mais impraticável que isso seja na prática), teremos um bom indicador que o indivíduo de fato é quem está alegando ser.
Aplicando essa mesma ideia no mundo digital, caso a entidade que está sendo identificada conheça a chave secreta associada à chave pública contida no certificado, teremos também um bom indicador que a entidade é de fato quem está alegando ser. Porém, diferentemente do caso do RG, essa verificação é matemática e, portanto, muito mais confiável.
Para verificar se a entidade conhece a chave secreta associada à chave pública do certificado há diversas estratégias. Uma delas, é o próprio processo de troca de chaves na estratégia de envelopamento digital para a proteção das comunicações.
Porém, o que se soma ao utilizar certificados digitais é o fato de ser possível verificar a autenticidade do certificado em si. Portanto, caso o adversário procure gerar novos pares de chaves para interceptar as mensagens e se passar pelas partes da comunicação, ele deverá forjar um certificado válido – o que não é uma tarefa fácil.
Assinaturas e certificados digitais
No mundo físico, pessoas utilizam assinaturas (manuais) como uma forma de validação de algum conteúdo e identificação daquele que está assinando. No mundo digital, esse mesmo objetivo pode ser atingido através das assinaturas digitais.
A assinatura digital é uma importante primitiva criptográfica e funciona transformando dados de um documento digital da maneira que apenas aquele que conhece a chave secreta pode assinar o conteúdo, mas todos aqueles que conhecem a chave pública associada podem verificar a assinatura.
Dessa forma, assinaturas digitais conferem três propriedades aos documentos: autenticidade, integridade e irretratabilidade. Ou seja, caso Alice assine um documento, ela o confere:
- Autenticidade, no sentido que apenas ela poderia gerar tal assinatura e não é outra pessoa que o está fazendo;
- Integridade, significando que caso o conteúdo assinado (ou a assinatura) forem alterados, o processo de verificação não vai mais aceitar como válida a tupla (assinatura, conteúdo, chave pública do assinante);
- Irretratabilidade, ou seja, Alice não poderá afirmar no futuro que não assinou o conteúdo, pois apenas ela seria capaz de gerar uma assinatura verificável por sua chave pública.
Com isso, ao invés de carimbos e assinaturas manuais do mundo físico, as autoridades certificadoras que emitem os certificados digitais podem se valer de assinaturas digitais para conferir autenticidade aos certificados digitais e é justamente essa a ideia que está por trás de uma Infraestrutura de Chave Pública (ICP).
Infraestrutura de Chave Pública
O funcionamento da uma ICP baseia-se na derivação de confiança a partir do uso de assinaturas digitais. Portanto, caso confie-se em uma autoridade certificadora, todos os certificados emitidos pela instituição, que estejam válidos (i.e. dentro do período de validade, não foram revogados, etc), serão também confiáveis.
Tomando um cenário onde Alice deseja ter um certificado digital emitido pela autoridade certificadora AC, o processo de emissão acontece em três etapas:
- Alice gera um par de chaves, o qual terá a chave pública associada à sua identidade;
- Alice gera uma requisição de assinatura de certificado (conhecido como CSR, do inglês Certificate Signing Request) e a envia a AC;
- AC realiza um processo de verificação a respeito dos dados do certificado e, caso estejam todos corretos, emite o certificado de Alice.
É interessante notar que tanto a geração do CSR quanto a emissão do certificado utilizam assinaturas digitais.
No caso do CSR, Alice utiliza sua chave secreta (gerada na etapa 1) para assinar um conjunto de dados que envolvem subject, chave pública e quais mais forem necessários para a requisição. O CSR será composto dos dados que foram assinados, mais a própria assinatura – procedimento que chamados de autoassinar.
Dessa forma, a AC pode verificar a autenticidade e integridade dos dados do CSR utilizando a própria chave pública contida no CSR. Porém para evitar enganos (“spoofing”, no caso malicioso), a AC deve realizar procedimentos adicionais de verificação definidos em normas que envolvem outros canais – como conferir os dados informados via telefone. Estando tudo correto, AC assina os dados informados no CSR, substituindo a (auto)assinatura recebida com a chave secreta de Alice por uma assinatura gerada com sua chave secreta e envia, o que vem a ser o certificado digital, a Alice.
Ainda resta saber se o certificado de AC é confiável, ou seja, como definir de confiamos ou não no certificado que está assinando outro? Há duas alternativas: ou o certificado AC foi assinado por um outro certificado que confiamos, ou confiamos porque ele está presente em uma lista de certificados confiáveis (truststore).
Por esse motivo, infraestruturas de chave pública possuem uma forma hierárquica, definindo o caminho de certificação.
O certificado mais acima dessa estrutura hierárquica é chamado de Certificado Raiz (do inglês, Root Certificate). Uma característica importante do certificado raiz é que este certificado é autoassinado e sua confiança provém do fato de estar presente no truststore do sistema ou da aplicação.
Esses certificados podem constar na lista de certificados raízes confiáveis seja por instalação (por isso deve-se sempre tomar cuidado ao instalar qualquer certificado na máquina), política de domínio, ou já fazer parte dos certificados ditos “padrão”, definidos principalmente pelo CAB Forum e confiados pela maior parte da Internet.
Cadeado de segurança e navegação segura
Quando estamos navegando devemos prestar atenção às indicações apresentadas por nosso navegador. Uma importante indicação trata-se do cadeado de segurança.
O cadeado de segurança é apresentado quando a conexão estabelecida entre o navegador e servidor foi positivamente verificada quanto a sua autenticidade (atributo importantíssimo como vimos acima) e confidencialidade.
Essa é uma maneira visual de nos ajudar a averiguar a segurança de um acesso. Caso o cadeado não esteja presente, não submeta informações sensíveis (como usuário e senha), pois eles irão trafegar sem proteção e ficarão expostos para qualquer um que esteja roteando essa comunicação (nossa premissa básica).
Já no caso onde é apresentado erro de certificado ao tentar acessar uma página, redobre a atenção. Isso pode significar que há alguém interceptando a comunicação e tentando se passar pelo site que se está pretendendo acessar.
Para detectar esse tipo de ataque, uma série de verificações é realizada, como:
- Subject corresponde à URL acessada?
- Certificado está dentro de seu período de validade?
- As assinaturas foram verificadas com sucesso ao longo da cadeia de certificação?
- Há algum certificado confiável (i.e. presente no truststore) na cadeia de certificação?
Essas são apenas algumas das outras tantas verificações que são realizadas. Ou seja, caso o sistema não esteja comprometido (possuindo certificados instalados maliciosamente), o fato de apresentar-se o cadeado de segurança no acesso é um ótimo indicador que diversos fatores de segurança foram verificados.
Fique atento a esses indicadores para se manter livre de phishings... a grande maioria deles ainda falham em burlar a segurança dos certificados (apesar de nem sempre ser assim, como ainda veremos).