http://www.eugenio-soler-galan.es/aleatoriedad Trabajo de investigación I (Especialización Sistemas Distribuidos, Multimedia y Seguros) Autor: Eugenio Soler Galán Profesor: Benjamín Ramos Álvarez Trabajo de investigación Trabajo de investigación I (Especialización Sistemas Distribuidos, Multimedia y Seguros) junio de 2008 Aleatoriedad y pseudoaleatoriedad Autor: Eugenio Soler Galán Página 2 de 54 Trabajo de investigación Trabajo de investigación I (Especialización Sistemas Distribuidos, Multimedia y Seguros) Aleatoriedad y pseudoaleatoriedad Autor: Eugenio Soler Galán INDICE 1. MOTIVACIÓN ............................................................................................ pág. 4 2. ¿DÓNDE ENCONTRAMOS ALEATORIEDAD?........................................ pág. 6 3. OTROS CONCEPTOS RELACIONADOS CON LA ALEATORIEDAD .... pág. 11 4. CRIPTOGRAFÍA Y NÚMEROS ALEATORIOS ....................................... pág. 14 5. ¿CÓMO CONSEGUIR NÚMEROS PSEUDOALEATORIOS? ................ pág. 20 a. Generador aleatorio por entrada de teclado ........................... pág. 26 b. Generadores de Fibonacci ...................................................... pág. 26 6. CONTRASTES DE ALEATORIEDAD...................................................... pág. 28 a. Contraste de rachas ................................................................ pág. 28 b. Test de Wald-Wolfowitz ........................................................... pág. 31 c. Test de adherencia ................................................................... pág 32 d. Contraste de Kolmogorov – Smirnov ........................................ pág 33 e. Prueba de frecuencia................................................................ pág 35 f. Prueba de series (prueba de los dos bits) ................................ pág 35 g. Prueba de póquer ..................................................................... pág 36 h. Prueba de rachas ..................................................................... pág 36 i. Prueba de autocorrelación........................................................ pág 37 j. Tests estadístico universal de Maurer ...................................... pág 38 k. Contraste l. ............................................................................. pág 39 Contraste de permutaciones..................................................... pág 39 m. Contraste de huecos ................................................................ pág 40 7. ANALISIS DE ALEATORIEDAD ............................................................. pág. 41 a. Postulados de Golomb ............................................................ pág. 41 8. EL CAOS COMO SOLUCIÓN A LA ALEATORIEDAD ............................ pág. 44 9. CONCLUSIONES .................................................................................... pág. 46 10. TABLA PERCENTILES TEST DE RACHAS ........................................... pág. 48 11. TABLA DE LA NORMAL.......................................................................... pág. 50 12. ALGORITMO DE UN GENERADOR ALEATORIO POR ENTRADA DE TECLADO ............................................................................................... pág. 51 13. BIBLIOGRAFÍA........................................................................................ pág. 52 14. LA ENTROPÍA DE UNA VARIABLE ALEATORIA ................................... pág. 54 junio de 2008 Página 3 de 54 Trabajo de investigación Trabajo de investigación I (Especialización Sistemas Distribuidos, Multimedia y Seguros) Aleatoriedad y pseudoaleatoriedad Autor: Eugenio Soler Galán MOTIVACIÓN Con este trabajo de investigación se pretende ver el estado en el que se encuentra hoy en día el tema de la aleatoriedad, sobre todo en el campo de la aleatoriedad simulada, ya que el tema de la aleatoriedad propiamente dicha, es un dilema filosófico sobre el que muchos han estado discutiendo durante siglos, como veremos a continuación. La aleatoriedad no es algo que tan solo tenga una aplicación técnica, desde siempre el hombre se ha preguntado si su destino está no o escrito 1 . Los determistas 2 niegan al hombre el derecho de obrar libremente de acuerdo con su voluntad enfrentados a los no deterministas que opinan justamente lo contrario que el hombre obra libremente y que sus actos no están escritos. A día de hoy, estamos en un estadio en el que todo está escrito, pero en el que el hombre tiene el poder de cambiarlo, (¿por qué alguien va a ser encarcelado por sus actos, si no puede hacer nada para evitarlo?. En su destino ya estaba escrito que esto sucedería, no ha sido él quien a cometido un crimen, simplemente a cumplido su destino, en nuestro sistema jurídico actual, cuando una persona no tiene capacidad de decisión no va a la cárcel, va a un centro psiquiátrico, ..), un invento de lo más práctico, aunque no parezca de lo más lógico. Estamos ante la sociedad de lo práctico y no de lo lógico. A nosotros nos interesa la “aleatoriedad”, y podríamos estar discutiendo sobre si existen procesos aleatorios o no al igual que los deterministas y los no deterministas, pero vamos a tirar por el camino práctico y no por el filosófico. Consideraremos que algo es aleatorio, cuando no se puede volver a reproducir con los medios actuales, en un tiempo más o menos corto, en exactamente las mismas condiciones que se hizo anteriormente. De ahí el título del trabajo: la aleatoriedad como principio filosófico y la pseudoaleatoriedad 3 que no se plantea la existencia o no de la aleatoriedad pero que intenta imitarla cumpliendo los requisitos anteriormente expuestos: no repetición del hecho, en exactamente las mismas condiciones. En 1 Decía Esquilo que “Ni aun permaneciendo sentado junto al fuego de su hogar puede el hombre escapar a la sentencia de su destino” 2 Los "fatalistas" y los "deterministas" resumen sus argumentos, en este sentido, diciendo que "El hombre está sometido a los impulsos de su naturaleza que lo dominan". 3 Que dicho sea de paso no existe como tal en el diccionario de la lengua castellana. pseudo aleatorio tiene simplemente el significado de falta aleatoriedad. junio de 2008 Página 4 de 54 Trabajo de investigación Trabajo de investigación I (Especialización Sistemas Distribuidos, Multimedia y Seguros) Aleatoriedad y pseudoaleatoriedad Autor: Eugenio Soler Galán numerosas ocasiones de desconoce cual es el proceso y lo único que se tiene es el resultado, para lo cual contamos con una batería de test que nos dicen si esos resultados provienen o no de un proceso “aleatorio”, esto ya es Estadística. Para la Informática, y en concreto en el campo de la seguridad en redes tiene mucha importancia la aleatoriedad, ya sea en sistemas de cifrados asimétricos como en los simétricos. Este trabajo de investigación, solo es eso, un trabajo de investigación, ya que se puede seguir trabajando en él, desarrollando algunos puntos concretos para realizar una posible tesis doctoral. Por ejemplo hacia donde pueden ir los nuevos caminos en lo que ha cifrado se refiere: en un primer momento se uso cifrado simétrico, ahora estamos en cifrado asimétrico con clave pública-privada, quizás el futuro pase por la teoría del caos, al igual que en otras ciencias donde se ha pasado del determinismo a la estadística y de la estadística a la teoría del caos para poder explicar ciertos fenómenos. Existen diversos autores que dicen que el azar no existe que el caos sí. En el campo de la seguridad-informática es muy importante la aleatoriedad, en los últimos años es algo que se tiene muy en cuenta. Ahora ya no sucede como antaño cuando se asignaban login a los alumnos de un determinado centro, su contraseña se formaba a partir de una política fija, con lo que cualquiera que supiera los datos de otro podía averiguar su contraseña. Es importante por tanto que aunque el login de usuario siga una política fija, la contraseña sea aleatoria. Este hecho lo encontramos en casi todos los campos, ya que cada vez más tenemos login y contraseña para casi cualquier cosa. junio de 2008 Página 5 de 54 Aleatoriedad y pseudoaleatoriedad Trabajo de investigación Trabajo de investigación I Autor: Eugenio Soler Galán (Especialización Sistemas Distribuidos, Multimedia y Seguros) ¿DÓNDE ENCONTRAMOS ALEATORIEDAD? En la Filosofía El azar ontológico es aquel que forma parte del ser, de la forma misma en que el mundo es, por lo que aunque encontremos leyes deterministas habrá procesos que son irreductiblemente espontáneos y aleatorios, independientemente del avance del conocimiento. El azar epistemológico es aquel que encontramos en nuestro conocimiento bien sea por ignorancia, por incapacidad para tratar sistemas complejos en un mundo determinista o bien porque exista un auténtico azar ontológico. El determinismo afirma que no existe el azar ontológico. Los procesos considerados aleatorios serían en realidad eventos en los que se ha desatendido las particularidades (o es excesivamente trabajoso o complejo estudiarlas). Cuando no se niega la ciencia como conocimiento de la realidad, su carácter predictivo resulta problemático para la existencia de libre albedrío. Por ello en algunos casos se ha intentado salvar éste acudiendo al azar que aceptan las nuevas teorías científicas. Los críticos aducen que aunque se admita la existencia del azar, éste es algo completamente diferente del libre albedrío, no se es más libre por tomar una decisión aleatoria que por tomar una determinista. El Caos determinista se refiere a fenómenos que permiten cierta predictibilidad en su globalidad, pero que analizados a pequeña escala son impredecibles. Se trabaja con descripciones estadísticas de conjuntos de grandes cantidades de elementos, cada uno de ellos impredecible de manera individual pero no así globalmente. El azar puede encontrarse en o asimilarse al comportamiento individual de las partículas que lo forman. Los sistemas turbulentos son aquellos cuya evolución no es predecible a corto plazo debido a que variaciones infinitesimales en las condiciones provocan cambios exponenciales. No predictibilidad y aleatoriedad en estos casos no son equivalentes. Éstos son un ejemplo claro de complejidad. junio de 2008 Página 6 de 54 Trabajo de investigación Trabajo de investigación I (Especialización Sistemas Distribuidos, Multimedia y Seguros) Aleatoriedad y pseudoaleatoriedad Autor: Eugenio Soler Galán En la Física Desde que Isaac Newton presentó su nueva forma de hacer ciencia ésta fue asociada al determinismo. Como para el determinismo el azar sólo puede ser epistemológico, considera preferibles las teorías científicas de las que se desprenden leyes en las que no tiene cabida el azar. Bajo el punto de vista de la Física clásica un evento era aparentemente aleatorio cuando no podía establecerse o controlarse su causa. Se podía asimilar a ignorancia. Se dice que el azar es un simple juego de probabilidades basadas en formulas, es decir que la suerte no existe. Con las nuevas teorías científicas sobre sistemas caóticos o turbulentos y con la mecánica cuántica, algunos científicos consideran que no está tan claro que el azar no forme parte del mundo. Según la interpretación estándar (o de Copenhagen) de la mecánica cuántica, en un experimento controlado hasta sus más mínimos detalles siempre hay un grado de aleatoriedad en el resultado. Muchos procesos físicos de carácter cuántico podrían ser irreductiblemente aleatorios. Las leyes de la desintegración atómica pueden predecir el número de núcleos de un cuerpo radiactivo que se desintegrará en un periodo dado de tiempo, pero no cuándo lo hará un núcleo concreto. Ha habido diferentes objeciones a esta interpretación, como la de variables ocultas, en el sentido de que el resultado del experimento viene determinado por un cierto número de características inobservadas o inobservables. Esta interpretación ya ha sido contrastada experimentalmente por y con la interpretación estándar, y los resultados experimentales la han descartado. Otra interpretación es la del multiuniverso, según la cual todos los posibles resultados se dan, en todo un conjunto de universos. Aún no se ha diseñado y realizado un experimento que contraste esta interpretación con la estándar. Una interpretación de la entropía ϑ es que ésta mide la cantidad de azar de un sistema. Pero la entropía también puede interpretarse como complejidad, que se puede analizar utilizando las probabilidades. junio de 2008 Página 7 de 54 Aleatoriedad y pseudoaleatoriedad Trabajo de investigación Trabajo de investigación I Autor: Eugenio Soler Galán (Especialización Sistemas Distribuidos, Multimedia y Seguros) En la Matemática El cálculo de probabilidades nos da las leyes de un sistema que se puede clasificar como aleatorio, por lo que de alguna manera es un cálculo determinista, se opone al azar aunque de forma diferente a las teorías mecanicistas clásicas. Mientras que éstas se refieren al determinismo de objetos individuales, las probabilidades se refieren al determinismo de conjuntos. La explicación probabilista no presupone el azar en la base de la ciencia, ya que puede ser simplemente una muestra de nuestra ignorancia. Las matemáticas se ocupan del azar por medio de las diversas teorías de probabilidad. El ordenamiento estadístico es una forma de tratar matemáticamente la naturaleza y el hombre, como si fuesen datos aleatorios pero sin que lo sean necesariamente. Así se intenta prever y controlar en lo posible los fenómenos complejos. En las comunicaciones Una comunicación correcta depende, entre otras cosas, de la minimización del efecto aleatorio del ruido. Éste impone límites a la eficiencia de la comunicación. El estudio de dichos límites condujo a Claude Shannon al desarrollo de la teoría de la información, a efectuar aportaciones fundamentales a la teoría de la comunicación y a establecer las bases teóricas de la criptografía. El acceso a una fuente de aleatoriedad de alta calidad es crítico en criptografía. La elección de una clave muy ligeramente no aleatoria puede resultar en el desciframiento de las comunicaciones. Número aleatorio Un número aleatorio es un resultado de una variable al azar especificada por una función de distribución. Cuando no se especifica ninguna distribución, se presupone que se utiliza la distribución uniforme continua en el intervalo [0,1]. junio de 2008 Página 8 de 54 Trabajo de investigación Trabajo de investigación I Aleatoriedad y pseudoaleatoriedad (Especialización Sistemas Distribuidos, Multimedia y Seguros) Autor: Eugenio Soler Galán En los ordenadores personales es fácil simular la generación de números aleatorios, mediante mecanismos de generación de números pseudoaleatorios, que, sin ser aleatorios (siguen una fórmula), lo aparentan. Un número pseudo-aleatorio es un número generado en un proceso que parece producir números al azar, pero no lo hace realmente. Las secuencias de números pseudo-aleatorios no muestran ningún patrón o regularidad aparente desde un punto de vista estadístico, a pesar de haber sido generadas por un algoritmo completamente determinista, en el que las mismas condiciones iniciales producen siempre el mismo resultado. Los mecanismos de generación de números aleatorios que se utilizan en la mayoría de los sistemas informáticos son en realidad procesos pseudoaleatorios. Una de las utilidades principales de los números pseudoaleatorios se lleva a cabo en el llamado método de Monte Carlo, con múltiples utilidades, por ejemplo para hallar áreas / volúmenes encerradas en una gráfica y cuyas integrales son muy difíciles de hallar o irresolubles; mediante la generación de puntos basados en estos números, podemos hacer una buena aproximación de la superficie / volumen total, encerrándolo en un cuadrado / cubo, aunque no lo suficientemente buena. Asimismo, también destacan en el campo de la Criptografía. Por ello se sigue investigando en la generación de dichos números, empleando por ejemplo medidores de ruido blanco o analizadores atmosféricos, ya que experimentalmente se ha comprobado que tienen una aleatoriedad bastante alta. En la Informática En la Informática el azar interviene fundamentalmente en la seguridad de la información (en el cifrado), ya sea para que otros no sean capaces de ver lo que otros mandan, ya sea para salvaguardar la integridad de lo mandado. En general en la actualidad se usan algoritmos de código abierto (todo el mundo conoce el algoritmo) y el resultado del cifrado o el resumen nos parece obtenido al azar, que es precisamente lo que queremos, para que otros no puedan en un junio de 2008 Página 9 de 54 Trabajo de investigación Trabajo de investigación I (Especialización Sistemas Distribuidos, Multimedia y Seguros) Aleatoriedad y pseudoaleatoriedad Autor: Eugenio Soler Galán corto espacio de tiempo descifrar el mensaje si no poseen algún método que así se lo permita, ligado al que el otro quiera que lo descifre. De hay el desarrollo de los algoritmos de clave privada-clave pública. La pega a esto es que cada vez las claves tienen que ser mas largas a medida que va aumentado la potencia de los ordenadores, ya que lo que era seguro hace 10 años puede que hoy no se tarde más de unos minutos o quizás segundos en descifrar lo que antes era indescifrable (siempre utilizamos esta palabra con un significado relativo, todo depende del tiempo). Además con el paso del tiempo estos algoritmos de código abierto cada vez están más estudiados y se pueden encontrar vulnerabilidades, en definitiva, el tiempo juega en contra en el “azar” en la informática. En definitiva el azar-la seguridad, es una cuestión de tiempo. junio de 2008 Página 10 de 54 Trabajo de investigación Trabajo de investigación I Aleatoriedad y pseudoaleatoriedad (Especialización Sistemas Distribuidos, Multimedia y Seguros) Autor: Eugenio Soler Galán OTROS CONCEPTOS RELACIONADOS CON LA ALEATORIEDAD Incertidumbre. Básicamente indica falta de certeza respecto a la resolución de un experimento o problema. Sin embargo es muy usado en Física con un significado más preciso, para referirse a la falta de certeza de una medida, es decir, a la existencia de un límite para determinar la exactitud con que se pueden realizar medidas en el mundo físico. El paradigma de esta idea de incertidumbre está en el famoso principio de incertidumbre de Heisemberg, que básicamente dice que no se pueden medir la posición y velocidad (o momento cinético) simultáneamente con la precisión que se desee. Mejor dicho, dice que la precisión de una es inversamente proporcional a la de la otra. Por eso se acostumbra a presentar este principio diciendo que “no se puede precisar la posición y velocidad de una partícula simultáneamente”. Indeterminismo. Utilizado para expresar la falta de determinismo para un fenómeno, entendiendo por determinismo el hecho de que el fenómeno se comporta según ciertas leyes bien conocidas que permiten predecir su desarrollo y consecuencias. Otra vez se trata de poder determinar con certeza las consecuencias un experimento. Un experimento azaroso es en cierta medida indeterminista al no poder establecer con certeza su resultado. Impredectibilidad. Expresa la imposibilidad de predecir las consecuencias de un experimento o el comportamiento de un fenómeno con certeza. Expresa entonces el indeterminismo del fenómeno, y por lo tanto la existencia de una incertidumbre respecto al mismo. Caos. Término acuñado en tiempos relativamente recientes, para clasificar a una serie de fenómenos o sistemas dinámicos (sistemas que evolucionan en el tiempo), en los que pese a que cada elemento involucrado se comporta de acuerdo a leyes deterministas (e incluso sencillas), el sistema evoluciona en forma aparentemente aleatoria (azarosa). Irreductibilidad. Expresa la imposibilidad de reducir un cierto enunciado a una consecuencia de los axiomas elementales en un sistema formal lógico. Hasta junio de 2008 Página 11 de 54 Trabajo de investigación Trabajo de investigación I (Especialización Sistemas Distribuidos, Multimedia y Seguros) Aleatoriedad y pseudoaleatoriedad Autor: Eugenio Soler Galán tiempos recientes se tenía confianza que de un sistema formal bien definido, como podría ser el cuerpo total de las matemáticas, sería posible extraer todas las conclusiones válidas a partir de un conjunto reducido de axiomas elementales, o expresado de otra forma, dado un enunciado válido este podría reducirse a los axiomas. El hecho de que algo como esto no suceda introduce el azar en un sistema formal, porque no es posible por ejemplo Gambling: “El azar en la ciencia asegura, si la base axiomática está completa, porque puede aparecer un enunciado irreductible que por lo tanto deba ser incorporado como un nuevo axioma”. Fenómenos como el de la irreductibilidad están fuertemente ligados al tratamiento formal del azar, y tienen como consecuencia directa en su análisis, que por ejemplo no puede afirmarse con certeza si un número (o una serie de ellos) es efectivamente aleatorio. Aleatoriedad, “randomness”. Se refiere a la naturaleza azarosa de un fenómeno, o una manifestación del mismo. Se habla con frecuencia de número aleatorio o comportamiento aleatorio. El equivalente anglosajón es “randomness”, y frecuentemente se usa el anglicismo “randómico” en español como sinónimo de aleatorio. Condiciones iniciales. Dado un fenómeno y una ley que permite hacer predicciones sobre él (es decir, sobre los valores de ciertas magnitudes del mismo), se llaman condiciones iniciales del sistema a los valores de aquellas magnitudes que entradas a las ecuaciones que permiten conocer el valor de la magnitud a predecir. Por ejemplo en mecánica clásica, dadas la posición y velocidad de un móvil en un cierto instante t, es posible predecir a través de las ecuaciones del movimiento, la posición y velocidad del móvil en cualquier otro instante. Errores de medida. Consideremos algo que nos enseñan a hacer desde nuestras primeras experiencias de laboratorio: las medidas tienen errores, los errores se estiman y se expresan con la medida tomada, los errores se propagan al utilizar las medidas en ecuaciones para extraer otros resultados. Obsérvese entonces de que estamos ante un fenómeno determinista del cual conocemos con precisión la ley (ecuaciones) de la que se lo controla. Esto nos habilita a junio de 2008 Página 12 de 54 Aleatoriedad y pseudoaleatoriedad Trabajo de investigación Trabajo de investigación I Autor: Eugenio Soler Galán (Especialización Sistemas Distribuidos, Multimedia y Seguros) hacer predicciones respecto al mismo. Consideremos el péndulo por ejemplo, su periodo viene definido por la longitud de la cuerda y la aceleración de la gravedad. Dada por conocida la aceleración de la gravedad g (y supondremos que sin error), medimos el largo de la cuerda, pero lo haremos con cierto error. Colocamos los datos en la ecuación, obtenemos un valor para el periodo del péndulo, y propagando el error, obtenemos el error o incertidumbre de tal valor. Esto quiere decir que en realidad no podemos predecir exactamente un valor de T, sino un espacio de muestra continuo con centro en T. La teoría de errores habla de eso justamente de cómo el error en las medidas introduce un error en el resultado de las ecuaciones que se expande, define el espacio de muestra del resultado y la distribución de probabilidad del mismo. Como vemos entonces todo experimento regido por leyes deterministas pero con condiciones iniciales medidas con error, se transforma en un experimento azaroso. Para cualquier modelo que necesite condiciones iniciales para hacer predicciones, al tener esa medida de condiciones iniciales errores, la predicción es azarosa, qué tanto dependerá de qué tan grueso sea el error, y de cuál es el comportamiento del sistema. En los sistemas dinámicos no lineales, la segunda característica es de mucho mayor peso la primera, y esto origina comportamiento caótico. junio de 2008 Página 13 de 54 Trabajo de investigación Trabajo de investigación I Aleatoriedad y pseudoaleatoriedad (Especialización Sistemas Distribuidos, Multimedia y Seguros) Autor: Eugenio Soler Galán CRIPTOGRAFÍA Y NÚMEROS ALEATORIOS Los algoritmos de llave pública, debido a su mayor orden de complejidad, suelen ser empleados en conjunción con algoritmos de llave privada de la siguiente forma: el mensaje primero se codifica empleando un algoritmo simétrico y la llamada clave de sesión, que será diferente cada vez. Es la clave de sesión la que se codifica empleando criptografía asimétrica. La única manera de que estas claves sean seguras es que no exista ningún tipo de dependencia entre una clave y la siguiente, esto es, que sean aleatorias. De aquí surge el interés por los números aleatorios en Criptografía. Más adelante se hablará de generadores pseudoaleatorios y diferentes tests de aleatoriedad como el denominado test ψ2, que puede ser consultado en casi cualquier libro de Estadística. Los generadores tradicionales no nos permiten calcular secuencias realmente aleatorias, puesto que conociendo un número obtenido con el generador podemos determinar cualquiera de los posteriores, recordemos que cada elemento de la secuencia se emplea como semilla para el siguiente. Si bien las series que producen estos generadores superan los test estadísticos de aleatoriedad, son totalmente previsibles, y esa condición es inadmisible para aplicaciones criptográficas. Un famoso ejemplo de este problema ocurrió en una de las primeras versiones de Netscape, que resultaba insegura debido al uso de un generador pseudoaleatorio demasiado previsible. Vamos a caracterizar diferentes tipos de secuencias aleatorias, así como su interés en Criptografía. También veremos cómo implementar un buen generador aleatorio útil desde el punto de vista criptográfico. Tipos de Secuencias Aleatorias. Secuencias pseudoaleatorias En realidad es casi del todo imposible generar secuencias auténticamente aleatorias en una computadora. Todos los generadores pseudoaleatorios producen secuencias finitas y periódicas de números empleando operaciones aritméticas y/o lógicas. Lo único que podremos conseguir es que estas secuencias sean lo más largas posible antes de comenzar a repetirse y que junio de 2008 Página 14 de 54 Trabajo de investigación Trabajo de investigación I Aleatoriedad y pseudoaleatoriedad (Especialización Sistemas Distribuidos, Multimedia y Seguros) Autor: Eugenio Soler Galán superen los tests estadísticos de aleatoriedad. En este sentido podríamos hablar de: - Secuencias estadísticamente aleatorias: Secuencias que superan los tests estadísticos de aleatoriedad. Un generador congruencial lineal cumple esta propiedad, pero en Criptografía será del todo inútil, debido a que cada valor de la secuencia se emplea como semilla para calcular el siguiente, lo cual nos permite conocer toda la serie a partir de un único valor. Supongamos que tenemos un sistema que se basa en emplear claves aleatorias para cada sesión y usamos un generador de este tipo. Bastaría con que una de las claves quedara comprometida para que todas las comunicaciones pasadas y futuras pudieran ser descifradas sin problemas. Incluso se ha demostrado que conociendo únicamente un bit de cada valor de la secuencia, ésta puede ser recuperada completamente con una cantidad relativamente pequeña de valores. Secuencias criptográficamente aleatorias El problema de las secuencias estadísticamente aleatorias, y lo que las hace poco útiles en Criptografía, es que son completamente predecibles. Definiremos, por tanto: - Secuencias criptográficamente aleatorias: Para que una secuencia pseudoaleatoria sea criptográficamente aleatoria, ha de cumplir la propiedad de ser impredecible. Esto quiere decir que debe ser computacionalmente intratable el problema de averiguar el siguiente número de la secuencia, teniendo total conocimiento acerca de todos los números anteriores y del algoritmo de generación empleado. Existen generadores pseudoaleatorios criptográficamente resistentes que cumplen esta propiedad. Sin embargo no son suficientes, debido a que se necesita una semilla para inicializar el generador. Si un atacante lograra averiguar la semilla que estamos empleando en un momento dado, podría de nuevo comprometer nuestro sistema. Necesitamos para ella valores realmente impredecibles, de forma que nuestro adversario no pueda averiguarlos ni junio de 2008 Página 15 de 54 Aleatoriedad y pseudoaleatoriedad Trabajo de investigación Trabajo de investigación I Autor: Eugenio Soler Galán (Especialización Sistemas Distribuidos, Multimedia y Seguros) tratar de simular el proceso de generación que nosotros hemos llevado a cabo. Necesitamos, pues, valores auténticamente aleatorios. Secuencias totalmente aleatorias En realidad, como ya vimos anteriormente se puede pensar que no existen en el Universo sucesos cien por cien aleatorios. En cualquier caso, y a efectos prácticos, consideraremos un tercer tipo de secuencias pseudoaleatorias: - Secuencias aleatorias: Diremos que una secuencia es totalmente aleatoria (o simplemente aleatoria) si no puede ser reproducida de manera fiable. Llegados a este punto parece claro que nuestro objetivo no va a ser generar secuencias aleatorias puras, sino más bien secuencias impredecibles y no reproducibles. Será suficiente, pues, con emplear un generador criptográficamente aleatorio alimentado por una semilla totalmente aleatoria. Generación de Secuencias Aleatorias Criptográficamente Válidas Para poder obtener secuencias a la vez impredecibles y no reproducibles, se usan generadores de secuencias criptográficamente aleatorias, en conjunción con algún mecanismo de recolección de bits aleatorios, que nos va a permitir inicializar la semilla del generador. Un esquema de este tipo será seguro siempre que se salvaguarde adecuadamente la semilla empleada. Veamos en primer lugar algunos mecanismos para obtener los bits de la semilla, y después nos centraremos en los generadores criptográficamente aleatorios propiamente dichos. Obtención de Bits Aleatorios Como hemos dicho antes, las operaciones aritméticas y lógicas que realiza una computadora son completamente deterministas. Sin embargo, los ordenadores, como veremos a continuación, poseen elementos menos deterministas que pueden ser útiles para nuestros propósitos. junio de 2008 Página 16 de 54 Aleatoriedad y pseudoaleatoriedad Trabajo de investigación Trabajo de investigación I Autor: Eugenio Soler Galán (Especialización Sistemas Distribuidos, Multimedia y Seguros) Para obtener n bits aleatorios bastaría con que una persona lanzara una moneda al aire n veces y nos fuera diciendo el resultado. En la actualidad apenas hay computadores que incorporen hardware específico para esta tarea, aunque existe y sería bastante barato y sencillo incorporarlo a la arquitectura de cualquier ordenador. Existen valores obtenidos del hardware de la computadora que suelen proporcionar algunos bits de aleatoriedad. Parece razonable que leer en un momento dado el valor de un reloj interno de alta precisión proporcione un resultado más o menos impredecible, por lo que podríamos emplearlo para recolectar valores aleatorios. Diferentes pruebas han demostrado sin embargo que mecanismos de este tipo, que pueden ser útiles en ciertas arquitecturas y sistemas operativos, dejan de servir en otras versiones del mismo sistema o en arquitecturas muy similares, por lo que hemos de tener mucho cuidado con esto. Algunas veces se ha propuesto el uso de los números de serie de los componentes físicos (hardware) de un sistema, pero recordemos que estos números tienen una estructura muy rígida, y a veces conociendo simplemente el fabricante y la fecha aproximada de fabricación podemos adivinar casi todos sus dígitos, por lo que van a ser demasiado predecibles. Tampoco son útiles las fuentes públicas de información, como por ejemplo los bits de un CD de audio, puesto que nuestros atacantes pueden disponer de ellas, con lo que el único resto de aleatoriedad que nos va a quedar es la posición que escojamos dentro del CD para extraer los bits. Fuentes Adecuadas de Obtención de Bits Aleatorios Cuando no disponemos de un elemento físico en la computadora específicamente diseñado para producir datos aleatorios, podemos emplear algunos dispositivos hardware relativamente comunes en los ordenadores actuales: - Tarjetas digitalizadoras de sonido o vídeo. Un dispositivo digitalizador de audio (o vídeo) sin ninguna entrada conectada, siempre que tenga ganancia suficiente, capta esencialmente ruido térmico, con una distribución aleatoria, y por lo tanto puede ser apto para nuestros propósitos. junio de 2008 Página 17 de 54 Aleatoriedad y pseudoaleatoriedad Trabajo de investigación Trabajo de investigación I Autor: Eugenio Soler Galán (Especialización Sistemas Distribuidos, Multimedia y Seguros) - Unidades de Disco. Las unidades de disco presentan pequeñas fluctuaciones en su velocidad de giro debido a turbulencias en el aire. Si se dispone de un método para medir el tiempo de acceso de la unidad con suficiente precisión, se pueden obtener bits aleatorios de la calidad necesaria. Si no se dispone de una fuente fiable de bits aleatorios se puede efectuar la combinación de varias fuentes de información menos fiables. Por ejemplo, podríamos leer el reloj del sistema, algún identificador del hardware, la fecha y la hora locales, el estado de los registros de interrupciones del sistema, etc. Esto garantizará que en total se ha recogido una cantidad suficiente de bits realmente aleatorios. La mezcla de todas esas fuentes puede proporcionarnos suficiente aleatoriedad para nuestros propósitos. Teniendo en cuenta que el número de bits realmente aleatorios que se obtendrán como resultado final del proceso ha de ser necesariamente menor que el número de bits recogido inicialmente, hemos de buscar un mecanismo para llevar a cabo esa combinación. Emplearemos a tal efecto las denominadas funciones de mezcla fuertes. Una función de mezcla es aquella que toma dos o más fuentes de información y produce una salida en la que cada bit es una función compleja y no lineal de todos los bits de la entrada. Por término medio, modificar un bit en la entrada debería alterar aproximadamente la mitad de los bits de salida. Podemos emplear diferentes algoritmos criptográficos para construir este tipo de funciones: - Algoritmos Simétricos. Un algoritmo simétrico de cifrado puede ser útil como función de mezcla de la siguiente forma: supongamos que usa una clave de n bits, y que tanto su entrada como su salida son bloques de m bits. Si disponemos de n+m bits inicialmente, podemos codificar m bits usando como clave los n restantes, y así obtener como salida un bloque de m bits con mejor aleatoriedad. Así, por ejemplo, si usamos DES, podemos reducir a 64 bits un bloque de 120. - Funciones Resumen. Una función resumen puede ser empleada para obtener un número fijo de bits a partir de una cantidad arbitraria de bits de junio de 2008 Página 18 de 54 Trabajo de investigación Trabajo de investigación I (Especialización Sistemas Distribuidos, Multimedia y Seguros) Aleatoriedad y pseudoaleatoriedad Autor: Eugenio Soler Galán entrada. junio de 2008 Página 19 de 54 Trabajo de investigación Trabajo de investigación I Aleatoriedad y pseudoaleatoriedad (Especialización Sistemas Distribuidos, Multimedia y Seguros) Autor: Eugenio Soler Galán ¿CÓMO CONSEGUIR NÚMEROS PSEUDOALEATORIOS? ¿Cómo se consiguen números aleatorios? La cuestión, que en principio parece sin importancia, es realmente complicada desde el punto de vista técnico y también conlleva aspectos filosóficos 4 En la práctica necesitamos alguna forma de generar números aleatorios. Según D. H. Lehmer propuso, se considera aleatoria cualquier sucesión de números que cumpliera las dos condiciones siguientes: - Cualquier persona que desconozca cómo se ha obtenido la sucesión debe ser incapaz de predecir el siguiente término. - La sucesión de números debe pasar con nota todos los tests de aleatoriedad a que sea sometida: rachas, gaps, serial, etc. Hay una célebre frase de R. Coveyou, atribuida también a Donald Knuth, que aparece muchas veces por Internet en páginas dedicadas a chistes científicos... aunque es real como la vida misma: “La generación de números aleatorios es una cuestión demasiado importante para dejarla en manos del azar”. La principal característica de un número aleatorio, es que su probabilidad de ser elegido es la misma probabilidad que tiene cualquier otro número dentro de un intervalo, además la elección debe ser independiente, aunque con los métodos que se aplican en la actualidad se puede considerar que la siguiente secuencia 1001 1010 1001 0100 es más aleatoria que esta otra 0000 0000 0000 0000, aunque realmente ambas secuencias tienen la misma probabilidad de darse, lo que tiene la primera de especial sobre la segunda es su grado de desorden, su caos, es decir que lo que se mide no solo es la probabilidad sino la entropía, sin embargo existe una enorme discusión sobre la aleatoriedad real, es decir, cómo podemos estar seguros o cómo se puede demostrar que algún “Una sucesión de dígitos absolutamente aleatoria es un concepto lógicamente contradictorio” (Martin Gardner). 4 junio de 2008 Página 20 de 54 Trabajo de investigación Trabajo de investigación I (Especialización Sistemas Distribuidos, Multimedia y Seguros) Aleatoriedad y pseudoaleatoriedad Autor: Eugenio Soler Galán dispositivo es aleatorio, en realidad poco podríamos conseguir si nos restringimos al concepto puro de aleatorio. Aunque gran parte de la probabilidad aplicada está basada en la existencia de eventos aleatorios, por ejemplo, si se quiere encontrar la preferencia de algún producto o partido político se procede a realizar una encuesta, la cual no se realiza a toda la población sino que se elige una muestra de tamaño considerable para que el intervalo de confianza sea satisfactorio, pues bien, la herramienta estadística debe de suponer que la muestra tomada es aleatoria, de otra forma los resultados estarán muy lejos de la realidad, para lo cual existen métodos que permiten acercarse a que la muestra considerada sea lo más aleatoria posible evitando las características más comunes de no aleatoriedad. De esta forma podemos llegar al concepto de pseudoaleatoriedad. Diremos entonces que un dispositivo genera números pseudoaleatorios si en lo posible evita las principales características de no aleatoriedad. Por ejemplo, si nuestro dispositivo generara una cadena de 10 dígitos binarios, y en circunstancias normales nos da una salida de a=0000000001, entonces podríamos pensar que existe una mayor probabilidad de que el dispositivo genera al 0 que al 1, por lo que tener una mayor cantidad de ceros que de unos ó una mayor cantidad de unos que de ceros será una característica de no aleatoriedad. Se pueden encontrar varias características de éstas y tratar de evitarlas. Existe también una prueba que detecta la mayor parte de estas características, el método Universal de Maurer. La forma práctica de generar números pseudoaleatorios para propósitos criptográficos es la siguiente: Etapa1: generar un primer número pseudoaleatorio que llamaremos semilla( para generar la semilla de un dispositivo pseudoaleatorio basado en software se deben de usar eventos que estén muy alejados de la intervención humana; por ejemplo, el sistema de reloj, el teclado, el ratón, el contenido de buffers de entrada y salida, o una combinación de los anteriores.) Etapa2: generar una cadena de números pseudoaleatorios que provienen de una función de un sólo sentido, en la práctica se usan MD5, SHA-1, la función RSA, la función logaritmo en curvas elípticas, etc. junio de 2008 Página 21 de 54 Trabajo de investigación Trabajo de investigación I (Especialización Sistemas Distribuidos, Multimedia y Seguros) Aleatoriedad y pseudoaleatoriedad Autor: Eugenio Soler Galán Prueba: Para probar que un dispositivo genera números peudoaleatorios, éste debe de pasar una prueba que detecte las propiedades más conocidas de no aleatoriedad, por ejemplo la prueba de Maurer. Fundamentalmente existen dos formas de generar números aleatorios, la más elemental es acudir a procedimientos de azar en los que se generan variables aleatorias, es decir, no predecibles. La otra forma consiste en la utilización de algoritmos matemáticos, los cuales generan secuencias de números con aspecto aleatorio, pero cuya secuencia se conoce, estos números pseudoaleatorios no cumplen con la condición de ser impredecibles. Para un observador la serie parece aleatoria, pero para quien ha formulado el algoritmo la serie está perfectamente definida. Es más, cada vez que se ejecuta el algoritmo se obtiene la misma serie de valores. Sin embargo, esto último tiene una clara ventaja desde el punto de vista de la investigación pues facilita la comparación. Otra de las características más comunes de los generadores de números aleatorios es que suelen generar valores cuya distribución es una uniforme 0,1 U [0, 1]. Son los números pseudoaleatorios más fáciles de generar, presentando, además, la ventaja de poder convertirlos en valores de cualquier otra distribución, esto es lo que se denomina transformación inversa x = F-1(y), donde y 0 pertenece a R [0, 1]. Las principales características de un generador de aleatorios son la longitud de la serie que es capaz de generar, (se obtienen un número finito de números antes de volver a repetirse por completo), y la aleatoriedad de la misma. La bondad de la aleatoriedad se estudia mediante la aplicación de test estadísticos como los de ajuste, rachas, etc. (Caridad, 1987). Tradicionalmente se consideraban una serie de propiedades deseables en un generador (Ríos y Ríos, 1997): rapidez de ejecución, poco consumo de memoria, portabilidad, sencillez de implementación, reproducibilidad y mutabilidad, periodo largo. El método más utilizado en la actualidad consiste en la generación de un valor Ri+1 como resto (función Mod) de una operación de división, que luego se junio de 2008 Página 22 de 54 Aleatoriedad y pseudoaleatoriedad Trabajo de investigación Trabajo de investigación I Autor: Eugenio Soler Galán (Especialización Sistemas Distribuidos, Multimedia y Seguros) convierte a un valor uniforme U [0, 1] mediante una simple división. Los pasos son los siguientes: xn+1 = (axn + c) mod m Las constantes X0, a, c, y m, se eligen para que el periodo sea máximo con: i. c y m son primos entre sí ii. a–1 es múltiplo de todos los primos que dividen a m iii. si m es múltiplo de 4, a–1 también lo es El parámetro m determina el número de cifras, se suelen tomar potencias de dos. Cuando c = 0 el generador se denomina multiplicativo. Este tipo de métodos es más rápido y, aunque se reduce un poco la longitud del ciclo, la aparición de estos no es problema si m se elige suficientemente grande. x0=2 a=3 c=2 m =16 12 10 8 6 4 2 0 x0=2 a=5 c=9 m =16 16 14 12 10 8 6 4 2 0 En la primera figura no se cumplen las condiciones mientras que en la segunda sí. El principal problema de este método es la aparición de auto correlación ya que los valores de Xj, Xj+1 están relacionados por una expresión lineal. Para evitar esto, algunos programas generan series de datos que luego son extraídos de forma aleatoria. El generador de números aleatorios de Turbo Pascal también lo sigue. En este caso los parámetros son: m = 232 c = 1 a = 134775813. Existen otros mucho métodos de generación de números pseudo aleatorios: registro de desplazamiento, basados en los números de Fibonacci, método de Fibonacci retardado, etc. Algunos de estos métodos pueden verse en la siguiente dirección Web: junio de 2008 Página 23 de 54 Trabajo de investigación Trabajo de investigación I Aleatoriedad y pseudoaleatoriedad (Especialización Sistemas Distribuidos, Multimedia y Seguros) Autor: Eugenio Soler Galán http://www.lawebdefisica.com/apuntsmat/num_aleatorios/ Una vez elegido un generador de acuerdo con las característica que posee el paso siguiente consiste en contrastar dos hipótesis básicas en las aplicaciones de la simulación, la primera de ellas es que los números generados sea realmente aleatorios y la segunda, que se distribuyan según una función de distribución preestablecida, la Normal, en la mayoría de los casos. Esto será necesario siempre que no se disponga de información de valor sobre dichos generadores. La generación de valores uniformes es simple, sin embargo, en Cartografía existen otras distribuciones de interés, entre ellas la Normal. La transformación inversa es el proceso de generación de una muestra de valores x1, x2,...,xn según una función de distribución dada F(X), a partir de una serie de números pseudoaleatorios r1, r2,...,rn. Un problema básico que nos encontramos habitualmente es el de obtener secuencias de números uniformemente distribuidos en un intervalo [0,1]. Las diferentes posibilidades para resolver dicho problema son: 1.- Buscar en tablas de números aleatorios publicadas (libros, Internet...) 2.- Observar un proceso físico tal como la desintegración radiactiva, el ruido eléctrico 3.- Los lenguajes de programación y las hojas electrónicas incluyen una función para generarlos. 4.- Mediante algoritmos de generación de números aleatorios junio de 2008 Página 24 de 54 Trabajo de investigación Trabajo de investigación I Aleatoriedad y pseudoaleatoriedad (Especialización Sistemas Distribuidos, Multimedia y Seguros) Autor: Eugenio Soler Galán Las principales ventajas de los generadores de números aleatorios son: - Rapidez - Comodidad - Reproducibilidad - Portabilidad Y la desventaja fundamental: - Las secuencias obtenidas no son realmente aleatorias, ya que se obtienen con operaciones deterministas. Solo podemos obtener secuencias pseudoaleatorias, que a su vez satisfacen algunos criterios de aleatoriedad adecuados. Los números generados deben cumplir ciertas características para que sean válidos. Dichas características son: 1. Uniformemente distribuidos. 2. Estadísticamente independientes. 3. Su media debe ser estadísticamente igual a 1/2. 4. Su varianza debe ser estadísticamente igual a 1/12. 5. Su periodo o ciclo de vida debe ser largo. 6. Deben ser generados a través de un método rápido. 7. Generados a través de un método que no requiera mucha capacidad de almacenamiento de la computadora. Algunos de estos métodos de obtención de número aleatorios son: junio de 2008 Página 25 de 54 Trabajo de investigación Trabajo de investigación I Aleatoriedad y pseudoaleatoriedad (Especialización Sistemas Distribuidos, Multimedia y Seguros) Autor: Eugenio Soler Galán GENERADOR ALEATORIO POR ENTRADA DE TECLADO En más de una aplicación, para general claves se utiliza el teclado. Dichos generadores toman sus valores a partir de las distintas entradas del teclado realizadas por el usuario y de los tiempos empleados entre las sucesivas pulsaciones de las teclas. En dicho generador, el valor aleatorio i–ésimo generado depende de: 1. El valor del carácter i–ésimo introducido por teclado. 2. La diferencia de tiempo transcurrido entre la introducción del carácter ( i -1)– ésimo y la introducción de carácter i–ésimo. Para el cálculo de esos tiempos hemos utilizado la función times() de la biblioteca sys/times.h. Esta función devuelve un valor proporcional al número de pulsos de reloj transcurridos desde un instante arbitrario del pasado. En Linux, si el parámetro de la función es el puntero NULL, este instante es el momento del último arranque del sistema. El número de pulsos por segundo que recoge la función viene señalado con el parámetro _SC_CLK_TCK. 3. El valor aleatorio previo generado. GENERADORES DE FIBONACCI Las grandes ventajas de estos generadores son que son generadores muy rápidos que tienen un periodo muy largo. Los generadores de Fibonacci se basan en una recurrencia del tipo Ni=(Ni-r ⊗ Ni-s) mod m donde r<s son enteros dados y ⊗ denota alguna de las operaciones +,-,x,^. Este tipo de generador precisa iniciar (con otro generador) y mantener una lista de los últimos s números generados. Otros tipos de generadores los podemos encontrar en: junio de 2008 Página 26 de 54 Trabajo de investigación Trabajo de investigación I (Especialización Sistemas Distribuidos, Multimedia y Seguros) - Aleatoriedad y pseudoaleatoriedad Autor: Eugenio Soler Galán W.H. Press, S.A Teukolski, W.T. Vetterling i B.P. Flannery, Numerical Recipes in C, Cambridge University Press - D.E. Knuth, The Art of computing programming, 2: Seminumerical Algorithms, Addison-Wesley junio de 2008 Página 27 de 54 Aleatoriedad y pseudoaleatoriedad Trabajo de investigación Trabajo de investigación I Autor: Eugenio Soler Galán (Especialización Sistemas Distribuidos, Multimedia y Seguros) CONTRASTES DE ALEATORIEDAD La aproximación a los generadores de números aleatorios exige contrastar ciertas propiedades estadísticas de sus salidas. Algunos de los contrastes son genéricos y pueden utilizarse en la evaluación de generadores de variables aleatorias. Muchos de estos contrastes se encuentran implementados en los paquetes estadísticos comerciales más importantes. Además algunos generadores disponen de una teoría analítica que conduce a contrastes teóricos específicos. Para aumentar su potencia, los contrastes siguientes pueden repetirse N veces. La distribución empírica de los valores del estadístico pueden compararse con su distribución teórica mediante, por ejemplo, el contraste de Kolmogorov-Smirnov. CONTRASTE DE RACHAS Dada la sucesión de observaciones X1, X2, ... , Xn, construimos la sucesión de símbolos binarios definida mediante 1 si Xi < Xi+1, 0 si Xi> Xi+1. Definimos racha creciente (decreciente) de longitud 1 a un grupo seguido de 1 números 1 o 0. Intuitivamente, rechazamos la aleatoriedad con un número muy pequeño o muy grande de rachas. De ahí se obtiene inmediatamente el contraste. Otro procedimiento para definir rachas es el recuento de observaciones que se sitúan a un mismo lado de la mediana. La distribución asintótica del número de rachas, bajo la hipótesis de aleatoriedad, es De donde se sigue, inmediatamente, un contraste. El contraste de rachas da una idea del comportamiento aleatorio de los datos. Rachas excesivamente largas o cortas significan dependencia y no aleatoriedad. Aplicable a variables susceptibles de ser ordenadas. (para usar la tabla hace falta que no haya repeticiones) junio de 2008 Página 28 de 54 Aleatoriedad y pseudoaleatoriedad Trabajo de investigación Trabajo de investigación I Autor: Eugenio Soler Galán (Especialización Sistemas Distribuidos, Multimedia y Seguros) Definición de racha: sucesión de valores situados por encima (racha positiva) o por debajo de la mediana (racha negativa). El máximo número de rachas en n/2 (zzz...z) y el mínimo número de rachas en 2 (zzzz...) k = número de signos positivos=número de signos negativos longitud de una racha: Número de observaciones de esa sucesión. Ejemplo: Para n=13 7 3 6 7 11 23 5 23 15 4 31 22 20 1. Obtención de la mediana: Se ordena la muestra ordenada y se elije el valor central. 3 4 5 6 7 7 11 15 20 22 23 23 31 2. Obtención de las rachas: • Los valores iguales a la mediana no intervienen (salvo casos) • Se observa, en la muestra original, los valores que están por encima (+) y por debajo de la mediana (-) : 7 - 3 - 6 - 7 - 11 23 + 5 - 23 + 15 + 4 - 31 + 22 + 20 + k=6. Si observamos las tablas veremos que para que pueda considerarse con un 95% la independencia haría falta 6 rachas. Si el tamaño de cualquiera de las dos muestras es mayor que 30, si consideramos una muestra de tamaño n que ha sido dividida en dos categorías (+) y (-) con n1 y n2 observaciones cada una. Se denomina racha a una sucesión de valores de la misma categoría la distribución de R se aproxima a una normal de media y varianza las siguientes: junio de 2008 Página 29 de 54 Trabajo de investigación Trabajo de investigación I Aleatoriedad y pseudoaleatoriedad (Especialización Sistemas Distribuidos, Multimedia y Seguros) Autor: Eugenio Soler Galán y se considera el estadístico donde R es el número de rachas. Se rechaza la hipótesis nula (aleatoriedad) si: En este ejemplo: Si nos encontrásemos con: 1000111010011010011100101010110101100011011000110100111010101011 tendríamos: n1=34 y n2=30 con 21 rachas de unos y 20 rachas de ceros, es decir R=41. Donde μR=32,875 y σ2R=15,6212798. ZR=0,52012384 no podemos afirmar con una fiabilidad adecuada (95%) que se trata de números al azar, ya que Z1α/2=1,96, y no se cumple que ZR sea mayor que Z1-α/2 si agrupamos de dos en dos tendremos: 1000111010011010011100101010110101100011011000110100111010101011 (2 0 3 2 2 1 2 2 1 3 0 2 2 2 3 1 1 2 0 3 1 2 0 3 1 0 3 2 2 2 2 3 en base cuatro) tendríamos: k=7 y el número de rachas=12 donde n=32, podemos afirmar con una fiabilidad adecuada(99´5%) que se trata de números al azar. Mediana 2 si lo agrupamos de cuatro en cuatro tendremos: 1000111010011010011100101010110101100011011000110100111010101011 (8 E 9 A 7 2 A D 6 3 6 3 4 E A B en hexadecimal) tendríamos: k=8 y el número de rachas=6 no podemos afirmar con una fiabilidad adecuada(apróx. 10%) que no se trata de números al azar. Mediana 8,5 y si lo agrupamos de ocho en ocho tendremos: 1000111010011010011100101010110101100011011000110100111010101011 (8E 9A 72 AD 63 63 4E AB en base 256) tendríamos: k=4 y el número de rachas=5 no podemos afirmar con una fiabilidad adecuada(inferior al 95%) que se trata de números al azar Mediana 80h. junio de 2008 Página 30 de 55 Aleatoriedad y pseudoaleatoriedad Trabajo de investigación Trabajo de investigación I Autor: Eugenio Soler Galán (Especialización Sistemas Distribuidos, Multimedia y Seguros) Se ha aplicado el test de rachas según: Daniel Peña Sea k el número de signos + presentes en la secuencia –que será por hipótesis igual al de signos menos- e igual a (n-1)/2 si n es impar y no hay observaciones repetidas. Puede demostrarse que el número total de rachas es una muestra de n observaciones independientes y sigue una distribución aproximadamente normal (si n>40) con parámetros μ = k+1 y σ2=k(k-1)/(2k-1). Para valores menores a 40 utilizar tabla. Se contabiliza el número de rachas y se estudia su aleatoriedad mediante el establecimiento de una hipótesis nula en la que se supone un comportamiento normal asintótico según una Normal. TEST DE WALD-WOLFOWITZ Permite contrastar la hipótesis nula de que dos muestras independientes proceden de poblaciones con distribuciones continuas idénticas contra la hipótesis alternativa de que las poblaciones difieren en algún aspecto, que puede ser tanto la tendencia central como de dispersión y de asimetría. Para realizar el contraste se combinan las observaciones de ambas muestras, ordenándolas de menor a mayor, y se halla el número de rachas o valores sucesivos de una misma muestra en la secuencia ordenada. El test es una prueba que compara la distribución de dos muestras que no deben tener necesariamente el mismo tamaño, partiendo de la hipótesis nula de que la distribución de rangos es aleatoria, es decir, las muestras son homogéneas. Valores muestra 1: 1 5 6 2 8 Valores muestra 2: 2 8 6 4 2 9 3 Los datos de las dos muestras se ordenan conjuntamente de forma ascendente y a cada grupo de valores se les asigna un valor de racha. Las rachas son secuencias de valores del mismo grupo, cuando las muestras han sido ordenadas. junio de 2008 Página 31 de 55 Aleatoriedad y pseudoaleatoriedad Trabajo de investigación Trabajo de investigación I Autor: Eugenio Soler Galán (Especialización Sistemas Distribuidos, Multimedia y Seguros) Valores ordenados Número de racha 1 2 2 2 3 4 5 6 6 8 8 9 1 1 2 2 2 2 3 3 4 5 6 6 Si dos muestras presentan una misma distribución cabe esperar que, en el ordenamiento de datos de menor a mayor, ambas muestras estén muy mezcladas (aleatoriazadas), es decir, que el número de rachas sea alto. Con una tabla de rachas se determina si el número de rachas encontradas es significativamente grande y se puede suponer la aleatoriedad, tal y como ocurre en el test de rachas El estadístico de prueba es el número de rachas, R. Si los tamaños de las muestras son, el valor de R está comprendido entre 2 y n1 + n2. Si la hipótesis nula es cierta, las observaciones de ambas muestras aparecerán muy mezcladas, y en la secuencia ordenada habrá un gran número de rachas; por el contrario, si ambas poblaciones de origen difieren las observaciones de cada muestra tenderán a aparecer juntas y el número de rachas será pequeño. Cuando ambos tamaños muestrales son superiores a 10 la distribución de R es aproximadamente normal de parámetros: La decisión se basa en el valor tipificado de R, que tiene distribución aproximadamente normal tipificada. Aunque para realizar este contraste es suficiente que las variables se midan en una escala ordinal, la presencia de empates, que este tipo de escala favorece, afecta negativamente a la fiabilidad del contraste y en tal caso es preferible utilizar la prueba de Kolmogorov-Smirnov. TEST DE ADHERENCIA Contraste de la Chi2 es un contraste que permite determinar la bondad del ajuste entre dos funciones. Es un contraste débil, por lo que permite asegurar el rechazo pero no la aceptación. La hipótesis nula consiste en suponer que la muestra de junio de 2008 Página 32 de 55 Trabajo de investigación Trabajo de investigación I Aleatoriedad y pseudoaleatoriedad (Especialización Sistemas Distribuidos, Multimedia y Seguros) Autor: Eugenio Soler Galán valores {X1,... Xn} distribuidos según una función FX(x) desconocida es semejante a otra función F(x) conocida: El estadístico se construye mediante la comparación de las frecuencias observadas con las esperadas. Para ello se deberán considerar distintas clases o intervalos. El estadístico se distribuye asintóticamente como una CHI2 con k-r-1 grados de libertad (r = número de parámetros que se estiman). Otra alternativa es el contraste de Kolmogorov-Smirnov. Este contraste también permite comparar el ajuste entre la función de distribución observada y la función de distribución esperada. La función de distribución observada se calculará a partir de las frecuencias acumuladas de las observaciones. Este test consiste en medir la diferencia entre los valores observados y esperados, la cual deberá ser menor que una cierta tolerancia que depende del número de datos y del nivel de significación con que se realice el Test. CONTRASTE DE KOLMOGOROV – SMIRNOV (Es una de las pruebas que debe pasar una secuencia de bits para que esta se considere aleatoria) Tiene como ventaja que mide las diferencias existentes entre las frecuencias relativas acumuladas de las dos muestras, por lo que se detectan diferencias no solo en la tendencia central, sino también en la dispersión y simetría de las muestras. La eficacia de este test es alta con número de datos reducidos, pero ésta tiene a decrecer cuando se aumenta el tamaño de muestra. Esta prueba estadística es usada para contrastar H0 de que las dos muestras proceden de una misma población, por tanto exige comparar dos funciones de distribución muestral, observando la diferencia máxima entre ellas. Para el calculo del estadístico hay que seguir los siguiente pasos: 1.- Ordenas las observaciones de cada muestra y distribuirlas en clases. 2.- Determinar las frecuencias acumuladas de las clases en cada muestra. junio de 2008 Página 33 de 55 Aleatoriedad y pseudoaleatoriedad Trabajo de investigación Trabajo de investigación I Autor: Eugenio Soler Galán (Especialización Sistemas Distribuidos, Multimedia y Seguros) 3.- Buscar la máxima diferencia entre la frecuencia acumulada de ambas muestras. 4.- Determinar los valores críticos de Dmax en una tabla. 5.- Si Dmax es mayor que el valor crítico, se rechaza la hipótesis nula de que las muestras son iguales Consideramos el caso en que F0 es continua. La función de distribución empírica de una muestra X1, X2, ..., Xn se define como: Fn(x) = #{Xi<=x} n Bajo la hipótesis nula Ho: FX(x) = F0(x) esperamos que Fn se aproxime a F0. Definimos el estadístico bilateral de Kolmogorov-Smirnov Dn = sup |Fn(x) – F0(x)| La distribución exacta de Dn está tabulada para valores seleccionados de n 40 y del nivel de significación . Para muestras grandes, se utiliza la distribución asintótica de Dn. junio de 2008 Página 34 de 55 Aleatoriedad y pseudoaleatoriedad Trabajo de investigación Trabajo de investigación I Autor: Eugenio Soler Galán (Especialización Sistemas Distribuidos, Multimedia y Seguros) PRUEBA DE FRECUENCIA. (Es una de las pruebas que debe pasar una secuencia de bits para que esta se considere aleatoria) También llamada prueba de monobit, determina si el número de ceros y el número de unos en la secuencia que llamaremos s son aproximadamente los mismos. Si llamamos n0 y n1 al número de ceros y de unos en una secuencia binaria. El valor estadístico a contrastar es: X1= (n0-n1)2 n que sigue una distribución Chi cuadrado con un grado de libertad. Esta prueba se basa en el primer postulado de Golomb que veremos un poco más adelante. PRUEBA DE SERIES (PRUEBA DE LOS DOS BITS). (Es una de las pruebas que debe pasar una secuencia de bits para que esta se considere aleatoria) Busca y cuenta el número de ocurrencias de las cuatro subsecuencias: 00, 01, 10, 11 y estudia si su distribución es tal y como se esperaría de una secuencia obtenida por un generador verdaderamente aleatorio. Para este caso, se definen los parámetros n00, n01, n10, n11 como el número de ocurrencias de cada una de las cuatro subsecuencias anteriores. Se verifica que: n00+ n01+ n10+ n11 = N-1. Siendo el valor estadístico de contraste: X2 = 4 2 2 2 2 2 ( n 00 + n 01 + n 10 + n 11 ) – (n 02 +n 12 ) + 1 N −1 n que sigue una distribución Chi cuadrado con dos grados de libertad. junio de 2008 Página 35 de 54 Aleatoriedad y pseudoaleatoriedad Trabajo de investigación Trabajo de investigación I Autor: Eugenio Soler Galán (Especialización Sistemas Distribuidos, Multimedia y Seguros) PRUEBA DE PÓQUER. (Es una de las pruebas que debe pasar una secuencia de bits para que esta se considere aleatoria) Estudia todas las subsecuencias diferentes de un tamaño m que se determina previamente. El valor m es el mayor entero positivo que verifica que [m/n] ≥ 5⋅(2m). Se toma entonces el valor k = [m/n] y se divide la secuencia s en k partes no solapadas, cada una de ellas de longitud m. Se definen 2m parámetros ni (1≤ i ≤ 2m) para almacenar el número de ocurrencias de cada una de las secuencias de la longitud indicada. Esta prueba determina si cada una de las posibles secuencias de longitud m aparecen un número semejante de veces. El valor estadístico estudiado es: X3 = 2m k ⎛ 2 2⎞ ⎜ ∑ ni ⎟ − k ⎜ i =1 ⎟ ⎝ ⎠ m que sigue una distribución Chi cuadrado con 2m – 1 grados de libertad. PRUEBA DE RACHAS. (Es una de las pruebas que debe pasar una secuencia de bits para que esta se considere aleatoria) En esta prueba se toma una secuencia binaria s y calcula el número de subsecuencias de s formadas por una determinada cantidad consecutiva de ceros o de unos, y que no viene ni seguida ni precedida por el mismo dígito. Si la racha está formada por ceros se conoce como hueco, mientras que si está formada por unos se conoce como bloque. Para determinar la longitud de las diferentes rachas, se calculan los sucesivos parámetros ei definidos según la siguiente expresión: junio de 2008 Página 36 de 54 Trabajo de investigación Trabajo de investigación I Aleatoriedad y pseudoaleatoriedad (Especialización Sistemas Distribuidos, Multimedia y Seguros) Autor: Eugenio Soler Galán donde k es el mayor valor de i que verifica ei ≥ 5. Se definen además los parámetros Hi y Bi que almacenan, respectivamente, el número de huecos y el número de bloques de longitud i. El valor estadístico a contrastar es: PRUEBA DE AUTOCORRELACIÓN. (Es una de las pruebas que debe pasar una secuencia de bits para que esta se considere aleatoria) El propósito de este test es analizar la correlación entre la secuencia s y la secuencia s' obtenida de desplazar sin rotación la secuencia s un número determinado de posiciones (d) a derecha o a izquierda. El número de bits de s que no coinciden con la correspondiente secuencia desplazada d posiciones se denota por A(d) y se calcula por la siguiente expresión donde es la operación "or exclusiva". El valor estadístico a contratar es: que sigue una distribución normal N (0,1). Para valores pequeños de A(d) se recomienda repetir la prueba para diferentes desplazamientos. junio de 2008 Página 37 de 54 Trabajo de investigación Trabajo de investigación I Aleatoriedad y pseudoaleatoriedad (Especialización Sistemas Distribuidos, Multimedia y Seguros) Autor: Eugenio Soler Galán TESTS ESTADÍSTICO UNIVERSAL DE MAURER. Otro de los tests ampliamente recomendado para analizar la aleatoriedad de una secuencia de bits, es el conocido como test universal de Maurer, que permite detectar algunas deficiencias en la supuesta aleatoriedad de un generador. Para realizar el test de Maurer hay que calcular el valor estadístico para la secuencia de salida s. Se escoge un valor para un parámetro L dentro del intervalo [6,16]. La secuencia se divide en bloques no superpuestos de L bits. El número total de bloques necesario es igual a Q + K, donde el mínimo valor para Q recomendado es 2L · 10 y el mínimo valor de K recomendado es 2L ·1000. En total, para el caso L = 16, hay que descomponer la serie en 2L · 1010 (es decir, 66.191.360) bloques de 16 bits cada uno, lo que supone un total de 1.059.061.760 bits. La principal desventaja del test de Maurer es, por tanto, la enorme cantidad de bits (más de mil millones) que se requieren para poder someter el generador a estudio. Por eso, este test queda habitualmente reservado para los generadores de secuencias de bits pseudoaleatorios (PRBG, PseudoRandom Bit Generator). El test obtiene un valor estadístico Xn que sigue una distribución Normal. A partir de la media esperada, de la desviación estándar calculada y del nivel de significación se obtienen los valores umbrales de aceptación o de rechazo k1 y k2. El valor estadístico debe quedar entre estos dos valores calculados. El proceso se realiza para diferentes valores del parámetro L (entre 6 y 16). El valor del nivel de significación α que se recomienda está entre 0,001 y 0,01. Para valores recomendados de L, al tomar el último extremo L = 16, se tiene que (tomando un valor de α=0,005) k2 – k1 = 2.xασ =0,000853. El valor estadístico calculado después de 65.536.000 sumas y logaritmos, debe caer en un intervalo de valores verdaderamente estrecho. junio de 2008 Página 38 de 54 Aleatoriedad y pseudoaleatoriedad Trabajo de investigación Trabajo de investigación I Autor: Eugenio Soler Galán (Especialización Sistemas Distribuidos, Multimedia y Seguros) CONTRASTE El contraste es de bondad de ajuste. Es poco potente, por lo que permite justificar el rechazo de una hipótesis, pero proporciona escaso soporte a su aceptación. El estadístico del contraste es: cuya distribución asintótica es una donde r son los parámetros estimados y la aproximación se acepta si min ei > 5 CONTRASTE DE PERMUTACIONES Separamos las observaciones en k-uplas La k-upla general se escribe Las ordenamos crecientemente y consideramos la ordenación correspondiente de los subíndices j. Bajo la hipótesis de la probabilidad de que dos números sean iguales es nula, hay k! ordenaciones posibles. Bajo la hipótesis de independencia, todas las permutaciones son equiprobables, con probabilidad 1/k!. Entonces es inmediato aplicar un contraste asintótica con k! clases, distribución frecuencias esperadas r / k!, donde r es el número de k-uplas y frecuencias observadas el número de veces que aparece cada ordenación. junio de 2008 Página 39 de 54 Trabajo de investigación Trabajo de investigación I Aleatoriedad y pseudoaleatoriedad Autor: Eugenio Soler Galán (Especialización Sistemas Distribuidos, Multimedia y Seguros) CONTRASTE DE HUECOS Fijamos dos valores y con 0 < < < 1. La sucesión presenta un hueco de longitud m si Bajo la hipótesis de aleatoriedad de la serie, la longitud m de los huecos sigue una distribución geométrica de parámetro , es decir, La hipótesis de aleatoriedad implica independencia de las longitudes de los huecos y podemos aplicar un contraste basado en las comparaciones de los números observados y esperados de huecos de longitud m. junio de 2008 Página 40 de 54 Trabajo de investigación Trabajo de investigación I Aleatoriedad y pseudoaleatoriedad (Especialización Sistemas Distribuidos, Multimedia y Seguros) Autor: Eugenio Soler Galán ANALISIS DE ALEATORIEDAD Como es sabido, no se dispone de ninguna prueba matemática que asegure de forma categórica la aleatoriedad de una secuencia de bits. No obstante, si las secuencias obtenidas mediante un determinado generador superan todas las pruebas diseñadas para tal fin, entonces es aceptado como generador de secuencias aleatorias. A continuación se presentan las pruebas fundamentales de aleatoriedad para dicho análisis. Postulados de Golomb Los postulados de Golomb, tienen un importante interés histórico puesto que fueron los primeros definidos y usados para establecer las principales condiciones necesarias para que una secuencia de bits pudiera ser considerada como aleatoria. No obstante, en la actualidad estas condiciones no se consideran suficientes, aunque si necesarias para poder aceptar como aleatoria una secuencia dada. Los postulados de aleatoriedad de Golomb son los siguientes: 1. En la secuencia binaria s de longitud n (sn), el número de unos debe diferir del número de ceros, como máximo, en una unidad. Sn=1000111010011010011100101010110101100011011000110100111010101011 En este caso el número de unos es 34 y el número de ceros 30, no cumpliéndose por tanto este primer postulado. Si lo transformamos un poco, cambiando dos unos por dos ceros ya se cumpliría: Sn=1000111010011010001100101010110101100011011000110100111010001011 Puede comprobarse que se cumple este postulado mediante el test de frecuencia o monobit. Veamos ahora el segundo postulado 2. En la secuencia sn, al menos la mitad de las cadenas de dígitos iguales tiene longitud uno, al menos una cuarta parte de esas cadenas tiene longitud dos, al menos una octava parte tiene longitud tres, etc. Además para cada una de las longitudes se dispone de tantas cadenas de unos como de ceros. junio de 2008 Página 41 de 54 Trabajo de investigación Trabajo de investigación I Aleatoriedad y pseudoaleatoriedad Autor: Eugenio Soler Galán (Especialización Sistemas Distribuidos, Multimedia y Seguros) En nuestro caso con Sn=1000111010011010001100101010110101100011011000110100111010001011 Tenemos 39 cadenas De ceros: 19 De unos: 20 Cadenas de longitud 1: De ceros: 11 de 19 (>= 50%) De unos: 10 de 20 (>= 50%) Cadenas de longitud 2: De ceros: 3 de 19 (menos del 25%, ya no se cumple) De unos: 7 de 19 (mas del 25%) Bastaría trastocar un poco el array para que se cumpliese Sn=1000111010011010001100101100110101100011011000110100111010001011 Sn=1000111010011010001100101100110101100011011000110100111001001011 Sn=1000111010011010001100101010110101100011011000110100111001001011 Simplemente al transponer estos dos valores: Tendríamos: Cadenas de longitud 1: De ceros: 10 de 19 (>=50%) De unos: 10 de 20 (>= 50%) Cadenas de longitud 2: De ceros: 5 de 19 (>= 25%) De unos: 7 de 20 (>= 25%) Cadenas de longitud 3: De ceros: 4 de 19 (>= 12,5%) De unos: 2 de 20 (algo menos del 12,5%) Al final podríamos modificar un poco la ristra para que siguiese cumpliéndose la hipótesis. Importante si observamos los dos bits marcados en verde, solo existen cuatro posibilidades y en tres de ellas se rechazaría el postulado. Es decir en el 75% de los casos se rechaza. Puede comprobarse que se cumple este postulado mediante el test de series( de los dos bits), test de rachas y el test del póquer. junio de 2008 Página 42 de 54 Trabajo de investigación Trabajo de investigación I (Especialización Sistemas Distribuidos, Multimedia y Seguros) Aleatoriedad y pseudoaleatoriedad Autor: Eugenio Soler Galán Veamos el tercer postulado 3. La función de correlación C(t) tiene dos valores. Esto es, para algún valor K Puede comprobarse que se cumple este postulado mediante el test de autocorrelación. junio de 2008 Página 43 de 54 Aleatoriedad y pseudoaleatoriedad Trabajo de investigación Trabajo de investigación I Autor: Eugenio Soler Galán (Especialización Sistemas Distribuidos, Multimedia y Seguros) EL CAOS El caos aparece en situaciones muy dispares, en la frecuencia del goteo de un grifo, en el movimiento de los planetas, o inclusive, en el comportamiento de los consumidores. Un ejemplo clásico es el goteo de un grifo: si el caudal es muy pequeño las gotas caen de forma periódica. La frecuencia a la a que caen las gotas se dobla si abrimos un poco el grifo. Cuando lo abrimos más vuelve a doblarse hasta que llega un momento en el que las gotas caen de modo completamente caótico. Científicos de la UC Santa Cruz encontraron caos en el goteo del agua de un grifo. Tomando datos de un grifo que gotea y tomando datos de los periodos de tiempo, descubrieron que a cierta velocidad de flujo, el goteo no tenía lugar en tiempos iguales. Cuando realizaron los gráficos de los datos, descubrieron que el goteo en efecto seguía un patrón. http://www.sc.ehu.es/sbweb/fisica/oscilaciones/gota/gota.htm#Representación%20gráfica Dualidades básicas en las Matemáticas del Caos. junio de 2008 Determinismo Indeterminismo Certidumbre Incertidumbre Certeza Probabilidad Predecibilidad Impredecibilidad Orden Caos Continuidad Discontinuidad (catástrofe) Regularidad Irregularidad Periodicidad Aperiodicidad Linealidad No-linealidad Estabilidad Inestabilidad Equilibrio Desequilibrio Página 44 de 54 Aleatoriedad y pseudoaleatoriedad Trabajo de investigación Trabajo de investigación I Autor: Eugenio Soler Galán (Especialización Sistemas Distribuidos, Multimedia y Seguros) Estática Dinámica Insensibilidad a condiciones Sensibilidad a condiciones iniciales iniciales Cuantitativo Cualitativo Atractor simple Atractor extraño Geometría euclidiana Geometría fractal Uniformidad Turbulencia Permanente Disipativo Simplicidad Complejidad Información Entropía Reversibilidad Irreversibilidad Abstracción-formalismo Intuición geométrica Lineal simple Bifurcación Dinámica tradicional Sinergética junio de 2008 Página 45 de 54 Trabajo de investigación Trabajo de investigación I Aleatoriedad y pseudoaleatoriedad Autor: Eugenio Soler Galán (Especialización Sistemas Distribuidos, Multimedia y Seguros) CONCLUSIONES Existen diferentes tipos de generadores de secuencias de números aleatorios, los cuales pueden ser implementados por hardware o por software, con mejores o peores propiedades estadística, con mayor o menor dificultad a la hora de su implementación, con correlaciones más o menos altas entre los números generados en la secuencia. Además del hecho de que la secuencia de números generados es totalmente predecible, esto los hace ineficientes para la generación segura de bits aleatorios para propósitos de seguridad, no así para otro tipo de aplicaciones, por ejemplo en simulación. Que lo que en un momento dado puede ser seguro poco después puede dejar de serlo, así pasa por ejemplo con la longitud de las llaves que se usan en el sistema RSA, que han ido aumentado paulatinamente. Ya que tal y como podemos observar en la siguiente tabla según va aumentando la velocidad de proceso disminuye el tiempo necesario para probar todas esas llaves. Tamaño de Número de llaves la llave (bits) alternativas Tiempo necesario Tiempo necesarioTiempo necesario 106 μs 107 μs 109 μs 32 232 4,3 ms 0,43 ms 4,3 μs 56 256 20 horas 2 horas 72 segundos 128 2128 1019 años 1018 años 1016 años En definitiva a medida que van aumentado la velocidad de proceso y se usan técnicas de afinado que no usan todas las llaves es posible que lo que antes era casi imposible, se convierta en posible en poco segundos. Ya que hoy en días podemos poner a trabajar probando claves a miles de ordenadores con una potencia que no parecía imaginable hace 20 ó 30 años. Para generar la semilla de un dispositivo pseudoaleatorio basado en software se deben de usar eventos que estén muy alejados de la intervención humana, por ejemplo, el sistema de reloj, el teclado, el ratón, el contenido de buffers de entrada y salida, o una combinación de los anteriores. junio de 2008 Página 46 de 54 Trabajo de investigación Trabajo de investigación I (Especialización Sistemas Distribuidos, Multimedia y Seguros) Aleatoriedad y pseudoaleatoriedad Autor: Eugenio Soler Galán Para generar la cadena pseudoaleatoria se debe de hacer uso de funciones de un solo sentido como las funciones Hash: MD5, SHA-1,..., la función RSA, la función logaritmo en curvas elípticas, etc. Para probar que un dispositivo genera números pseudoaleatorios, éste debe de pasar una prueba que detecte las propiedades más conocidas de no aleatoriedad, por ejemplo la prueba de Maurer. Cualquier generador de números aleatorios tendrá que superar los test estadísticos básicos. Considerando, por tanto, que dicho algoritmo es válido para generar secuencias que se pueden tomar como realmente aleatorias. O al menos que supera un porcentaje fijo de test, aunque haya alguno que no pase. Si analizamos un generador con un comportamiento determinista, en el que no ha intervenido ningún factor externo (pulsación aleatoria de teclado y cadencia aleatoria de pulsación) de modo que toda la secuencia generada ha dependido únicamente de un valor inicial. Podría darse el caso de que utilizásemos el test universal de Maurer, y que los resultados obtenidos mediante ese test fuesen aparentemente buenos. Pero sólo aparentemente, puesto que la semilla inicial aporta muy poca entropía a la serie total. junio de 2008 Página 47 de 54 Aleatoriedad y pseudoaleatoriedad Trabajo de investigación Trabajo de investigación I Autor: Eugenio Soler Galán (Especialización Sistemas Distribuidos, Multimedia y Seguros) TABLA PERCENTILES TEST DE RACHAS Percentiles de la distribución del número de rachas (r) en la hipótesis de independencia. El número de signos más –igual al de signos menos- es k. Para k>50 utilizar la aproximación siguiente: el número de rachas es normal con parámetros: μ=k+1 y σ2=k(k-1)/(2k-1) k 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 junio de 2008 r0,005 r0,01 r0,025 r0,05 2 3 3 4 5 5 6 7 7 8 9 10 10 11 12 13 14 14 15 16 17 18 18 19 20 21 22 23 23 24 25 26 27 28 2 2 3 4 4 5 6 7 7 8 9 10 10 11 12 13 14 14 15 16 17 18 19 19 20 21 22 23 24 24 25 26 27 28 29 2 3 3 4 5 6 7 7 8 9 10 11 11 12 13 14 15 16 16 17 18 19 20 21 22 22 23 24 25 26 27 28 29 30 30 2 3 3 4 5 6 6 7 8 9 10 11 11 12 13 14 15 16 17 17 18 19 20 21 22 23 24 25 25 26 27 28 29 30 31 32 r0,95 4 6 7 8 10 11 12 13 15 16 17 18 19 20 22 23 24 25 26 27 28 30 31 32 33 34 35 36 37 38 40 41 42 43 44 45 46 47 r0,975 4 6 8 9 10 12 13 14 15 16 18 19 20 21 22 24 25 26 27 28 29 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 49 r0,990 4 6 8 9 11 12 13 15 16 17 18 20 21 22 23 25 26 27 28 29 31 32 33 34 35 36 38 39 40 41 42 43 45 46 47 49 49 50 r0,995 4 6 8 10 11 12 14 15 16 18 19 20 22 23 24 25 26 28 29 30 31 33 34 35 36 37 39 40 41 42 43 44 46 47 48 50 50 51 Página 48 de 54 Aleatoriedad y pseudoaleatoriedad Trabajo de investigación Trabajo de investigación I Autor: Eugenio Soler Galán (Especialización Sistemas Distribuidos, Multimedia y Seguros) 40 41 42 43 44 45 46 47 48 49 29 29 30 31 32 33 34 35 35 36 30 31 31 32 33 34 35 36 37 38 31 32 33 34 35 36 37 38 38 39 33 34 35 35 36 37 38 39 40 41 48 49 50 52 53 54 55 56 57 58 50 51 52 53 54 55 56 57 59 60 51 52 54 55 56 57 58 59 60 61 52 54 55 56 57 58 59 60 62 63 50 37 38 40 42 59 61 63 64 junio de 2008 Página 49 de 54 Aleatoriedad y pseudoaleatoriedad Trabajo de investigación Trabajo de investigación I Autor: Eugenio Soler Galán (Especialización Sistemas Distribuidos, Multimedia y Seguros) TABLA DE LA NORMAL Tabla de la distribución normal tipificada N(0,1) Proporciona el área a la izquierda para valores positivos de z z 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 4.0 4.1 4.2 4.3 4.4 0'00 0.50000 0.53983 0.57926 0.61791 0.65542 0.69146 0.72575 0.75804 0.78814 0.81594 0.84134 0.86433 0.88493 0.90320 0.91924 0.93319 0.94520 0.95543 0.96407 0.97128 0.97725 0.98214 0.98610 0.98928 0.99180 0.99379 0.99534 0.99653 0.99744 0.99813 0.99865 0.99903 0.99931 0.99952 0.99966 0.99977 0.99984 0.99989 0.99993 0.99995 0.99997 0.99998 0.99999 0.99999 0.99999 0'01 0.50399 0.54380 0.58317 0.62172 0.65910 0.69497 0.72907 0.76115 0.79103 0.81859 0.84375 0.86650 0.88686 0.90490 0.92073 0.93448 0.94630 0.95637 0.96485 0.97193 0.97778 0.98257 0.98645 0.98956 0.99202 0.99396 0.99547 0.99664 0.99752 0.99819 0.99869 0.99906 0.99934 0.99953 0.99968 0.99978 0.99985 0.99990 0.99993 0.99995 0.99997 0.99998 0.99999 0.99999 0.99999 0'02 0.50798 0.54776 0.58706 0.62552 0.66276 0.69847 0.73237 0.76424 0.79389 0.82121 0.84614 0.86864 0.88877 0.90658 0.92220 0.93574 0.94738 0.95728 0.96562 0.97257 0.97831 0.98300 0.98679 0.98983 0.99224 0.99413 0.99560 0.99674 0.99760 0.99825 0.99874 0.99910 0.99936 0.99955 0.99969 0.99978 0.99985 0.99990 0.99993 0.99996 0.99997 0.99998 0.99999 0.99999 1.00000 0'03 0.51197 0.55172 0.59095 0.62930 0.66640 0.70194 0.73565 0.76730 0.79673 0.82381 0.84849 0.87076 0.89065 0.90824 0.92364 0.93699 0.94845 0.95818 0.96637 0.97320 0.97882 0.98341 0.98713 0.99010 0.99245 0.99430 0.99573 0.99683 0.99767 0.99831 0.99878 0.99913 0.99938 0.99957 0.99970 0.99979 0.99986 0.99990 0.99994 0.99996 0.99997 0.99998 0.99999 0.99999 1.00000 0'04 0.51595 0.55567 0.59483 0.63307 0.67003 0.70540 0.73891 0.77035 0.79955 0.82639 0.85083 0.87286 0.89251 0.90988 0.92507 0.93822 0.94950 0.95907 0.96712 0.97381 0.97932 0.98382 0.98745 0.99036 0.99266 0.99446 0.99585 0.99693 0.99774 0.99836 0.99882 0.99916 0.99940 0.99958 0.99971 0.99980 0.99986 0.99991 0.99994 0.99996 0.99997 0.99998 0.99999 0.99999 1.00000 0'05 0.51994 0.55962 0.59871 0.63683 0.67364 0.70884 0.74215 0.77337 0.80234 0.82894 0.85314 0.87493 0.89435 0.91149 0.92647 0.93943 0.95053 0.95994 0.96784 0.97441 0.97982 0.98422 0.98778 0.99061 0.99286 0.99461 0.99598 0.99702 0.99781 0.99841 0.99886 0.99918 0.99942 0.99960 0.99972 0.99981 0.99987 0.99991 0.99994 0.99996 0.99997 0.99998 0.99999 0.99999 1.00000 0'06 0.52392 0.56356 0.60257 0.64058 0.67724 0.71226 0.74537 0.77637 0.80511 0.83147 0.85543 0.87698 0.89617 0.91309 0.92786 0.94062 0.95154 0.96080 0.96856 0.97500 0.98030 0.98461 0.98809 0.99086 0.99305 0.99477 0.99609 0.99711 0.99788 0.99846 0.99889 0.99921 0.99944 0.99961 0.99973 0.99981 0.99987 0.99991 0.99994 0.99996 0.99998 0.99998 0.99999 0.99999 1.00000 0'07 0.52790 0.56749 0.60642 0.64431 0.68082 0.71566 0.74857 0.77935 0.80785 0.83398 0.85769 0.87900 0.89796 0.91466 0.92922 0.94179 0.95254 0.96164 0.96926 0.97558 0.98077 0.98500 0.98840 0.99111 0.99324 0.99492 0.99621 0.99720 0.99795 0.99851 0.99893 0.99924 0.99946 0.99962 0.99974 0.99982 0.99988 0.99992 0.99995 0.99996 0.99998 0.99998 0.99999 0.99999 1.00000 0'08 0.53188 0.57142 0.61026 0.64803 0.68439 0.71904 0.75175 0.78230 0.81057 0.83646 0.85993 0.88100 0.89973 0.91621 0.93056 0.94295 0.95352 0.96246 0.96995 0.97615 0.98124 0.98537 0.98870 0.99134 0.99343 0.99506 0.99632 0.99728 0.99801 0.99856 0.99897 0.99926 0.99948 0.99964 0.99975 0.99983 0.99988 0.99992 0.99995 0.99997 0.99998 0.99999 0.99999 0.99999 1.00000 0'09 0.53586 0.57535 0.61409 0.65173 0.68793 0.72240 0.75490 0.78524 0.81327 0.83891 0.86214 0.88298 0.90147 0.91774 0.93189 0.94408 0.95449 0.96327 0.97062 0.97670 0.98169 0.98574 0.98899 0.99158 0.99361 0.99520 0.99643 0.99736 0.99807 0.99861 0.99900 0.99929 0.99950 0.99965 0.99976 0.99983 0.99989 0.99992 0.99995 0.99997 0.99998 0.99999 0.99999 0.99999 1.00000 Tabla Generada Por D. Francisco Álvarez González ((Universidad de Cádiz 1996) junio de 2008 Página 50 de 54 Trabajo de investigación Trabajo de investigación I (Especialización Sistemas Distribuidos, Multimedia y Seguros) Aleatoriedad y pseudoaleatoriedad Autor: Eugenio Soler Galán ALGORITMO DE UN GENERADOR ALEATORIO POR ENTRADA DE TECLADO VARIABLES: unsigned long t_1,t_2,rot unsigned short aleat unsigned char letra VALORES INICIALES: t_1 = times(NULL); REPETIR MIENTRAS NO SE PULSE LA TECLA ESCAPE: 1. Esperar pulsación de una tecla por parte del usuario. Cuando se produzca: 1.1. letra igual al carácter introducido por teclado. SI letra = 27 IR A FIN (Tecla ESCAPE) 1.2. T_2 = times(NULL); 2. Ajustar intervalos de tiempo... 2.1. dift = t_2 – t_1; 2.2. T_1 = t_2; 3. Primera rotación (a izquierda): sobre el valor t_2. La rotación depende del intervalo de tiempo transcurrido (dift) y del valor previo de la variable aleat. 3.1. dift *= dift; 3.2. SI aleat DISTINTO DE 0, ENTONCES dift *= aleat; 3.3. rot = dift % 31; 3.4. t_2 *= t_2; 3.5. t_2 = (t_2 >> rot | t_2 << (32 - rot)); (t_2 variable de 32 bits). 4. Primera operación XOR sobre el valor aleatorio a generar. 4.1. aleat ^= t_2; Se emplean los 16 bits menos significativos de la variable t_2. La variable aleat tendrá el valor final del proceso en la iteración anterior o un valor inicial cualquiera si estamos en la primera iteración. 5. Segunda rotación (a derecha): sobre el valor aleat. La rotación depende del valor ASCII de la tecla pulsada y del actual valor aleat. 5.1. SI aleat DISTINTO DE 0, ENTONCES letra *= aleat; 5.2. rot = (unsigned long)letra % 13; 5.3. aleat = (aleat << rot | aleat >> (16 – rot)) 6. Guardar el valor introducido en un vector de valores aleatorios. FIN Algoritmo de un generador aleatorio por entrada de teclado. Diseño de un nuevo generador de secuencias de bits aleatorios por entrada de teclado de Pedro María Alcover Garau, José M. García Carrasco, y Luís Hernández Encinas. junio de 2008 Página 51 de 54 Trabajo de investigación Trabajo de investigación I Aleatoriedad y pseudoaleatoriedad (Especialización Sistemas Distribuidos, Multimedia y Seguros) Autor: Eugenio Soler Galán BIBLIOGRAFÍA Daniel Peña Sánchez de Rivera. Estadística Modelos y métodos. Tomo 1: Fundamentos. Alianza Universidad Textos. Páginas 521 y 522. Paper: Pruebas de Aleatoriedad para Secuencias Pseudo-Aleatorias. María Aurora Molina Vilchis, Ramón Silva Ortigoza y Eduardo Vega Alvarado. CIDETEC-IPN. Departamento de Postgrado. Unidad Adolfo López Mateos. Del. Gustavo A. Madero. El Sistema RSA. José de Jesús Ángel ([email protected]) Ensayos volumen XXIII, núm. 1, mayo 2004, pp.31-60 “Caos en el mercado cambiario mexicano. Aplicación de la teoría del caos en los tipos de cambio”. Julián Ibarra Onofre. Criptografía y Seguridad en Computadores. Segunda Edición. Septiembre de 1999. Manuel José Lucena López. Departamento de Informática. Escuela Politécnica Superior Universidad de Jaén. Paper: Diseño de un nuevo generador de secuencias de bits aleatorios por entrada de teclado. Pedro María Alcover Garau(Dpto. de Tecnología de la Información y las Comunicaciones, Universidad Politécnica de Cartagena), José M. García Carrasco(Dpto. de Ingeniería y Tecnología de Computadores, Universidad de Murcia), Luís Hernández Encinas(Dpto. de Tratamiento de la Información y Codificación, Consejo Superior de Investigaciones Científicas) Paper: USO DE LA SIMULACIÓN EN CARTOGRAFÍA: CONCEPTOS BÁSICOS Y APLICACIONES. Ariza, F.J., Pinilla, C.; López, R., Caridad, J.M. Grupo de Investigación en Ingeniería Cartográfica Universidad de Jaén - España LUGARES WEB http://es.wikipedia.org/wiki/Azar http://www.virtual.unal.edu.co/cursos/sedes/manizales/4060015/Lecciones/Capitulo%20VI/metodos.htm http://www.lawebdefisica.com/apuntsmat/num_aleatorios/ http://jungla.dit.upm.es/~trdt/apuntes/t1.html TABLAS Percentiles test de rachas. Daniel Peña Sánchez de Rivera. Universidad Carlos III de Madrid. junio de 2008 Página 52 de 54 Trabajo de investigación Trabajo de investigación I (Especialización Sistemas Distribuidos, Multimedia y Seguros) Aleatoriedad y pseudoaleatoriedad Autor: Eugenio Soler Galán N(0,1) Tabla Generada Por D. Francisco Álvarez González ((Universidad de Cádiz 1996) junio de 2008 Página 53 de 54 Aleatoriedad y pseudoaleatoriedad Trabajo de investigación Trabajo de investigación I Autor: Eugenio Soler Galán (Especialización Sistemas Distribuidos, Multimedia y Seguros) LA ENTROPÍA DE UNA VARIABLE ALEATORIA ϑ La entropía es una medida de información. Veámoslo mediante el siguiente ejemplo: Dada una fuente de información, F, que nos va diciendo quien ha ganado un partido de fútbol, si el equipo A, con una probabilidad de 3/4, o el B, con probabilidad 1/4, de tal manera que la situación que tenemos es la siguiente: A la hora de transmitir esta información a través del canal podemos hacerlo de muchas maneras. Supongamos que mandamos los resultados de tres partidos a la vez dando lugar a una codificación como la que sigue: DATO PROB. CÓDIGO LONGITUD AAA 27/64 0 1 ABA 9/64 100 3 BAA 9/64 101 3 AAB 9/64 110 3 BBA 3/64 11100 5 BAB 3/64 11101 5 ABB 3/64 11110 5 BBB 1/64 11111 5 Observando nuestro código vemos que mandamos una mayor cantidad de bits en aquellas cadenas que tienen menor probabilidad de ocurrir. La longitud media del código es: junio de 2008 Página 54 de 54 Trabajo de investigación Trabajo de investigación I Aleatoriedad y pseudoaleatoriedad Autor: Eugenio Soler Galán (Especialización Sistemas Distribuidos, Multimedia y Seguros) L = 27/64·1 + 9/64·3 + 9/64·3 +9/64·3 + 3/64·5 + 3/64·5 + 3/64·5 +1/64 = 3.469bits De acuerdo con este nuevo código ahora lo que tenemos es p(0) = 0.36 y p(1) = 0.63. Vemos que tras la codificación binaria las probabilidades de 0 y 1 están más balanceadas que las A y B; lo perfecto sería que lo estuviesen totalmente. Ya comprendido este ejemplo pasemos a definir entropía: Definición: Dada una variable aleatoria discreta X que tiene una determinada distribución de probabilidades, p(x), entropía de X es: Así, la entropía es una medida de la información que recibimos cuando nos mandan un dato. La unidad en que se mide depende de la base del logaritmo utilizada. Si es dicha base es 2, entonces medimos en BITS o si es el número "e", en NATS, etc. De acuerdo con el ejemplo anterior, la medida de la entropía de la fuente sería: Nota: El resultado esperado más probable es el que, obviamente, menos contribuye al valor de la entropía; luego esta puede entenderse como una ponderación de las contribuciones de cada suceso. Unidades de la Entropía H(X) junio de 2008 BASE DEL LOGARITMO UNIDAD Decimal (10) Dits Página 55 de 55 Trabajo de investigación Trabajo de investigación I Aleatoriedad y pseudoaleatoriedad Autor: Eugenio Soler Galán (Especialización Sistemas Distribuidos, Multimedia y Seguros) Binario (2) Bits Número e Nats Propiedades de la Entropía H(x) 1. H(X) 0 Demostración: 0 p(x) 1 implica que 2. Si F es una fuente binaria tal que p(0)=p y p(1)=1-p=q: A esta H(X) podemos llamarla H(p) o también H(p,q). Su representación gráfica será: Observando la gráfica nos damos cuenta de algunas propiedades de la entropía. Vemos que H(X) es cero cuando p=0 ó p=1 porque entonces la variable deja de ser aleatoria, ya que no hay incertidumbre sobre el valor que tomará X. Por otra parte la incertidumbre es máxima cuando p=1/2, lo que consecuentemente coincide con el máximo de H(X). junio de 2008 Página 56 de 56