A criptografia esconde os bytes; a autenticação os comprova

Confidencialidade e integridade são propriedades separadas, e é possível ter a primeira sem a segunda. Uma cifra que apenas oculta os dados descriptografará qualquer coisa que lhe for entregue — incluindo bytes que um invasor alterou no caminho — e entregará o resultado à aplicação como se nada tivesse acontecido.

A criptografia autenticada fecha essa lacuna. Junto com o texto cifrado ela produz uma etiqueta de autenticação, e a descriptografia falha por completo quando a etiqueta não corresponde. Para um cofre isso importa mais do que parece: a alternativa é exibir silenciosamente um arquivo manipulado.

O que o AES-GCM realmente combina

O AES-GCM é uma construção consolidada que fornece ambas as propriedades de uma vez. Ele criptografa com o AES em modo counter e calcula uma etiqueta de autenticação sobre o texto cifrado, de modo que uma única operação entrega confidencialidade e detecção de adulteração.

A construção só é tão boa quanto suas entradas. Ela depende de um nonce exclusivo para cada criptografia sob uma dada chave, e de essa chave ser derivada e armazenada corretamente. Nenhum dos dois é implicado por nomear o algoritmo.

Por que o gerenciamento de nonce é o modo de falha silencioso

Um nonce é um valor que nunca deve se repetir para a mesma chave. Reutilizar um em uma construção em modo counter mina as garantias que o modo deve fornecer e pode expor relações entre os registros criptografados.

Este é um detalhe de implementação que nenhuma página de loja mencionará, e é uma das formas mais comuns de um design de outra forma padrão dar errado. É uma pergunta legítima a fazer a qualquer cofre que publique documentação técnica.

A derivação de chaves e o armazenamento de chaves são controles separados

Derivar uma chave do que você digita é um problema; manter essa chave derivada segura enquanto o aplicativo está fechado é outro. Um cofre pode fazer bem o primeiro e mal o segundo.

Trate-os como duas perguntas com duas respostas: qual função transforma a credencial em material de chave e a que custo, e onde reside a chave resultante entre as sessões. Os armazenamentos de chaves da plataforma existem justamente para responder à segunda.

O que procurar na documentação

  • Uma construção de criptografia autenticada nomeada, não apenas um tamanho de chave.
  • Uma declaração sobre a exclusividade do nonce por criptografia.
  • Se os nomes de arquivo e os metadados são protegidos junto com os corpos dos arquivos.
  • A derivação de chaves e o armazenamento de chaves descritos como mecanismos distintos.
  • Uma falha clara em caso de incompatibilidade de autenticação, em vez de uma exibição parcial ou de melhor esforço.

Lendo as afirmações com espírito crítico

  • Equiparar um rótulo de chave de 256 bits a um design completo.
  • Ignorar o gerenciamento de nonce porque o algoritmo é padrão.
  • Presumir que a criptografia autenticada protege uma tela desbloqueada — ela não protege.

O que a autenticação não cobre

A detecção de adulteração se aplica aos registros que o cofre gerencia. Ela não diz nada sobre cópias que saíram do cofre, sobre um sistema operacional comprometido observando o resultado descriptografado ou sobre alguém lendo a tela enquanto o arquivo está aberto.

A criptografia autenticada é uma garantia sobre os dados armazenados em repouso. É uma garantia forte, e uma garantia estreita.

Leo começa com um teste não sensível: «Procura uma construção de criptografia autenticada nomeada na documentação técnica». Em seguida, Leo segue a segunda verificação: «Verifica se os nomes de arquivo e os metadados são protegidos além dos corpos dos arquivos». Este cenário fictício ilustra o processo de decisão; não é um relato de testes de produto.

  • Equiparar um rótulo de chave de 256 bits a um design completo
  • Ignorar o gerenciamento de nonce
  • Presumir que a criptografia protege uma tela desbloqueada

O AES-GCM previne a exclusão?

Não. Ele protege a confidencialidade e a integridade, não a disponibilidade.

Autenticação significa login do usuário?

Aqui significa autenticação criptográfica de integridade, não login em conta.

Fontes principais deste guia