# Segurança em Redes de Dados/Certificação Digital

Certificado digital é um arquivo de computador que contém um conjunto de informações referentes a entidade para o qual o certificado foi emitido (seja uma empresa, pessoa física ou computador) mais a chave pública referente a chave privada que acredita-se ser de posse unicamente da entidade especificada no certificado.

## Uso

Um certificado digital normalmente é usado para ligar uma entidade a uma chave pública. Para garantir digitalmente, no caso de uma Infraestrutura de Chaves Públicas (ICP), o certificado é assinado pela Autoridade Certificadora que o emitiu e no caso de um modelo de Teia de Confiança (Web of trust) como o PGP, o certificado é assinado pela própria entidade e assinado por outros que dizem confiar naquela entidade. Em ambos os casos as assinaturas contidas em um certificado são atestamentos feitos por uma entidade que diz confiar nos dados contidos naquele certificado.
A troca de chaves simétricas entre usuários para comunicação segura tornou-se impraticável, a criptografia de chaves públicas provê um meio de solucionar este problema. Resumindo, se Alice deseja que outros tenham a capacidade de enviar-lhe mensagens secretas, tudo que ela precisa fazer é publicar a sua chave pública. Qualquer pessoa que possua a chave pública de Alice poderá enviar-lhe informações secretas. Infelizmente, Davi também pode publicar uma chave pública (para a qual Davi sabe a chave privada relacionada) alegando ser a chave pública de Alice e assim tendo a capacidade de decifrar as mensagens secretas destinadas a Alice mas que foram cifradas pela chave pública de Davi. Mas se Alice possuir um certificado digital com a sua chave pública e este certificado for assinado digitalmente por João, qualquer pessoa que confie em João poderá sentir-se confortável em confiar no certificado de Alice.
Em uma ICP, João será uma AC, a qual tem a confiança de todos os participantes daquela ICP. Em um modelo de Teia de confiança, João poderá ser qualquer usuário, e confiar ou não em um atestamento de um usuário que diz que uma chave pública específica pertence a Alice, está a cargo da pessoa que deseja enviar a mensagem para Alice.
Em situações reais, Alice pode não conhecer a AC de Bob (talvez seus certificados não foram emitidos pela mesma AC), então o certificado de Bob, também pode incluir a chave pública da sua AC assinada por uma AC de "maior nível" (Ex. a AC Raiz ICP-BRASIL que emitiu os certificados da AC intermediária). Este processo leva a uma hierarquia de certificados, e para relacionamentos de confiança ainda mais complexos. A maioria das vezes ICP se refere ao software que administra os certificados. Em sistemas ICP X.509, a hierarquia de certificados é sempre baseada em uma árvore de cima à baixo, com o certificado raiz no topo, representando a AC "principal" que não precisa ser assinado por um terceiro confiável (João). O certificado raiz é auto assinado.
Um certificado pode ser revogado se for descoberto que a sua chave privada relacionada foi comprometida, ou se o seu relacionamento (entre uma entidade e a sua chave pública) embutida no certificado estiver incorreta ou foi mudada; isto poderá ocorrer, por exemplo, se uma pessoa muda de nome ou CPF. Uma revogação não é comum, mas a possibilidade da ocorrência significa que quando um certificado é confiável, o usuário deverá sempre checar a sua validade. Isto pode ser feito comparando o certificado com uma Lista de certificados revogados (LCR). Seu objetivo é mostrar todos os certificados revogados ou cancelados no âmbito daquela AC. Garantir que a lista está correta e atualizada é a parte mais importante em uma ICP centralizada, o que as vezes não é feito corretamente. Para a LCR] ser efetiva, precisa estar disponível o tempo todo para qualquer um que a precisar e ser atualizada frequentemente. A outra maneira de conferir a validade de um certificado, é fazer uma consulta a AC usando o Online Certificate Status Protocol (OCSP) para saber o estado de um certificado específico.
Um certificado normalmente inclui:
Informações refentes a entidade para o qual o certificado foi emitido (nome, email, CPF/CNPJ, PIS etc.) A chave pública referente a chave privada de posse da entidade especificada no certificado O período de validade A localização do "centro de revogação" (uma URL para download da CRL, ou local para uma consulta OCSP) A(s) assinatura(s) da(s) AC/entidade(s) que afirma que a chave pública contida naquele certificado confere com as informações contidas no mesmo O padrão mais comum para certificados digitais no âmbito de uma ICP é o ITU-T X.509. O X.509 foi adaptado para a Internet pelo grupo da Internet Engineering Task Force (IETF) PKIX.

## Criando um certificado digital

A entidade que deseja emitir o certificado gera um par de chaves criptográficas (uma chave pública e uma chave privada). Em seguida a entidade gera um arquivo chamado Certificate Signing Request (CSR) composto pela chave pública da entidade e mais algumas informações que a AC requer sobre a entidade e é assinado digitalmente pela chave privada da própria entidade e envia o CSR cifrado pela chave pública da AC. Então é necessário o comparecimento físico de um indivíduo responsável por aquela identidade em uma Autoridade de Registro (AR) (em alguns casos a AR vai até o cliente) para confirmação dos dados contidos no CSR e se necessário o acréscimo de mais algum dado do responsável pelo certificado e emissão do certificado. Finalmente o CSR é "transformado" em um certificado digital assinado pela AC e devolvido ao cliente. Então o browser/aplicativo de gerência de certificados combina o certificado + a chave privada criando o conceito de "Identidade digital", normalmente salvando a chave privada em um cofre protegido por uma frase senha que será necessária para o posterior acesso a chave privada. Os maiores browsers existentes hoje em dia como Internet Explorer, Firefox e Opera, conhecidos como o sistema FIOPEX, FI de FIrefox, OP de OPera, e Ex de Internet EXplorer fazem a parte do processo que depende do cliente (até o momento de enviar o CSR à AC) automaticamente. O processo também pode ser feito manualmente usando alguma biblioteca criptográfica como o OpenSSL por exemplo: