Certificação digital

Este artigo objetiva demonstrar os conceitos iniciais de criptográfica com chave assimétrica e certificação digital.

1.     O que é criptografia?

A criptografia converte dados legíveis em algo sem sentido, com a capacidade de recuperar os dados originais a partir desses dados sem sentido.

2.     Criptografia de chave simétrica

Nesta abordagem, um algoritmo utiliza uma chave para converter as informações naquilo que se parece com bits aleatórios. Assim, o mesmo algoritmo utiliza a mesma chave para recuperar os dados originais.

Esta metodologia tem desempenho bem melhores em se comparado com a criptografia de chave assimétrica, porém como para recuperar os dados cifrados, você também necessita das mesmas chaves que foram utilizadas para cifrar os dados é necessário um bom gerenciamento dessas chaves. Em se tratando de comunicação de via rede este problema da gestão da chave é mais evidente, pois para que dois ativos possam se comunicar os dois necessita conhecer a mesma chave, desta forma tem-se um problema: ou os dois ativos detêm a chave antes do início da comunicação ou a chave necessita ser transmitida via rede sem criptografia.

Segue abaixo a imagem ilustrando a utilização do mesmo algoritmo e chave para cifrar a decifrar a mensagem.

3.     Criptografia de chave assimétrica

Este esquema utiliza duas chaves diferentes. Mesmo estando relacionadas entre si – elas são parceiras – elas são significativamente diferentes. O relacionamento é matemático; o que uma chave encripta a outra chave decripta. Na criptografia simétrica, a mesma chave é utilizada para encriptar e decriptar (daí a palavra “simétrica” – partes correspondentes); se utilizar outra chave qualquer para decriptar, o resultado será algo sem sentido. Mas com a criptografia assimétrica (conforme imagem abaixo), a chave que é utilizada para encriptar os dados não é utilizada para decriptá-los; apenas a parte correspondente pode (daí palavra “assimétrica” – partes não-correspondentes).

 

Quando utilizado o algoritmo RSA, qualquer coisa que tenha sido encriptado com a chave pública pode ser decifrado apenas com a chave privada. Bem como qualquer coisa que tenha sido enncriptado com a chave privada pode ser decrifrado apenas com a chave pública. Isto demonstra que o RSA funciona tanto do privado ao público, como do público ao privado.

4.     Assinatura digital

A Assinatura digital resolve duas questões relacionadas à criptografia: autenticação e não repúdio. A autenticação permite que alguém no mundo eletrônico confirme dados e identidade, e o não repúdio impede que pessoas retifiquem sua palavra eletrônica.

A forma mais comum de assinatura digital conhecida é o certificado digital. Um certificado digital associa um nome a uma chave pública. O certificado digital é produzido de tal maneira que o torna perceptível se um impostor pegou o certificado existente e substituiu a chave pública ou o nome.

5.     Infraestrutura de chave pública e o padrão X.509

Um certificado de chave pública (public-key certificate – PKC) é um conjunto de dados à prova de falsificação que atesta a associação de uma chave pública a um usuário final. Para fornecer essa associação, um conjunto de terceiros confiáveis confirma a identidade do usuário. Os terceiros chamados de autoridades certificadoras (certification authorities – Cas), emitem certificados para o usuário com o nome de usuário, a chave pública e outras informações que o identifiquem. Após serem assinados digitalmente pela CA, esses certificados podem ser transferidos e armazenados.

O formato de certificado mais amplamente aceito é o X.509 Versão 3. Em 1999 foi publicado um perfil para o X.509 na RFC2459.

Todas as versões dos certificados X.509 contêm os seguintes campos:

Campo Descrição
Version (Versão) Este campo deferência as sucessivas versões do certificado, como Versão 1, Versão 2 e Versão 3. O campo Versão também permite possíveis versões futuras.
Certificate Serial Number (Número serial de certificado) Esse campo contém um valor de inteiro único em cada certificado. É gerado pela CA.
Signature Algorithm Identifier (Identificador do algoritmo de assinatura) Este campo indica o identificador do algoritmo utilizado para assinar o certificado junto com quaisquer parâmetros associados.
Issue Name (Nome do emissor) Esse campo identifica o nome distinto (distinguished name – DN) com o qual a CA cria e assina esse certificado.
Validity (Not before/After) (Validade – Não antes/Não depois) Esse campo conte´m dois valores de data/hora – Not Valid Before e Not Valid After – que definem o período que esse certificado pode ser considerado válido a menos que, caso, contrário, seja revogado.
Subject Name (Nome do sujeito) Esse campo identifica o DN da entidade final a que o certificado se refere, isto é, o sujeito que mantém a chave privada correspondente. Esse campo deve ter uma entrada, a menos que um nome alternativo seja utilizado nas extensões da Versão 3.
Subject Public Key Information (Informação sobre a chave pública do sujeito) Esse campo contém o valor da chave pública so sijeito, bem como o identificador de algoritmo e quaisquer parâmetros associados ao algoritmo pelos quais a chave deve ser utilizada. Esse campo sempre deve ter uma entrada.

