Aller au contenu principal

5. Mixing (Mélange)

5. Mixing (Mélange)

Quelle est la meilleure stratégie globale pour obtenir des nombres aléatoires non devinables en l'absence d'une source d'entropie matérielle forte et fiable? C'est d'obtenir une entrée à partir d'un certain nombre de sources non corrélées et de les mélanger avec une fonction de mélange forte. Une telle fonction préservera l'entropie présente dans n'importe laquelle des sources, même si d'autres quantités combinées se trouvent être fixes ou facilement devinables (faible entropie). Cette approche peut être conseillée même avec une bonne source matérielle, car le matériel peut également échouer. Cependant, cela devrait être pesé contre une possible augmentation de la probabilité de défaillance globale due à la complexité logicielle ajoutée.

Une fois qu'on a utilisé de bonnes sources, telles que certaines de celles énumérées dans la Section 3, et qu'on les a mélangées comme décrit dans cette section, on a une graine forte. Celle-ci peut alors être utilisée pour produire de grandes quantités de matériel cryptographiquement fort comme décrit dans les Sections 6 et 7.

Une fonction de mélange forte est une fonction qui combine des entrées et produit une sortie dans laquelle chaque bit de sortie est une fonction complexe non linéaire différente de tous les bits d'entrée. En moyenne, changer n'importe quel bit d'entrée changera environ la moitié des bits de sortie. Mais parce que la relation est complexe et non linéaire, aucun bit de sortie particulier n'est garanti de changer lorsqu'un bit d'entrée particulier est changé.

Considérons le problème de convertir un flux de bits qui est biaisé vers 0 ou 1 ou qui a un motif quelque peu prévisible en un flux plus court qui est plus aléatoire, comme discuté dans la Section 4. C'est simplement un autre cas où une fonction de mélange forte est souhaitée, pour mélanger les bits d'entrée et produire un nombre plus petit de bits de sortie. La technique donnée dans la Section 4.1, utilisant la parité d'un certain nombre de bits, est simplement le résultat de les XORer successivement. Ceci est examiné comme une fonction de mélange triviale, immédiatement ci-dessous. L'utilisation de fonctions de mélange plus fortes pour extraire davantage de l'aléa dans un flux de bits biaisés est examinée dans la Section 5.2. Voir également [NASLUND].