Dois peixes - Twofish

Dois peixes
Twofishalgo.svg
O algoritmo Twofish
Em geral
Designers Bruce Schneier
Publicado pela primeira vez 1998
Derivado de Blowfish , SAFER , Square
Relacionado a Threefish
Certificação Finalista AES
Detalhe de cifra
Tamanhos de chave 128, 192 ou 256 bits
Tamanhos de bloco 128 bits
Estrutura Rede Feistel
Rodadas 16
Melhor criptoanálise pública
A criptoanálise diferencial truncada requer aproximadamente 2 51 textos simples escolhidos. Ataque diferencial impossível que quebra 6 rodadas de 16 da versão da chave de 256 bits usando 2 256 etapas.

Na criptografia , Twofish é uma cifra de bloco de chave simétrica com um tamanho de bloco de 128 bits e tamanhos de chave de até 256 bits. Foi um dos cinco finalistas do concurso Advanced Encryption Standard , mas não foi selecionado para padronização. Twofish está relacionado à cifra de bloco anterior Blowfish .

As características distintivas do Twofish são o uso de caixas S dependentes de chave pré-computadas e uma programação de chaves relativamente complexa . Metade de uma chave de n bits é usada como a chave de criptografia real e a outra metade da chave de n bits é usada para modificar o algoritmo de criptografia (S-boxes dependentes de chave). O Twofish pega emprestado alguns elementos de outros designs; por exemplo, a transformação pseudo-Hadamard (PHT) da família SAFER de cifras. Twofish tem uma estrutura Feistel como DES . Twofish também emprega uma matriz separável por distância máxima .

Quando foi lançado em 1998, o Twofish era ligeiramente mais lento do que o Rijndael (o algoritmo escolhido para o Advanced Encryption Standard ) para chaves de 128 bits , mas um pouco mais rápido para chaves de 256 bits. Desde 2008, virtualmente todos os processadores AMD e Intel incluem aceleração de hardware do algoritmo Rijndael por meio do conjunto de instruções AES ; As implementações de Rijndael que usam o conjunto de instruções são agora ordens de magnitude mais rápidas do que as implementações de Twofish (de software).

Twofish foi projetado por Bruce Schneier , John Kelsey , Doug Whiting , David Wagner , Chris Hall e Niels Ferguson : a "equipe estendida de Twofish" que se reuniu para realizar mais criptoanálises de Twofish. Outros participantes do concurso AES incluíram Stefan Lucks , Tadayoshi Kohno e Mike Stay .

A cifra Twofish não foi patenteada e a implementação de referência foi colocada em domínio público . Como resultado, o algoritmo Twofish é gratuito para qualquer pessoa usar sem quaisquer restrições. É uma das poucas cifras incluídas no padrão OpenPGP (RFC 4880). No entanto, Twofish tem visto menos uso do que Blowfish , que está disponível há mais tempo.

atuação

Embora sendo projetado, o desempenho sempre foi um fator importante no Twofish. Twofish foi projetado para permitir várias camadas de compensações de desempenho, dependendo da importância da velocidade de criptografia, uso de memória, contagem de portas de hardware, configuração de chave e outros parâmetros. Isso permite um algoritmo altamente flexível, que pode ser implementado em uma variedade de aplicativos.

Existem várias compensações de espaço-tempo que podem ser feitas, tanto no software quanto no hardware do Twofish. Um exemplo de tal troca seria a pré-computação de subchaves redondas ou s-box, que podem levar a aumentos de velocidade de um fator de dois ou mais. Eles vêm, no entanto, ao custo de mais RAM necessária para armazená-los.

As estimativas na tabela abaixo são todas baseadas na tecnologia CMOS de 0,35 μm existente .

Trocas de hardware (chave de 128 bits)
Contagens de portão blocos h Relógios
por bloco

Níveis de pipeline
Velocidade do relógio Taxa de transferência
(Mbit / s)

Relógios de inicialização
Comentários
14000 1 64 1 40 MHz 80 4 subchaves na hora
19000 1 32 1 40 MHz 160 40
23000 2 16 1 40 Mhz 320 20
26.000 2 32 2 80 MHz 640 20
28000 2 48 3 120 MHz 960 20
30000 2 64 4 150 MHz 1200 20
80000 2 16 1 80 MHz 640 300 RAMs S-box

Criptanálise

Em 1999, Niels Ferguson publicou um ataque diferencial impossível que quebra 6 rodadas de 16 da versão da chave de 256 bits usando 2 256 passos.

Em 2000, a melhor criptoanálise publicada da cifra de bloco Twofish é uma criptoanálise diferencial truncada da versão completa de 16 rodadas. O artigo afirma que a probabilidade de diferenciais truncados é 2 −57,3 por bloco e que serão necessários cerca de 2 51 textos simples escolhidos (32  petabytes de dados) para encontrar um bom par de diferenciais truncados.

Bruce Schneier respondeu em uma entrada de blog de 2005 que este artigo não apresentava um ataque criptanalítico completo, mas apenas algumas características diferenciais hipotéticas: "Mas mesmo de uma perspectiva teórica, Twofish não está nem remotamente quebrado. Não houve extensões para esses resultados desde que foram publicados em 2000. "

Veja também

Referências

Artigos

links externos