A cifragem autenticada devolve duas coisas ao mesmo tempo: texto cifrado que esconde o conteúdo e uma etiqueta que permite ao recetor detetar adulterações. Antes, estas funções eram montadas a partir de peças separadas, e as combinações erradas produziam falhas subtis. As construções modernas fixam a combinação e as condições em que ela é válida. A palavra autenticada refere-se aqui à etiqueta, não a uma pessoa.

As duas garantias abrangem o pacote protegido e nada fora dele.

Duas garantias numa só construção

A cifragem responde se um observador consegue ler isto; a integridade responde se foi alterado. Um túnel precisa das duas, porque conteúdo modificado é pior do que conteúdo ilegível. O AEAD define como as combinar sob uma chave, juntamente com dados associados que são autenticados mas não cifrados. O recetor rejeita a entrada que falha a verificação.

Os dados associados ligam os campos visíveis à verificação. Quais campos entram depende do protocolo, e isso não promete que cada endereço exterior se tenha tornado secreto: um campo pode ficar coberto pela etiqueta e continuar legível na rede.

O nonce não é um detalhe

As chaves e os nonce têm de ser tratados corretamente, e a reutilização de um nonce falha de forma grave. Repetir um nonce sob uma chave pode revelar relações entre mensagens e minar por completo a garantia de integridade. Por isso o protocolo, e não a aplicação, é dono da geração e da ordem dos nonce.

É uma condição da garantia, não uma sugestão de implementação. Nonce descuidados não fornecem a propriedade anunciada.

A proteção contra repetição é estado separado

Um pacote antigo válido pode ser repetido enquanto a sua etiqueta se mantém intacta, porque a etiqueta prova autenticidade e não frescura. O tratamento de repetições precisa do seu próprio estado: números de sequência, uma janela e uma regra sobre o que aceitar. Esse estado vive na implementação do protocolo e não tem relação com a escolha da cifra. Um túnel com cifragem forte e sem proteção contra repetição continua a aceitar o tráfego de ontem.

Os dois mecanismos cooperam sem serem o mesmo, e um pode estar correto enquanto o outro falta.

O que a etiqueta não lhe diz

A identidade do par é estabelecida por certificados ou chaves partilhadas previamente, não pelo facto de uma cifra ser autenticada. O encaminhamento, a resolução de nomes e a política de registos do operador ficam fora da fronteira criptográfica. Uma negociação de algoritmo bem-sucedida diz apenas que os dois extremos concordaram numa suite, isso fala de compatibilidade, não da qualidade da implementação em cada lado.

Para os utilizadores: escolham uma configuração de protocolo mantida e suportada. O AEAD é uma propriedade dessa configuração, não um convite a construir cifragem à mão em torno de um túnel.

Registem que suite foi negociada, se a proteção contra repetição está ativa e como os pares são identificados. Três factos, três garantias diferentes.

Artigos relacionados