3.6. Non-hardware Sources of Randomness (Sources d'aléa non matérielles)
3.6. Non-hardware Sources of Randomness (Sources d'aléa non matérielles)
La meilleure source d'entropie d'entrée serait une source aléatoire basée sur le matériel telle que des oscillateurs en anneau, le timing de lecteur de disque, le bruit thermique ou la désintégration radioactive. Cependant, si aucune de celles-ci n'est disponible, il existe d'autres possibilités. Celles-ci incluent les horloges système, les tampons système ou d'entrée/sortie, les numéros de série ou adresses utilisateur/système/matériel/réseau et le timing, et l'entrée utilisateur. Malheureusement, chacune de ces sources peut produire des valeurs très limitées ou prévisibles dans certaines circonstances.
Certaines des sources énumérées ci-dessus seraient assez fortes sur les systèmes multi-utilisateurs, où chaque utilisateur du système est en essence une source d'aléa. Cependant, sur un petit système mono-utilisateur ou embarqué, en particulier au démarrage, il pourrait être possible pour un adversaire d'assembler une configuration similaire. Cela pourrait donner à l'adversaire des entrées au processus de mélange qui étaient suffisamment bien corrélées à celles utilisées à l'origine pour rendre la recherche exhaustive pratique.
L'utilisation de multiples entrées aléatoires avec une fonction de mélange forte est recommandée et peut surmonter la faiblesse dans toute entrée particulière. Le timing et le contenu des frappes de touches "aléatoires" demandées peuvent produire des centaines de bits aléatoires, mais des hypothèses conservatrices doivent être faites. Par exemple, une hypothèse raisonnablement conservatrice serait qu'un intervalle inter-frappe fournit au plus quelques bits d'aléa, mais seulement lorsque l'intervalle est unique dans la séquence d'intervalles jusqu'à ce point. Une hypothèse similaire serait qu'un code de touche fournit quelques bits d'aléa, mais seulement lorsque le code est unique dans la séquence. Ainsi, un intervalle ou un code de touche qui dupliquait une valeur précédente serait supposé ne fournir aucun aléa supplémentaire. Les résultats du mélange de ces timings avec des caractères tapés pourraient être combinés davantage avec des valeurs d'horloge et d'autres entrées.
Cette stratégie peut rendre pratique le code portable pour produire de bons nombres aléatoires pour la sécurité, même si certaines des entrées sont très faibles sur certains des systèmes cibles. Cependant, elle peut encore échouer contre une attaque de haut niveau sur de petits systèmes mono-utilisateurs ou embarqués, en particulier si l'adversaire a jamais été capable d'observer le processus de génération dans le passé. Une source aléatoire basée sur le matériel est toujours préférable.