Português (Portugal)
  • chave-pública
  • chave-privada
  • criptografia-assimétrica
  • criptografia-simétrica

Chave pública, chave privada e criptografia assimétrica

Neste artigo, apresentámos os conceitos de chaves públicas, chaves privadas e os princípios da encriptação assimétrica. Comparámos os seus prós e contras em relação à encriptação simétrica, bem como as diferenças nos seus cenários de utilização.

Darcy Ye
Darcy Ye
Developer

Poderás ter ouvido falar sobre chaves privadas e chaves públicas em muitos contextos, mas sabes realmente o que elas são?

Criptografia assimétrica vs criptografia simétrica

Chaves privadas e chaves públicas são conceitos na criptografia assimétrica (também conhecida como criptografia de chave pública, PKC).

Criptografia assimétrica refere-se a um método de encriptar ou assinar dados usando duas chaves diferentes (chave privada + chave pública), que corresponde à necessidade de desencriptação ou verificação de assinatura. A chave pública é visível para qualquer pessoa, enquanto a chave privada está apenas disponível para o proprietário da chave. Podes facilmente perceber isso pelo nome das chaves.

Da mesma forma, podes provavelmente adivinhar que a criptografia simétrica se refere ao método de encriptar e desencriptar dados usando a mesma chave.

Assim, usamos uma anotação simples para mostrar o processo de encriptação/desencriptação tanto da criptografia simétrica quanto da assimétrica.

Encriptação e desencriptação

É importante notar que as funções de encriptação/desencriptação nos algoritmos de encriptação simétrica e assimétrica são diferentes e frequentemente usam algoritmos diferentes. Algoritmos comuns de encriptação simétrica incluem DES, AES, RC2, RC4 e outros, enquanto algoritmos comuns de encriptação assimétrica incluem RSA e EC.

A Logto usa o algoritmo EC para encriptação e desencriptação de transmissão de dados, uma vez que é mais eficiente e seguro que o RSA. Podes ler este post para mais detalhes. A Logto irá também suportar o RSA na próxima versão para melhor compatibilidade com alguns sistemas legados.

Porque usar a criptografia assimétrica?

A criptografia assimétrica resolve o problema da distribuição de chaves na criptografia simétrica.

Uma vez que a encriptação simétrica usa a mesma chave, distribuir a chave sobre uma rede de conexão insegura pode implicar o risco de expor a chave a terceiros maliciosos. Um terceiro malicioso poderia usar a chave roubada para aceder a qualquer informação encriptada com essa chave, representando um risco significativo para a segurança.

Dois casos de uso comuns da criptografia assimétrica

Enviar dados encriptados

O remetente pode usar a chave pública do destinatário para encriptar informações, e o destinatário usa a sua chave privada para desencriptar as informações.

Uma vez que as chaves públicas são teoricamente disponíveis para muitas pessoas, num cenário ideal, o destinatário pode receber informações encriptadas de muitos remetentes. Além disso, múltiplos remetentes não podem saber que tipo de informações outros remetentes enviaram ao destinatário, já que apenas o destinatário (o detentor da chave privada) pode desencriptar e recuperar as informações.

As chaves públicas e privadas são frequentemente geradas simultaneamente. O que mencionámos acima é a geração de chaves privadas e públicas de uma parte, e depois distribuir a chave pública para os seus utilizadores. Se precisas assegurar uma comunicação segura entre ambas as partes, então ambas as partes precisam gerar suas próprias chaves privadas e públicas, e depois trocar as respetivas chaves públicas. Desta forma, ambas as partes têm as chaves públicas uma da outra, e podem usar suas próprias chaves privadas e a chave pública da outra parte para encriptação e desencriptação.

Usar uma assinatura para garantir a fidelidade dos dados

Na criptografia assimétrica, a parte que detém a chave privada pode assinar os dados que envia. Subsequentemente, o destinatário com a chave pública pode verificar a consistência dos dados e da assinatura ao receber os dados, assegurando que os dados não foram alterados durante a transmissão.

Usando a anotação que definimos na seção anterior, a assinatura e a verificação de assinatura podem ser representadas como a seguir:

Assinatura e verificação

A verificação da assinatura digital prova que a parte que gera a assinatura conhece a chave privada correspondente.

Provavelmente achas esses dois casos de uso mencionados acima muito familiares. No nosso dia a dia, quase todos os serviços com arquitetura servidor-cliente usam a criptografia assimétrica para garantir a segurança dos dados.

Como um framework de identidade de utilizador em rápido crescimento, a Logto também usa extensivamente PKC para garantir a segurança dos dados dos utilizadores. Após os utilizadores completarem o processo de login, a Logto emite um token de acesso aos utilizadores para lhes dar permissões específicas para aceder aos recursos requeridos. A chave pública publicada pela Logto é usada para verificar se o token de acesso foi de facto emitido pela Logto e não foi adulterado por atacantes maliciosos.

Desvantagens da criptografia assimétrica

Em geral, o comprimento da chave para a encriptação simétrica é de 128 ou 256 bits, enquanto o comprimento da chave para a encriptação assimétrica pode atingir 4096 bits. Isto porque a chave privada e a chave pública estão matematicamente relacionadas e são pares de chaves únicos. Em teoria, conhecer a chave pública permite calcular o valor da chave privada, mas devido à complexidade dos algoritmos envolvidos, muitas vezes leva um tempo considerável. Para tornar a tarefa de "quebrar" a chave privada "impossível", usar comprimentos de chave mais longos é uma abordagem direta.

Conclusões

A encriptação assimétrica consome mais recursos computacionais e tempo em comparação com a encriptação simétrica durante os cálculos, conforme discutido na seção anterior. Em aplicações onde a comunicação é frequente, o uso generalizado da encriptação assimétrica pode impactar o desempenho e a experiência do utilizador.

Em cenários empresariais, a encriptação simétrica e assimétrica são frequentemente usadas em conjunto para equilibrar o desempenho e a segurança dos dados. Ao construir o teu próprio serviço, podes considerar os requisitos de segurança dos dados em cada etapa e selecionar os algoritmos de encriptação adequados em conformidade.