Quand l'exécution spéculative s'utilise comme générateur aléatoire |
————— 30 Septembre 2019 à 12h30 —— 8223 vues
Quand l'exécution spéculative s'utilise comme générateur aléatoire |
————— 30 Septembre 2019 à 12h30 —— 8223 vues
Si l'on connaît Meltdown et Spectre pour leur fort impact sur la sécurité des CPU, et plus particulièrement ceux utilisés dans le cadre de la virtualisation de machines, ce n'est pas la seule utilisation détournée du prédicateur de branchement possible.
En effet, des gourous un peu trop foufous de l'informatique, en particulier Thomas Gleixner, un habitué du noyau manchot, se sont amusés à utiliser ces comportements pour... de la génération de nombres aléatoires. En effet, mesurer le temps d'exécution de boucles dépend de l'état précédent du prédicateur de branchement et donc du code précédemment exécuté, ce qui est une source d'entropie. En langage plus courant, puisque les instructions assembleur exécutées avant le générateur sont inconnues, la sortie du générateur est aléatoire.
Évidemment, Linus Torvalds a commenté en partageant son scepticisme à l'égard de cette méthode. Il faut dire qu'autant avec Zen 1 et son prédicateur à base de réseau de neurones, le comportement soit relativement obscur, mais chez les bleus et les Zen 2, le prédicateur est bien plus déterministe et documenté... D'autant plus que l'idée de tirer de l'aléatoire d'un timer - nommée jitter entropy - n'est pas nouvelle. Sachant que ces nombres aléatoires sont la racine de protocoles de transmission chiffrés de données (l'idée étant de rajouter des informations aléatoires pour brouiller un éventuel décryptage de la communication), mieux vaut ne pas lésiner sur les moyens appliqués dans ce domaine. Une bricolerie amusante donc, mais en pratique inutile : de quoi résumer un bon pan de l'informatique moderne ! (Source : Phoronix)
Il y a comme un bug(s Bunny) sur cette galette-là...