Criptografia de chave pública, também conhecida como
criptografia assimétrica, é uma classe de protocolos de criptografia baseados em
algoritmos que requerem duas
chaves, uma delas sendo
secreta (ou
privada) e a outra delas sendo
pública. Apesar de diferentes, as duas partes desse par de chaves são matematicamente ligadas. A chave pública é usada, por exemplo, para
encriptar purotexto ou para verificar uma
assinatura digital; já a chave privada é usada para a operação oposta, nesses exemplos para decriptar cifrotexto ou para criar uma assinatura digital. O termo
assimétrica vem do uso de diferentes chaves para realizar essas funções opostas, cada uma a inversa da outra – como contrapartida da criptografia ("simétrica") convencional, a qual depende da mesma chave para realizar ambos.
Algoritmos de chave pública são baseados em problemas matemáticos que atualmente não admitem solução eficiente e são inerentes em determinados relacionamentos de fatoração inteira,
logaritmo discreto, e
curva elíptica. É computacionalmente fácil para um usuário gerar um par de chaves, uma pública e uma privada, e usá-lo para encriptação e decriptação. A força está na "impossibilidade" (computacionalmente impraticável) para uma chave privada gerada apropriadamente ser determinada pela sua chave pública correspondente. Assim, a chave pública pode ser publicada sem comprometer a segurança. Segurança depende apenas de manter a chave privada secreta, isto é, a chave privada não deve ser descoberta por ninguém. Algoritmos de chave pública, diferente de
algoritmos de chave simétrica,
não exigem um
canal seguro para a troca inicial de uma (ou mais)
chave secreta entre as partes.
Por causa da complexidade computacional da encriptação assimétrica, ela é tipicamente usada apenas para transferir uma chave de encriptação simétrica pela qual a mensagem (e normalmente a conversa inteira) é encriptada. A encriptação/decriptação simétrica é baseada em algoritmos mais simples e muito mais rápidos.