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.
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
Ferramentas Relacionadas
Criptografia/Descriptografia AES
Criptografe e descriptografe texto com segurança usando o algoritmo AES
Criptografia/Descriptografia Blowfish
Cifra de bloco simétrica rápida projetada por Bruce Schneier, com comprimento de chave variável (32-448 bits)
Criptografia/Descriptografia DES/3DES
Criptografe e descriptografe usando algoritmos DES e 3DES com múltiplos modos e opções de preenchimento