Introdução ao XAES-256-GCM
- XAES-256-GCM é um algoritmo de criptografia autenticada (AEAD) que usa uma chave de 256 bits e um nonce de 192 bits
- Objetivos principais:
- oferecer suporte seguro a nonces gerados aleatoriamente
- conformidade com FIPS 140
- implementação fácil em bibliotecas de criptografia comuns
Objetivos de design do XAES-256-GCM
- Uso de um nonce grande para permitir geração aleatória segura para uma quantidade ilimitada de mensagens
- Possibilidade de uso em diversos ambientes por meio da conformidade com FIPS 140
- Implementação simples para reduzir a carga sobre o usuário
Como o XAES-256-GCM funciona
- Usa uma estrutura de nonce estendida baseada em AES-256-GCM
- Calcula uma chave derivada usando a chave de entrada e o nonce
- Processa a mensagem com três chamadas de AES-256
Implementação e otimização
- A implementação de referência em Go tem menos de 100 linhas de código
- Usa apenas
crypto/cipher e crypto/aes da biblioteca padrão
- Pode ser descrito usando NIST SP 800-108r1 KDF e NIST AES-256-GCM AEAD
Implementações de terceiros e compatibilidade
- Há implementações de terceiros em .NET 8+, pyca/cryptography e Web Cryptography API
- Não é possível alterar o número de rodadas para manter a conformidade com FIPS 140
Alternativas e vetores de teste
- Existem várias alternativas, como AES-GCM-SIV
- Inclui vetores de teste para os principais caminhos de código
Resumo
- XAES-256-GCM foi projetado como um AEAD seguro, compatível e interoperável
- Atua como complemento ao XChaCha20Poly1305 e ao AES-GCM-SIV
- Espera-se que seja adicionado à biblioteca padrão do Go
Opinião do GN⁺
- O uso de um nonce grande no XAES-256-GCM é um ponto notável por aumentar a segurança
- A conformidade com FIPS 140 permite seu uso em diversos ambientes
- Sua implementação fácil em linguagens como Go o torna útil para desenvolvedores
- Também vale a pena considerar alternativas como AES-GCM-SIV
- Ao adotar uma nova tecnologia, é preciso avaliar cuidadosamente desempenho e compatibilidade
1 comentários
Comentários do Hacker News
O design é muito inteligente: baseado em CMAC, permitindo derivar a chave usando AES-CBC quando primitivas de baixo nível não estão disponíveis
CryptoKeyapropriada destinada a AES-CBC, podendo ser armazenada no IndexedDBO trabalho do Filippo é excelente: resolve o problema de ter que rotacionar a chave a cada cerca de 2^32 mensagens ao usar nonces aleatórios
Eu gostaria que isso existisse alguns anos atrás, quando escrevi um sistema de arquivos criptografado
Espero que isso seja usado em uma variante compatível com FIPS do age[1] para criptografia de arquivos de arquivo
Pergunta de um não criptógrafo: por que usar um nonce de 192 bits e não de 256 bits?
(risco de colisão de 2⁻³² em 2⁸⁰ mensagens)