5.2. Stronger Mixing Functions (Fonctions de mélange plus fortes)
5.2. Stronger Mixing Functions (Fonctions de mélange plus fortes)
L'Advanced Encryption Standard du gouvernement américain [AES] est un exemple de fonction de mélange forte pour des quantités de bits multiples. Elle prend jusqu'à 384 bits d'entrée (128 bits de "données" et 256 bits de "clé") et produit 128 bits de sortie, dont chacun dépend d'une fonction complexe non linéaire de tous les bits d'entrée. D'autres fonctions de chiffrement avec cette caractéristique, telles que [DES], peuvent également être utilisées en considérant qu'elles mélangent tous leurs bits d'entrée de clé et de données.
Une autre bonne famille de fonctions de mélange est celle des fonctions de "condensé de message" ou de hachage telles que les US Government Secure Hash Standards [SHA*] et les séries MD4, MD5 [MD4, MD5]. Ces fonctions prennent toutes une quantité d'entrée pratiquement illimitée et produisent une sortie de longueur fixe relativement courte mélangeant tous les bits d'entrée. La série MD* produit 128 bits de sortie, SHA-1 produit 160 bits, et d'autres fonctions SHA produisent jusqu'à 512 bits.
Bien que les fonctions de condensé de message soient conçues pour des quantités d'entrée variables, AES et d'autres fonctions de chiffrement peuvent également être utilisées pour combiner n'importe quel nombre d'entrées. Si 128 bits de sortie sont adéquats, les entrées peuvent être empaquetées dans une quantité de données de 128 bits et des "clés" AES successives, en complétant avec des zéros si nécessaire; la quantité est alors successivement chiffrée par les "clés" en utilisant AES en mode Electronic Codebook. Alternativement, l'entrée pourrait être empaquetée dans une clé de 128 bits et plusieurs blocs de données et un CBC-MAC pourrait être calculé [MODES].
Un mélange plus complexe devrait être utilisé si plus de 128 bits de sortie sont nécessaires et qu'on veut employer AES (mais notez qu'il est absolument impossible d'obtenir plus de bits "d'aléa" en sortie que ceux mis en entrée). Par exemple, supposons que les entrées soient empaquetées dans trois quantités, A, B et C. On peut utiliser AES pour chiffrer A avec B puis avec C comme clés pour produire la première partie de la sortie, puis chiffrer B avec C puis A pour plus de sortie et, si nécessaire, chiffrer C avec A puis B pour encore plus de sortie. Encore plus de sortie peut être produite en inversant l'ordre des clés données ci-dessus. La même chose peut être faite avec les fonctions de hachage, en hachant divers sous-ensembles des données d'entrée ou différentes copies des données d'entrée avec différents préfixes et/ou suffixes pour produire plusieurs sorties.
Pour un exemple d'utilisation d'une fonction de mélange forte, reconsidérons le cas d'une chaîne de 308 bits, dont chacun est biaisé à 99% vers zéro. La technique de parité donnée dans la Section 4.1 réduit cela à un bit, avec seulement une déviance de 1/1000 par rapport à une probabilité égale d'être un zéro ou un un. Mais, en appliquant l'équation pour l'information donnée dans la Section 2, cette séquence biaisée de 308 bits contient plus de 5 bits d'information. Ainsi, la hacher avec SHA-1 et prendre les 5 bits inférieurs du résultat produirait 5 bits aléatoires non biaisés et non le bit unique donné par le calcul de la parité de la chaîne. Alternativement, pour certaines applications, vous pourriez utiliser la sortie de hachage entière pour conserver presque tous les 5+ bits d'entropie dans une quantité de 160 bits.