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

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

Neste artigo, introduzimos os conceitos de chaves públicas, chaves privadas e os princípios da criptografia assimétrica. Comparamos seus prós e contras em relação à criptografia simétrica, bem como as diferenças em seus cenários de uso.

Darcy Ye
Darcy Ye
Developer

Você pode ter ouvido falar sobre chaves privadas e chaves públicas em muitos contextos, mas você realmente sabe 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).

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

Da mesma forma, você provavelmente pode adivinhar que a criptografia simétrica se refere ao método de criptografar e decifrar dados usando a mesma chave.

Assim, usamos uma anotação simples para mostrar o processo de criptografia/decriptação de ambas as criptografias simétricas e assimétricas.

Criptografia e decriptação

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

A Logto usa o algoritmo EC para criptografia e decriptação de transmissão de dados, pois é mais eficiente e seguro do que o RSA. Você pode ler este post para mais detalhes. A Logto também vai oferecer suporte ao RSA na próxima versão para melhor compatibilidade com alguns sistemas legados.

Por que usar criptografia assimétrica?

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

Como a criptografia simétrica usa a mesma chave, distribuir a chave em uma conexão de rede insegura pode arriscar expor a chave a terceiros maliciosos. Um terceiro malicioso poderia usar a chave roubada para acessar qualquer informação criptografada com essa chave, representando um risco significativo de segurança.

Dois casos de uso comuns de criptografia assimétrica

Enviar dados criptografados

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

Como as chaves públicas estão teoricamente disponíveis para muitas pessoas, em um cenário ideal, o destinatário pode receber informações criptografadas de muitos remetentes. Além disso, vários remetentes não podem saber que tipo de informações outros remetentes enviaram ao destinatário, pois apenas o destinatário (o detentor da chave privada) pode decifrar e recuperar as informações.

Chaves públicas e chaves privadas são frequentemente geradas simultaneamente. O que mencionamos acima é a geração de chaves privadas e chaves públicas por uma parte, e então distribuindo a chave pública para seus usuários. Se você precisar garantir uma comunicação segura entre ambas as partes, ambas as partes precisam gerar suas próprias chaves privadas e chaves públicas, e então trocar suas respectivas 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 criptografar e decriptar.

Usar uma assinatura para garantir a fidelidade dos dados

Na criptografia assimétrica, a parte que possui 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, garantindo que os dados não foram adulterados durante a transmissão.

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

Assinatura e verificação

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

Você provavelmente acha esses dois casos de uso mencionados acima muito familiares. Em nossas vidas diárias, quase todos os serviços com arquitetura cliente-servidor usam criptografia assimétrica para garantir a segurança dos dados.

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

Desvantagens da criptografia assimétrica

Em geral, o comprimento da chave para criptografia simétrica é de 128 ou 256 bits, enquanto o comprimento da chave para criptografia assimétrica pode chegar a 4.096 bits. Isso ocorre porque a chave privada e a chave pública estão matematicamente relacionadas e formam pares de chaves únicos. Em teoria, conhecendo a chave pública, é possível calcular o valor da chave privada, mas devido à complexidade dos algoritmos envolvidos, isso geralmente leva uma quantidade considerável de tempo. Para tornar a tarefa de "quebrar" a chave privada "impossível", o uso de comprimentos de chave mais longos é uma abordagem direta.

Conclusões

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

Em cenários de negócios, a criptografia simétrica e assimétrica são frequentemente usadas juntas para equilibrar desempenho e segurança de dados. Ao construir seu próprio serviço, você pode considerar os requisitos de segurança dos dados em cada estágio e selecionar os algoritmos de criptografia apropriados de acordo.