PRINCÍPIO
A criptografia de chave pública usando certificados X.509 permite proteger as trocas de dados sem necessitar de um segredo compartilhado previamente. O remetente utiliza a chave pública do destinatário (disponível em seu certificado X.509) para criptografar um segredo temporário, que será então usado para criptografar o conteúdo com um algoritmo simétrico eficiente.
DETALHES TÉCNICOS
A criptografia com certificado X.509 combina dois tipos de criptografia:
- Criptografia assimétrica (ou de chave pública): usada para troca segura da chave de sessão
- Criptografia simétrica: usada para criptografia eficiente de dados
A aplicação oferece dois algoritmos de criptografia simétrica para escolher:
- AES-GCM (Advanced Encryption Standard em modo Galois/Counter com AAD - Additional Authenticated Data)
- ChaCha20-Poly1305 (Combinação da cifra de fluxo ChaCha20 com o autenticador Poly1305)
PROCESSO DE CRIPTOGRAFIA
- O remetente recupera o certificado X.509 do destinatário contendo sua chave pública
- Uma chave simétrica aleatória (chave de sessão) é gerada
- Esta chave de sessão é criptografada com a chave pública do certificado X.509 do destinatário
- A chave de sessão é usada com o algoritmo escolhido (AES-GCM ou ChaCha20-Poly1305) para criptografar os dados
- A mensagem final contém:
- A chave de sessão criptografada
- Os dados criptografados
- Informações sobre o algoritmo utilizado
- Metadados de autenticação
CARACTERÍSTICAS DOS ALGORITMOS SIMÉTRICOS
AES-GCM
- Usa o algoritmo AES com tamanho de chave de 256 bits
- Modo GCM (Galois/Counter Mode) com AAD que garante tanto confidencialidade quanto autenticidade
- Requer um vetor de inicialização (IV) único para cada mensagem
- Padrão amplamente adotado e auditado
- Excelente desempenho em processadores com instruções AES-NI
ChaCha20-Poly1305
- Combina a cifra de fluxo ChaCha20 (256 bits) com o autenticador Poly1305
- Requer um nonce único para cada mensagem
- Excelente desempenho em dispositivos móveis e processadores sem instruções AES-NI
- Adotado em protocolos modernos como TLS 1.3
INDEPENDÊNCIA CRIPTOGRÁFICA
Os dois algoritmos (AES-GCM e ChaCha20-Poly1305) são baseados em princípios criptográficos diferentes:
- AES-GCM usa criptografia de bloco
- ChaCha20-Poly1305 usa criptografia de fluxo
Esta independência apresenta uma importante vantagem de segurança: se uma vulnerabilidade fosse descoberta em um dos algoritmos, o outro normalmente não seria afetado pela mesma vulnerabilidade. Isso oferece segurança adicional à aplicação, que pode alternar de um algoritmo para outro se necessário.