CoderTools

Criptografia/Descriptografia TEA/XTEA/XXTEA

Família Tiny Encryption Algorithm - Cifras de Bloco Simétricas Leves

Aviso de Segurança

TEA/XTEA/XXTEA são cifras leves usadas principalmente em sistemas embarcados e jogos. Para aplicações de alta segurança, use AES em vez disso.

Todos os algoritmos da família TEA usam uma chave fixa de 128 bits (16 bytes).
Opções de formato

Sobre a família TEA

TEA (Tiny Encryption Algorithm) foi projetado por David Wheeler e Roger Needham no Computer Laboratory da Universidade de Cambridge em 1994. Sua característica essencial é a simplicidade radical: o laço de criptografia inteiro cabe em menos de 10 linhas de C, alcançando segurança de cifra de blocos de 64 bits através de 32 iterações de um double-round tipo Feistel. A constante mágica δ = 0x9E3779B9 (aproximadamente φ × 2³², o número áureo × 2³²) é adicionada ao acumulador a cada rodada para evitar pontos fixos de chaves fracas.

A família TEA evoluiu especificamente para corrigir fraquezas descobertas: XTEA (1997) abordou os ataques de chaves relacionadas em TEA reprojetando o calendário de chaves para permutar as quatro palavras de 32 bits de forma diferente em cada rodada. XXTEA (1998) estendeu o design a blocos de comprimento variável via técnica de mistura Feistel em toda a mensagem. As três variantes compartilham o mesmo tamanho de chave de 128 bits e a estrutura de constante de rodada baseada em δ, mas diferem significativamente em propriedades de segurança e flexibilidade de tamanho de bloco.

Comparação de algoritmos

Algoritmo Tamanho do bloco Comprimento da chave Rodadas Segurança
TEA 64 bits 128 bits 64 Legado
XTEA 64 bits 128 bits 64 Boa
XXTEA Variável (≥64 bits) 128 bits Variável (6+52/n) Boa

Características principais

  • Laço núcleo TEA: apenas 7 linhas de C — a cifra de bloco mais compacta para uso em produção
  • Chave de 128 bits dividida em quatro palavras de 32 bits; cada rodada usa uma permutação de subchave diferente (XTEA/XXTEA)
  • 32 double-rounds (64 operações de rodada única) usando δ = 0x9E3779B9 como constante de rodada
  • XXTEA suporta blocos de comprimento variável — vantagem chave para cifrar dados de tamanho arbitrário sem preenchimento

Modos de criptografia (apenas TEA/XTEA)

  • CBC: Encadeamento de blocos cifrados — cada bloco TEA/XTEA de 64 bits é combinado com XOR com o bloco cifrado anterior antes dos 32 double-rounds. O IV de 64 bits encadeia os blocos; cargas úteis idênticas em posições diferentes produzem cifración diferente.
  • ECB: Livro de códigos eletrônico — cada bloco de 64 bits é processado independentemente pelos 32 double-rounds com a mesma chave. Dois blocos idênticos de texto simples sempre produzem cifrado idêntico, revelando a estrutura dos dados. Não recomendado exceto para um único bloco.
  • CFB: Realimentação de cifra — TEA/XTEA atua como gerador de fluxo de chave; o texto cifrado anterior é processado por TEA/XTEA e combinado com XOR com o próximo segmento de texto simples. Converte a cifra de blocos de 64 bits em cifra de fluxo de granularidade de byte, útil para fluxos de dados de jogos de comprimento variável.
  • OFB: Realimentação de saída — o fluxo de chave é produzido iterando a criptografia TEA/XTEA no IV, independentemente do texto simples. A não propagação de erros significa que um byte corrompido afeta exatamente um byte do texto simples recuperado — adequado para telemetria embarcada onde erros de bit devem estar contidos.
  • RAW: Bloco bruto - Criptografia direta de bloco único sem modo de encadeamento. Não requer IV.

Considerações de segurança

  • TEA original: David Wagner (1997) demonstrou ataques de chaves relacionadas; evitar TEA quando o atacante pode escolher chaves relacionadas — usar XTEA ou XXTEA para qualquer nova implementação
  • XTEA corrige a vulnerabilidade de chaves relacionadas do TEA, mas o tamanho de bloco de 64 bits ainda limita a segurança a 2³² blocos (~32 GB) por chave antes que colisões do paradoxo do aniversário se tornem prováveis
  • A mistura de mensagem completa do XXTEA requer pelo menos 2 passagens; para blocos muito pequenos (≤ 2 palavras), as etapas de mistura reduzidas enfraquecem a segurança — preencher dados curtos com pelo menos 3 palavras
  • Todas as três variantes TEA são inadequadas para novas aplicações de propósito geral; para sistemas embarcados modernos, preferir ChaCha20 ou AES-128-CTR — reservar a família TEA para compatibilidade com formatos legados ou ambientes extremamente restritos

Casos de uso comuns

  • Proteção de arquivos salvos de jogos Xbox e Xbox 360: o Xbox original da Microsoft usava XTEA internamente para assinar e verificar dados de salvamento do console, impedindo adulteração via cartões de memória
  • Mensageiro instantâneo QQ: o protocolo QQ inicial da Tencent usava uma variante XTEA modificada para criptografar dados de sessão entre clientes e servidores, documentado em projetos de engenharia reversa de código aberto do protocolo QQ
  • Criptografia de ativos de jogos Cocos2d-x e Unity: TEA/XTEA é popular em motores de jogos para ofuscar arquivos de recursos (texturas, áudio, scripts) devido ao seu tiny code footprint em versões móveis reduzidas
  • Implementações em microcontroladores e FPGA onde a ROM é medida em kilobytes: o laço núcleo de 7 linhas do TEA compila em menos de 100 bytes de código máquina ARM Thumb-2, tornando-o viável em MCUs com flash muito limitado

Referências

Menu Rápido

Nenhuma ferramenta recente