Pregunta

Mientras las llamadas concurrentes no causen seg-v ni devuelvan el mismo valor, ¿cuáles son las razones para prevenir las condiciones de carrera y la corrupción de datos en PRNGs cuando los efectos primarios de esos errores son resultados impredecibles y ese es el punto de un PRNG?


Editar: ¿hay algún PRNG que no sufra en condiciones de carrera y corrupción de datos?

¿Fue útil?

Solución

Los PRNG son herramientas construidas meticulosamente. Francamente, si las condiciones de carrera y los errores de subprocesamiento fueran un buen PRNG, la implementación se escribiría de esa manera.

El problema con la adición de errores de subprocesos para aumentar la aleatoriedad es que se trata de un cambio no estudiado en el generador. Los algoritmos e implementaciones seguros existentes se han probado exhaustivamente; Si quieres probar una variante insegura, deberás realizar el trabajo estadístico para demostrar que es al menos tan aleatorio como un PRNG normal.

Otros consejos

  

¿Cuándo los efectos principales de esos errores son resultados impredecibles y ese es el punto de un PRNG?

" Aleatorio " no es lo mismo que impredecible: Aleatorio implica una cierta distribución que es muy importante mantener si desea números aleatorios reales. Si sus números aleatorios son predecibles de alguna manera, puede ser un problema de seguridad, o al menos un error de programa

Por lo general, los hará menos deterministas (mal si confía en su determinismo, lo que muchas personas hacen), y puede o no los puede hacer menos pseudoaleatorios, dependiendo de sus detalles de implementación particulares y las sutilezas de cómo su hardware se comporta

Pero normalmente las personas que escriben aplicaciones de multiproceso declaran su estado de PRNG en TLS (thread-local-storage). De esta manera no importa, cada hilo tiene su propio PRNG, y las razas no sucederán a menos que las crees deliberadamente. No dentro del código PRNG de todos modos. Esto no requiere bloqueo y tiene un rendimiento más o menos completo (según la implementación de TLS utilizada).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top