DKIM
O que é DKIM?
DKIMNorma de autenticação de e-mail definida no RFC 6376 que permite ao domínio remetente adicionar uma assinatura criptográfica às mensagens de saída, para que os destinatários verifiquem que cabeçalhos e corpo não foram alterados.
O DomainKeys Identified Mail (DKIM) está especificado no RFC 6376. O Mail Transfer Agent remetente calcula um hash sobre os cabeçalhos selecionados (escolhidos com a etiqueta h=, tipicamente From, Subject e Date) e o corpo, assina-o e adiciona um cabeçalho DKIM-Signature: que indica o domínio assinante (d=) e o seletor (s=). O destinatário obtém a chave pública a partir de <seletor>._domainkey.<domínio> (um registo DNS TXT) e verifica a assinatura. Por proteger o conteúdo e não o caminho de transporte, o DKIM sobrevive à maioria dos encaminhamentos e fornece o identificador criptográfico com o qual o DMARC faz o alinhamento.
Falhas no mundo real
O comprimento da chave não é opcional. Em 2012, o investigador Zachary Harris descobriu que a Google assinava com uma chave RSA de 512-bit fatorável; quebrou-a com cerca de $75 de computação na cloud e enviou uma falsificação a Larry Page "da parte de" Sergey Brin. eBay, Yahoo, Twitter e Amazon partilhavam a mesma fraqueza, e a Google migrou para 2048-bit em poucos dias. O RFC 8463 (2018) acrescentou o algoritmo Ed25519-SHA256, compacto e rápido, mas muitos fornecedores de caixas de correio ainda só validam RSA, pelo que os operadores publicam ambos sob seletores distintos.
Um abuso mais subtil é o ataque de replay de DKIM: como o DKIM não transporta histórico de entrega, um atacante que obtenha uma única mensagem validamente assinada por um domínio de elevada reputação pode reenviá-la a milhares de vítimas e a assinatura continua a validar, tomando emprestada a reputação do domínio. As defesas incluem o oversigning de cabeçalhos críticos, evitar a etiqueta de comprimento do corpo l=, definir uma expiração com a etiqueta x= e rodar as chaves regularmente (conforme as orientações da M3AAWG).
flowchart LR
A[MTA remetente] -->|hash cabecalhos+corpo,<br/>assina com chave privada| B[Adiciona cabecalho DKIM-Signature]
B --> C[Mensagem em transito]
C --> D[MTA destinatario]
D -->|consulta selector._domainkey TXT| E[(Chave publica no DNS)]
E --> D
D -->|recalcula hash,<br/>verifica assinatura| F{Valida e intacta?}
F -->|Sim| G[Passa - alimenta alinhamento DMARC]
F -->|Nao| H[Falha - DMARC decide]● Exemplos
- 01
Um servidor de saída assina e-mails de marketing com o seletor s1 e a chave d=example.com, permitindo o alinhamento DMARC.
- 02
Rotação de uma chave DKIM publicando um novo seletor antes de remover o antigo para evitar falhas de validação.
● Perguntas frequentes
O que é DKIM?
Norma de autenticação de e-mail definida no RFC 6376 que permite ao domínio remetente adicionar uma assinatura criptográfica às mensagens de saída, para que os destinatários verifiquem que cabeçalhos e corpo não foram alterados. Pertence à categoria Segurança de rede da cibersegurança.
O que significa DKIM?
Norma de autenticação de e-mail definida no RFC 6376 que permite ao domínio remetente adicionar uma assinatura criptográfica às mensagens de saída, para que os destinatários verifiquem que cabeçalhos e corpo não foram alterados.
Como se defender contra DKIM?
As defesas contra DKIM costumam combinar controles técnicos e práticas operacionais, conforme detalhado na definição acima.
Quais são outros nomes para DKIM?
Nomes alternativos comuns: DomainKeys Identified Mail.