Algoritmo de criptografia minúscula - Tiny Encryption Algorithm

CHÁ
TEA InfoBox Diagram.png
Duas rodadas Feistel (um ciclo) de TEA
Em geral
Designers Roger Needham , David Wheeler
Publicado pela primeira vez 1994
Sucessores XTEA
Detalhe de cifra
Tamanhos de chave 128 bits
Tamanhos de bloco 64 bits
Estrutura Rede Feistel
Rodadas variável; recomendou 64 rodadas Feistel (32 ciclos)
Melhor criptoanálise pública
TEA sofre de chaves equivalentes (veja o texto; Kelsey et al., 1996) e pode ser quebrada usando um ataque de chave relacionada que requer 2 23 textos simples escolhidos e uma complexidade de tempo de 2 32 . A melhor criptoanálise estrutural de TEA na configuração de chave secreta única padrão é a criptoanálise de correlação zero quebrando 21 rodadas em 2 121,5 tempo com menos do que o livro de código completo

Na criptografia , o Tiny Encryption Algorithm ( TEA ) é uma cifra de bloco notável por sua simplicidade de descrição e implementação , normalmente algumas linhas de código. Foi projetado por David Wheeler e Roger Needham, do Cambridge Computer Laboratory ; foi apresentado pela primeira vez no workshop Fast Software Encryption em Leuven, em 1994, e publicado pela primeira vez nos anais desse workshop.

A cifra não está sujeita a nenhuma patente .

Propriedades

TEA opera em dois inteiros não assinados de 32 bits (pode ser derivado de um bloco de dados de 64 bits ) e usa uma chave de 128 bits . Tem uma estrutura Feistel com uma sugestão de 64 rodadas, normalmente implementadas em pares denominados ciclos . Tem uma programação de chave extremamente simples , misturando todo o material chave exatamente da mesma maneira para cada ciclo. Diferentes múltiplos de uma constante mágica são usados ​​para prevenir ataques simples com base na simetria das rodadas. A constante mágica, 2654435769 ou 0x9E3779B9 é escolhida para ser ⌊2 32 / ϕ ⌋, onde ϕ é a proporção áurea (como um número Nothing-up-my manga ).

TEA tem alguns pontos fracos. Mais notavelmente, ele sofre de chaves equivalentes - cada chave é equivalente a três outras, o que significa que o tamanho efetivo da chave é de apenas 126 bits . Como resultado, o TEA é especialmente ruim como uma função hash criptográfica . Esta fraqueza levou a um método para cortar Microsoft 's Xbox consola de jogos , onde a cifra foi usado como uma função hash. TEA também é susceptível a um ataque fundamentais relacionados com o que requer 2 23 plaintexts escolhidos no âmbito de um par de chaves relacionadas-, com 2 32 complexidade de tempo. Devido a esses pontos fracos, a cifra XTEA foi projetada.

Versões

A primeira versão publicada do TEA foi complementada por uma segunda versão que incorporou extensões para torná-lo mais seguro. O bloco TEA (que foi especificado junto com o XTEA ) opera em blocos de tamanho arbitrário no lugar dos blocos de 64 bits do original.

Uma terceira versão ( XXTEA ), publicada em 1998, descreveu melhorias adicionais para aumentar a segurança do algoritmo Block TEA.

Código de referência

A seguir está uma adaptação das rotinas de criptografia e descriptografia de referência em C , lançadas em domínio público por David Wheeler e Roger Needham:

#include <stdint.h>

void encrypt (uint32_t v[2], const uint32_t k[4]) {
    uint32_t v0=v[0], v1=v[1], sum=0, i;           /* set up */
    uint32_t delta=0x9E3779B9;                     /* a key schedule constant */
    uint32_t k0=k[0], k1=k[1], k2=k[2], k3=k[3];   /* cache key */
    for (i=0; i<32; i++) {                         /* basic cycle start */
        sum += delta;
        v0 += ((v1<<4) + k0) ^ (v1 + sum) ^ ((v1>>5) + k1);
        v1 += ((v0<<4) + k2) ^ (v0 + sum) ^ ((v0>>5) + k3);
    }                                              /* end cycle */
    v[0]=v0; v[1]=v1;
}

void decrypt (uint32_t v[2], const uint32_t k[4]) {
    uint32_t v0=v[0], v1=v[1], sum=0xC6EF3720, i;  /* set up; sum is (delta << 5) & 0xFFFFFFFF */
    uint32_t delta=0x9E3779B9;                     /* a key schedule constant */
    uint32_t k0=k[0], k1=k[1], k2=k[2], k3=k[3];   /* cache key */
    for (i=0; i<32; i++) {                         /* basic cycle start */
        v1 -= ((v0<<4) + k2) ^ (v0 + sum) ^ ((v0>>5) + k3);
        v0 -= ((v1<<4) + k0) ^ (v1 + sum) ^ ((v1>>5) + k1);
        sum -= delta;
    }                                              /* end cycle */
    v[0]=v0; v[1]=v1;
}

Observe que a implementação de referência atua em valores numéricos de vários bytes. O artigo original não especifica como derivar os números sobre os quais atua a partir de conteúdo binário ou outro.

Veja também

  • RC4 - Uma cifra de fluxo que, assim como o TEA, foi projetada para ser muito simples de implementar.
  • XTEA - Primeira versão do sucessor do Block TEA.
  • XXTEA - Corrigido o sucessor do Bloco TEA.
  • Treyfer - Um algoritmo de criptografia simples e compacto com tamanho de chave e tamanho de bloco de 64 bits.

Notas

  1. ^ Matthew D. Russell (27 de fevereiro de 2004). "Minúsculo: Uma Visão Geral do TEA e Cifras Relacionadas" . Arquivado do original em 12 de agosto de 2007.
  2. ^ a b Kelsey, John; Schneier, Bruce; Wagner, David (1997). Criptoanálise de chave relacionada de 3-WAY, Biham-DES, CAST, DES-X NewDES, RC2 e TEA . Notas de aula em Ciência da Computação . 1334 . pp. 233–246. CiteSeerX  10.1.1.35.8112 . doi : 10.1007 / BFb0028479 . ISBN 978-3-540-63696-0.
  3. ^ Bogdanov, Andrey; Wang, Meiqin (2012). Criptoanálise linear de correlação zero com complexidade reduzida de dados (PDF) . Notas de aula em Ciência da Computação . 7549 . Criptografia de software rápida 2012. pp. 29–48. doi : 10.1007 / 978-3-642-34047-5_3 . ISBN 978-3-642-34046-8.
  4. ^ a b c Veículo com rodas, David J .; Needham, Roger M. (1994-12-16). TEA, um pequeno algoritmo de criptografia . Notas de aula em Ciência da Computação . 1008 . Leuven, Bélgica: Criptografia Rápida de Software: Segundo Workshop Internacional. pp. 363–366. doi : 10.1007 / 3-540-60590-8_29 . ISBN 978-3-540-60590-4.
  5. ^ Kelsey, John; Schneier, Bruce; Wagner, David (1996). Criptoanálise de programação chave de IDEA, G-DES, GOST, SAFER e Triple-DES (PDF) . Notas de aula em Ciência da Computação . 1109 . pp. 237–251. doi : 10.1007 / 3-540-68697-5_19 . ISBN 978-3-540-61512-5.
  6. ^ Michael Steil. "17 erros cometidos pela Microsoft no sistema de segurança do Xbox" . Arquivado do original em 16 de abril de 2009.

Referências

links externos