Os certificados versões 2 e 3 podem conter outros campos com:

  • Issue Unique Identifier (identificador único de emissor)
  • Subject Unique Identifier (Identificador único de sujeito)
  • Extensions (Extensões) (Somente versão 3)
    • Authority Key Identifier (Identificador de chave de autoridade)
    • Subject Key Identifier (Identificador de chave de sujeito)
    • Key Usage (Utilização de chave)
    • Extened Key Usage (Utilização de chave estendida)
    • CRL Distribution Point (Ponto de distribuição de CRL)
    • Private Key Usage Period (Período de uso de chave privada)
    • Certificate Policies (Políticas de certificado)
    • Policy Mapping (Mapeamento de políticas)
    • Subject Alternate Name (Nome alternativo so sujeito)
    • Issue Alternate Name (Nome alternativo do emissor)
    • Subject Directory attributes (Atributos do diretório do sujeito)
    • Basic Constraints (Restições básicas)
    • Name Constraints (Restições de nome)
    • Policy Constraints (Restições de diretiva)

Com foco no estudo deste documento as únicas extensões que iremos descrever é a Basic Constraints (Restições básicas) e Certificate Policies (Políticas de certificado).

  • Basic Constraints (Restições básicas)

Essa extensão indica se o sujeito pode agir como uma CA, fornecendo uma maneira para restringir que usuários finais atuem como CAs. Se este campo estiver presente, também poderá ser especificado um comprimento do caminho de certificaçã. O comprimento do caminho de certificação limita os poderes certificadores de uma nova autoridade (por exemplo, se a Verisign poderia permitir que a RSA Inc. atuasse como uma CA, mas ao mesmo tempo, não permitisse que a RSA Inc. criasse novas CAs). A RFC2459 ordena que essa extensão esteja presente e marcada como crítica em todos os certificados de CA.

  • Certificate Policies (Políticas de certificado)

Essa extensão identifica as informações sobre as políticas e qualificadores opcionais que a CA associa ao certificado. Se essa extensão for marcada como crítica, o aplicativo de processamento deve seguir pelo menos uma das políticas indicadas ou o certificado não deverá ser utilizado.

5.1.           Hierarquia de certificado

À medida que uma população de PKI (public-key infraestructure) começa a aumentar, torna-se difícil para uma CA monitorar de maneira eficaz a identidade de todas as partes que ela certificou. Uma solução é utilizar uma hierarquia de certificados, onde uma CA delega sua autoridade para uma ou mais autoridades subsidiarias. Essas autoridades, por sua vez, designam seus próprios subsidiários. A figura abaixo ilustra o conceito de hierarquia de certificados.

Um recurso poderoso das hierarquias de certificado é que nem todas as partes devem confiar automaticamente em todas as autoridades certificadoras. De fato, a única autoridade cuja confiança deve ser estabelecida por todos é a CA superior. Por causa da sua posição na hierarquia, essa autoridade é geralmente conhecida como autoridade raiz. Os exemplos atuais de CAs de raiz pública incluem Verisign, Thawte e a raiz de CA do U.S Postal Service.

6.     Padrão PKCS#12

O formato PKCS#12 foi criado pela “RSA Laboratories” para armazenamento do certificado X.509 acompanhado da chave privada. Esse arquivo geralmente tem a extensão “pfx” e “p12”.

7.     Referencias bibliográficas

BURNETT, Steve, Criptografia e segurança: o guia oficial RSA, tradução de Edson Fumankiewcz. Ed. Rio de Janeiro: Elsevier, 2002.

Helvio Junior

Helvio Junior

Especialista em Segurança Ofensiva e Análise de Malwares em SafeTrend
Especialista em Segurança Ofensiva e pesquisador independente de Malwares.
Helvio Junior
1 responder

Trackbacks & Pingbacks

  1. […] Para maiores detalhes sobre criptografia verifique o post Certificação digital […]

Deixe uma resposta

Want to join the discussion?
Feel free to contribute!

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *