Pregunta

necesito para crear un cojín de una sola vez para cifrar algunos datos (unos pocos KB de tamaño). ¿Cómo debo ir sobre la generación de este cojín de una sola vez para evitar todos los problemas pseudo-aleatorios asociados a la generación de números aleatorios básica como rand()?

¿Existe una herramienta fiable existente o biblioteca que puedo utilizar para esto?

¿Fue útil?

Solución

Trate Random.ORG . Tienen varios servicios gratuitos (y pagado) que generan números verdaderamente aleatorios basado en el ruido atmosférico (o al menos eso es lo que pretenden hacer).

Otros consejos

La mayoría de los sistemas operativos modernos tienen una criptográficamente seguro pseudo-aleatorio generador de números .

Por ejemplo, Windows tiene CryptGenRandom . Se puede acceder a la misma corriente de .NET utilizando el RNGCryptoServiceProvider clase. Desde C ++, puede acceder a la misma secuencia utilizando el Microsoft C ++ función de biblioteca rand_s . A partir de Python, que es accesible a través de la función urandom (véase la parte inferior de la página enlazada) en el sistema operativo módulo.

PRNGs normales diferencia, CSPRNGs están diseñados para pasar rigurosas pruebas de aleatoriedad estadísticos. También están diseñados para aguantar bien bajo ataque grave, incluso cuando su estado inicial o correr esté disponible para un atacante.

El término "pseudo-aleatorio", tal como se utiliza por los criptógrafos, puede inducir a error a un lector no técnico. A CSPRNG expande una colección de valores aleatorios, conocido como una semilla, en una secuencia más larga de números. Esa secuencia es reproducible dada la semilla, pero para cualquier buen CSPRNG, un cambio menor en la semilla produce una secuencia muy diferente. Por lo tanto, siempre que al menos una parte de la semilla se selecciona a través de un proceso adecuadamente al azar, un atacante no puede predecir la secuencia resultante - incluso si el atacante puede influir en el resto de la semilla.

Numerosos sistemas importantes, que van desde las comunicaciones militares para el cifrado que protege prácticamente todas las transacciones en línea, se basan en la seguridad funcionalmente equivalente entre "criptográficamente seguro pseudo-aleatorio" y "al azar".

Editar : Si tienes la suerte de estar trabajando con la gama de procesadores Ivy Bridge de Intel, ahora tiene otra alternativa muy interesante .

No se pueden generar números aleatorios verdaderamente algorítmicamente - que necesita la asistencia de hardware. Si utiliza un algoritmo, sin embargo asegurar (como un PRNG criptográficamente seguro), que está simplemente creando un cifrado de flujo basado en que PRNG; ya no es un Uno Time Pad.

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