Certificados de chave pública X.509

A criptografia de chave pública depende de um par de chaves públicas e privadas para criptografar e descriptografar o conteúdo. As chaves estão matematicamente relacionadas e o conteúdo criptografado usando uma das chaves só pode ser descriptografado usando a outra. A chave privada é mantida em segredo. A chave pública normalmente é inserida em um certificado binário e o certificado é publicado em um banco de dados que pode ser acessado por todos os usuários autorizados.

O padrão de PKI (infraestrutura de chave pública) X.509 identifica os requisitos para certificados de chave pública robustos. Um certificado é uma estrutura de dados assinada que associa uma chave pública a uma pessoa, computador ou organização. Os certificados são emitidos por autoridades de certificação (ACs). Todos os que fazem parte das comunicações seguras que fazem uso de uma chave pública dependem da AC para verificar adequadamente as identidades dos indivíduos, sistemas ou entidades às quais emite certificados. O nível de verificação normalmente depende do nível de segurança necessário para a transação. Se a AC puder verificar adequadamente a identidade do solicitante, ela assinará (criptografa), codificará e emitirá o certificado.

Um certificado é uma estrutura de dados assinada que associa uma chave pública a uma entidade. A sintaxe ASN.1 ( Abstract Syntax Notation One ) para o certificado X.509 versão 3 é mostrada no exemplo a seguir.

-- X.509 signed certificate 

SignedContent ::= SEQUENCE 
{
  certificate         CertificateToBeSigned,
  algorithm           Object Identifier,
  signature           BITSTRING
}
 
-- X.509 certificate to be signed

CertificateToBeSigned ::= SEQUENCE 
{
  version                 [0] CertificateVersion DEFAULT v1,
  serialNumber            CertificateSerialNumber,
  signature               AlgorithmIdentifier,
  issuer                  Name
  validity                Validity,
  subject                 Name
  subjectPublicKeyInfo    SubjectPublicKeyInfo,
  issuerUniqueIdentifier  [1] IMPLICIT UniqueIdentifier OPTIONAL,
  subjectUniqueIdentifier [2] IMPLICIT UniqueIdentifier OPTIONAL,
  extensions              [3] Extensions OPTIONAL
}

Desde sua criação, em 1998, três versões do padrão de certificado de chave pública X.509 evoluíram. Conforme mostrado pela ilustração a seguir, cada versão sucessiva da estrutura de dados reteve os campos que existiam nas versões anteriores e adicionou mais.

certificados x.509 versões 1, 2 e 3

Os tópicos a seguir discutem os campos disponíveis com mais detalhes:

Infraestrutura de chave pública