Question

Tant que les appels simultanés ne causent pas les seg-v ou ne renvoient pas la même valeur, quelles sont les raisons permettant d'empêcher les conditions de concurrence et la corruption des données dans PRNGs lorsque les effets principaux de cette erreur sont des résultats imprévisibles et que l’intérêt d’un PRNG?

Éditer: existe-t-il un PRNG qui ne souffrirait pas de la concurrence et de la corruption des données?

Était-ce utile?

La solution

Les PRNG sont des outils minutieusement construits - franchement, si les conditions de compétition et les bogues de threading étaient un bon PRNG, la mise en œuvre serait écrite de cette manière.

Le problème avec l'ajout de bogues de threading pour augmenter le caractère aléatoire est qu'il s'agit d'un changement non étudié dans le générateur. Les algorithmes sécurisés existants et les implémentations ont été testés de manière exhaustive. si vous voulez essayer une variante peu sûre, vous devrez faire un travail statistique sommaire pour montrer que cette variante est au moins aussi aléatoire que celle d'un GNP ordinaire.

Autres conseils

  

quand les principaux effets de ces erreurs sont des résultats imprévisibles et que l’intérêt d’un PRNG?

" Aléatoire " n’est pas la même chose qu’imprévisible - Aléatoire implique une certaine distribution qu’il est très important de maintenir si vous voulez de vrais nombres aléatoires. Si vos nombres aléatoires sont prévisibles, cela peut être un problème de sécurité, ou au moins un bogue de programme.

Cela les rendra généralement moins déterministes (mauvais si vous comptez sur leur déterminisme, ce que beaucoup de gens font), et peuvent les rendre moins pseudo-aléatoires, en fonction de leurs détails d'implémentation particuliers et des subtilités de la façon dont votre matériel se comporte.

Mais généralement, les personnes qui écrivent des applications multithreads déclarent leur état PRNG en TLS (thread-local-storage). Ainsi, peu importe, chaque fil a son propre PRNG et les courses ne se produiront que si vous les créez délibérément. Pas dans le code PRNG de toute façon. C’est une performance sans verrouillage et à performances plus ou moins complètes (selon l’implémentation TLS utilisée).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top