Deux Poisson - Twofish

Deux Poisson
Twofishalgo.svg
L'algorithme Twofish
Général
Concepteurs Bruce Schneier
Première publication 1998
Dérivé de Blowfish , PLUS SR , Carré
Relatif à Trois poissons
Attestation finaliste AES
Détail du chiffre
Tailles de clé 128, 192 ou 256 bits
Tailles de bloc 128 bits
Structure Réseau Feistel
Les manches 16
Meilleure cryptanalyse publique
Cryptanalyse différentielle tronquée nécessitant environ 2 51 textes en clair choisis. Attaque différentielle impossible qui brise 6 tours sur 16 de la version clé 256 bits en utilisant 2 256 pas.

En cryptographie , Twofish est un chiffrement par bloc de clé symétrique avec une taille de bloc de 128 bits et des tailles de clé jusqu'à 256 bits. C'était l'un des cinq finalistes du concours Advanced Encryption Standard , mais il n'a pas été sélectionné pour la normalisation. Twofish est lié au premier chiffrement par bloc Blowfish .

Les caractéristiques distinctives de Twofish sont l'utilisation de S-box pré-calculées dépendant des clés et un programme de clés relativement complexe . Une moitié d'une clé à n bits est utilisée comme clé de chiffrement réelle et l'autre moitié de la clé à n bits est utilisée pour modifier l'algorithme de chiffrement (boîtes S dépendant de la clé). Twofish emprunte certains éléments à d'autres conceptions; par exemple, la pseudo-Hadamard transformée (PHT) de la famille de chiffrements SAFER . Twofish a une structure Feistel comme DES . Twofish utilise également une matrice séparable à distance maximale .

Lors de son introduction en 1998, Twofish était légèrement plus lent que Rijndael (l'algorithme choisi pour Advanced Encryption Standard ) pour les clés 128 bits , mais un peu plus rapide pour les clés 256 bits. Depuis 2008, pratiquement tous les processeurs AMD et Intel intègrent l'accélération matérielle de l'algorithme de Rijndael via le jeu d'instructions AES ; Les implémentations de Rijndael qui utilisent le jeu d'instructions sont désormais des ordres de grandeur plus rapides que les implémentations (logicielles) de Twofish.

Twofish a été conçu par Bruce Schneier , John Kelsey , Doug Whiting , David Wagner , Chris Hall et Niels Ferguson : "l'équipe Twofish étendue" qui s'est réunie pour effectuer une cryptanalyse plus poussée de Twofish. Parmi les autres participants au concours AES figuraient Stefan Lucks , Tadayoshi Kohno et Mike Stay .

Le chiffrement Twofish n'a pas été breveté et l' implémentation de référence a été placée dans le domaine public . En conséquence, l'algorithme Twofish est gratuit pour tout le monde, sans aucune restriction. C'est l'un des quelques chiffrements inclus dans la norme OpenPGP (RFC 4880). Cependant, Twofish a connu une utilisation moins répandue que Blowfish , qui est disponible depuis plus longtemps.

Performance

Tout en étant conçu, la performance a toujours été un facteur important dans Twofish. Twofish a été conçu pour permettre plusieurs niveaux de compromis sur les performances, en fonction de l'importance de la vitesse de cryptage, de l'utilisation de la mémoire, du nombre de portes matérielles, de la configuration des clés et d'autres paramètres. Cela permet un algorithme très flexible, qui peut être mis en œuvre dans une variété d'applications.

Il existe de nombreux compromis espace-temps qui peuvent être faits, tant dans le logiciel que dans le matériel pour Twofish. Un exemple d'un tel compromis serait le précalcul de sous-clés rondes ou de s-box, ce qui peut conduire à des augmentations de vitesse d'un facteur de deux ou plus. Ceux-ci viennent, cependant, au prix de plus de RAM nécessaire pour les stocker.

Les estimations du tableau ci-dessous sont toutes basées sur la technologie CMOS 0,35 µm existante .

Compromis matériels (clé 128 bits)
La porte compte blocs h Horloges
par bloc

Niveaux de pipeline
Vitesse de l'horloge Débit
(Mbit/s)
Startup
horloges
commentaires
14000 1 64 1 40 MHz 80 4 sous-clés à la volée
19000 1 32 1 40 MHz 160 40
23000 2 16 1 40 Mhz 320 20
26000 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 RAM S-box

Cryptanalyse

En 1999, Niels Ferguson a publié une attaque différentielle impossible qui brise 6 tours sur 16 de la version clé 256 bits en utilisant 2 256 étapes.

En 2000, la meilleure cryptanalyse publiée du chiffrement par bloc Twofish est une cryptanalyse différentielle tronquée de la version complète à 16 tours. L'article affirme que la probabilité de différentiels tronqués est de 2 à 57,3 par bloc et qu'il faudra environ 2 51 textes en clair choisis (d'une valeur de 32  pétaoctets de données) pour trouver une bonne paire de différentiels tronqués.

Bruce Schneier a répondu dans une entrée de blog en 2005 que cet article ne présentait pas une attaque cryptanalytique complète, mais seulement quelques caractéristiques différentielles hypothétiques : « Mais même d'un point de vue théorique, Twofish n'est même pas brisé à distance. Il n'y a eu aucune extension de ces résultats depuis leur publication en 2000."

Voir également

Les références

Des articles

Liens externes