Aller au contenu principal

3.4. Problems with Clocks and Serial Numbers (Problèmes avec les horloges et les numéros de série)

3.4. Problems with Clocks and Serial Numbers (Problèmes avec les horloges et les numéros de série)

Les horloges d'ordinateur et les valeurs similaires du système d'exploitation ou du matériel fournissent significativement moins de bits réels d'imprévisibilité qu'il ne pourrait apparaître de leurs spécifications.

Des tests ont été effectués sur des horloges sur de nombreux systèmes, et il a été constaté que leur comportement peut varier largement et de manières inattendues. Une version d'un système d'exploitation fonctionnant sur un ensemble de matériel peut effectivement fournir, disons, une résolution de microseconde dans une horloge, tandis qu'une configuration différente du "même" système peut toujours fournir les mêmes bits inférieurs et compter seulement dans les bits supérieurs à une résolution beaucoup plus faible. Cela signifie que des lectures successives de l'horloge peuvent produire des valeurs identiques même si suffisamment de temps s'est écoulé pour que la valeur "devrait" changer en fonction de la résolution nominale de l'horloge. Il existe également des cas où la lecture fréquente d'une horloge peut produire des valeurs séquentielles artificielles, en raison d'un code supplémentaire qui vérifie si l'horloge est inchangée entre deux lectures et l'augmente de un! La conception de code d'application portable pour générer des nombres imprévisibles basés sur de telles horloges système est particulièrement difficile parce que le concepteur du système ne connaît pas toujours les propriétés de l'horloge système.

L'utilisation d'un numéro de série matériel (tel qu'une adresse MAC Ethernet) peut également fournir moins de bits d'unicité qu'on ne le devinerait. De telles quantités sont généralement fortement structurées, et les sous-champs peuvent avoir seulement une plage limitée de valeurs possibles, ou les valeurs peuvent être facilement devinables en fonction de la date approximative de fabrication ou d'autres données.

Par exemple, il est probable qu'une entreprise qui fabrique à la fois des ordinateurs et des adaptateurs Ethernet utilisera, au moins en interne, ses propres adaptateurs, ce qui limite significativement la plage d'adresses intégrées.

Des problèmes tels que ceux décrits ci-dessus rendent difficile la production de code pour générer des quantités imprévisibles si le code doit être porté sur une variété de plateformes informatiques et de systèmes.