A criptografia é a prática de proteger informações transformando-as em um formato ilegível para terceiros não autorizados. Ela é essencial para a segurança da informação, garantindo confidencialidade, integridade e autenticidade dos dados.

Nesta aula, exploraremos os principais tipos de criptografia: simétrica, assimétrica, funções hash e certificados digitais. Cada um desempenha um papel crucial em diferentes cenários de segurança, desde a proteção de dados em repouso até a verificação de identidade em comunicações online.

Criptografia Simétrica

A criptografia simétrica utiliza a mesma chave para cifrar e decifrar os dados. É um método rápido e eficiente, ideal para grandes volumes de dados. O desafio está na distribuição segura da chave entre as partes envolvidas.

Exemplos de algoritmos simétricos incluem AES (Advanced Encryption Standard) e DES (Data Encryption Standard). O AES é amplamente utilizado por sua segurança e desempenho. No processo, o emissor cifra a mensagem com a chave secreta, e o receptor usa a mesma chave para decifrá-la.

Exemplo conceitual:
Chave: K
Mensagem original: "Olá"
Cifragem: Cifrar("Olá", K) = "Xyz"
Decifragem: Decifrar("Xyz", K) = "Olá"

A segurança da criptografia simétrica depende do sigilo da chave. Se a chave for comprometida, todos os dados cifrados com ela podem ser decifrados.

Criptografia Assimétrica

A criptografia assimétrica, também conhecida como criptografia de chave pública, utiliza um par de chaves: uma pública e uma privada. A chave pública pode ser compartilhada livremente, enquanto a privada é mantida em segredo. Dados cifrados com a chave pública só podem ser decifrados com a chave privada correspondente, e vice-versa.

Isso resolve o problema de distribuição de chaves, pois não é necessário compartilhar uma chave secreta. Exemplos incluem RSA e ECC. É comumente usada para estabelecer conexões seguras (como HTTPS) e para assinaturas digitais.

Exemplo conceitual:
Chave pública: Pub
Chave privada: Priv
Cifragem: Cifrar("Olá", Pub) = "Xyz"
Decifragem: Decifrar("Xyz", Priv) = "Olá"

A criptografia assimétrica é mais lenta que a simétrica, por isso geralmente é usada para cifrar chaves simétricas ou pequenas quantidades de dados.

Hash

Funções hash são algoritmos que transformam dados de tamanho arbitrário em um valor de tamanho fixo, chamado hash ou digest. Características importantes: são unidirecionais (não é possível reverter o hash para obter o dado original) e resistentes a colisões (é difícil encontrar dois dados diferentes com o mesmo hash).

Hash é usado para verificar integridade de dados, armazenamento de senhas (com sal) e em assinaturas digitais. Exemplos: SHA-256, MD5 (obsoleto por segurança).

Exemplo:
Dado: "Segurança"
Hash SHA-256: 6b88c087247aa2f07ee1c9316b5f3d6e6b5f3d6e6b5f3d6e6b5f3d6e6b5f3d6e

Para senhas, recomenda-se usar funções como bcrypt, scrypt ou Argon2, que são propositalmente lentas para dificultar ataques de força bruta.

Certificados Digitais

Certificados digitais são documentos eletrônicos que vinculam uma identidade (pessoa, servidor) a uma chave pública. Eles são emitidos por Autoridades Certificadoras (CAs) e seguem o padrão X.509. O certificado contém informações como nome do titular, chave pública, validade e assinatura digital da CA.

Os certificados são usados em HTTPS para autenticar servidores e estabelecer conexões seguras. Quando você acessa um site seguro, o navegador verifica o certificado do servidor, garantindo que está se comunicando com o site correto e que a comunicação está cifrada.

Estrutura simplificada de um certificado:
- Versão
- Número de série
- Algoritmo de assinatura
- Emissor (CA)
- Período de validade
- Titular (sujeito)
- Chave pública do titular
- Assinatura digital da CA

A verificação de um certificado envolve checar a assinatura da CA, a validade e se o certificado não foi revogado (via CRL ou OCSP).

Boas Práticas

Ao implementar criptografia, prefira bibliotecas e protocolos consolidados, como TLS para comunicação segura. Nunca implemente seus próprios algoritmos criptográficos. Use chaves com tamanho adequado (ex.: AES-256, RSA-2048). Mantenha as chaves privadas em local seguro e use rotação periódica de chaves.

Referências

Exercícios

  1. Explique a principal diferença entre criptografia simétrica e assimétrica.
  2. ✓ Resposta: A criptografia simétrica usa a mesma chave para cifrar e decifrar, enquanto a assimétrica usa um par de chaves (pública e privada). A simétrica é mais rápida, mas tem o desafio da distribuição de chaves; a assimétrica resolve isso, mas é mais lenta.
  3. Por que funções hash são consideradas unidirecionais? Dê um exemplo de uso.
  4. ✓ Resposta: Funções hash são unidirecionais porque, dado um hash, é computacionalmente inviável obter o dado original. Um exemplo de uso é o armazenamento de senhas: ao invés de guardar a senha em texto claro, guarda-se o hash, e na autenticação compara-se o hash da senha fornecida com o hash armazenado.
  5. Qual é o papel de uma Autoridade Certificadora (CA) em certificados digitais?
  6. ✓ Resposta: A CA é uma entidade confiável que emite certificados digitais, atestando a identidade do titular e vinculando-a à sua chave pública. Ela assina o certificado com sua própria chave privada, permitindo que terceiros verifiquem a autenticidade do certificado.
  7. Cite dois algoritmos de criptografia simétrica e dois de criptografia assimétrica.
  8. ✓ Resposta: Simétricos: AES e DES. Assimétricos: RSA e ECC.
  9. O que é uma assinatura digital e como ela difere de uma cifragem?
  10. ✓ Resposta: Uma assinatura digital é um esquema que garante autenticidade e integridade: o signatário usa sua chave privada para assinar um documento, e qualquer um pode verificar a assinatura com a chave pública. Diferente da cifragem, que visa confidencialidade, a assinatura não esconde o conteúdo, apenas prova a origem e que não houve alteração.