Uma mensagem assinada ainda pode ser spam. O domínio de assinatura também pode diferir do endereço exibido ao destinatário.
O que uma assinatura DKIM cobre?
Uma assinatura DKIM protege campos de cabeçalho selecionados e um hash do corpo.
A tag h= lista os campos de cabeçalho assinados. A tag bh= contém o hash do corpo. O servidor de envio produz a assinatura com sua chave privada. Os destinatários a verificam com a chave pública correspondente.
O destinatário recalcula o hash do corpo. Ele também verifica a assinatura sobre os cabeçalhos selecionados e o cabeçalho de assinatura, que contém esse hash.
A RFC 6376 exige a assinatura do cabeçalho From. Outros campos de cabeçalho podem permanecer sem assinatura. Adicionar um Reply-To não assinado pode, portanto, manter DKIM válido.
Cabeçalhos repetidos precisam de tratamento separado. O assinante pode listar um nome de cabeçalho mais vezes do que ele aparece para impedir que outra ocorrência seja adicionada sem detecção.
Onde o destinatário encontra a chave pública?
O destinatário localiza a chave pública usando o domínio de assinatura e o seletor, o nome que identifica essa chave. A tag d= fornece o domínio. A tag s= fornece o seletor.
Para d=example.com e s=foo.bar, o nome de consulta é foo.bar._domainkey.example.com. O seletor permite chaves diferentes sob o mesmo domínio de assinatura.
Durante a rotação, publique a chave substituta antes de assinar com ela. Mantenha a chave de verificação antiga disponível enquanto mensagens assinadas com ela ainda estiverem em trânsito. Removê-la prematuramente impede que os destinatários verifiquem essas mensagens.
Por que mudanças de formatação podem quebrar uma assinatura?
A canonicalização, a normalização aplicada antes da assinatura e da verificação, determina quais mudanças de formatação DKIM tolera.
A tag c= escolhe algoritmos separados para cabeçalho e corpo. No relaxed/relaxed, ambos usam normalização relaxed.
| Algoritmo | Comportamento do cabeçalho | Comportamento do corpo |
|---|---|---|
simple | Preserva a formatação do cabeçalho | Ignora linhas vazias no final |
relaxed | Normaliza maiúsculas/minúsculas, dobramento e espaços em branco do nome do cabeçalho | Normaliza espaços em branco e linhas vazias finais |
Um cabeçalho dobrado continua em outra linha. O processamento relaxed de cabeçalho tolera esse dobramento. O processamento simple pode falhar depois que um servidor redobra o mesmo cabeçalho.
Compare o conteúdo assinado antes e depois do relay que falhou, porque uma mudança de formatação invisível pode explicar o resultado.
Quais algoritmos de assinatura DKIM suporta?
DKIM suporta os algoritmos de assinatura RSA e Ed25519, ambos combinados com SHA-256.
O RSA tem um tamanho mínimo de chave de 1024 bits conforme a RFC 8301. Chaves menores oferecem resistência insuficiente ao comprometimento de chave.
O tamanho RSA recomendado é de pelo menos 2048 bits, oferecendo mais resistência ao comprometimento de chave. Escolha esse tamanho quando seu sistema de assinatura o suportar. A especificação proíbe rsa-sha1 para assinatura e verificação.
A RFC 8463 adiciona ed25519-sha256. Uma mensagem pode conter assinaturas RSA e Ed25519 para compatibilidade com destinatários que suportam algoritmos diferentes.
A orientação do Yahoo também exige uma chave DKIM de no mínimo 1024 bits.
O que acontece quando uma lista de e-mails edita a mensagem?
Uma edição pode invalidar DKIM quando altera conteúdo coberto pela assinatura.
O encaminhamento por si só não altera o conteúdo assinado. Uma assinatura intacta pode sobreviver a ele. Um rodapé anexado pode alterar o hash do corpo. Um Subject assinado que foi reescrito pode invalidar a assinatura do cabeçalho.
A tag opcional l= limita a cobertura do corpo a um número especificado de bytes. Com l=100, o conteúdo após os primeiros 100 bytes normalizados fica desprotegido. Anexar texto enganoso pode, portanto, manter a assinatura válida.
Evite esse limite quando precisar que todo o corpo esteja protegido. O ARC permite que intermediários preservem evidências assinadas de autenticação antes de suas edições.
Como você configura DKIM com Bird?
Você publica o registro DKIM retornado quando registra seu domínio de envio.
O campo dkim.mode de API tem como padrão txt. Com esse modo, publique a chave pública em um registro TXT. O schema também lista delegated. Esse valor retorna HTTP 422 quando você registra um domínio de envio, então use txt.
Bird cria uma chave e um seletor separados para cada organização que usa um domínio de envio. Organizações que usam o mesmo domínio não precisam compartilhar uma chave de assinatura.
O guia de autenticação explica o registro retornado.
Uma assinatura aprovada prova que a mensagem é segura?
Uma assinatura aprovada estabelece responsabilidade pelo conteúdo assinado. Ela não estabelece se a mensagem é desejada ou confiável.
Ela também não exige que o domínio de assinatura corresponda ao domínio From visível. DMARC fornece essa regra de correspondência por meio do alinhamento. A reputação do remetente, a avaliação que o destinatário faz do tráfego de um remetente, continua sendo uma consideração separada.
Em resumo
Apenas o conteúdo selecionado é protegido.
DKIM cobre os campos de cabeçalho listados e um hash do corpo. O conteúdo não protegido pode mudar sem invalidar a assinatura.
Seletores localizam as chaves de verificação.
O seletor e o domínio de assinatura identificam o registro DNS que contém a chave pública.
A normalização afeta a verificação.
Os algoritmos simple e relaxed tratam mudanças de formatação de maneiras diferentes.
O encaminhamento não garante aprovação.
Uma assinatura intacta pode sobreviver ao encaminhamento, mas alterações no conteúdo assinado podem quebrá-la.