Ordenadores y aleatoria : ¿existe el azar?

Ordenadores y aleatoria : ¿existe el azar?


Los números aleatorios son cruciales en numerosos ámbitos de la informática, como para simular juegos de dinero pero también para la seguridad y el cifrado. ¿Cómo pedir a ordenadores, máquinas deterministas por naturaleza, generar números aleatorios? Elementos de respuesta…

 

La pregunta puede parecer sorprendente y no tan complicada: ¿cómo un ordenador puede generar un número aleatorio? En realidad, es una pregunta más espinosa de lo que puede parecer y una tarea finalmente muy complicada. Los ejemplos de procesos aleatorios en el mundo que nos rodea no faltan: el lanzamiento de dado, de monedas, o incluso la desintegración de elementos radioactivos para los más científicos de nosotros.

 

Estos procesos aleatorios fueron usados desde tiempos inmemoriales, el objetivo es el de dejar una decisión decidirse por suerte. Si el aleatorio, o noción de suerte, es bastante simple de concebir para el ser humano, sigue siendo un concepto muy complicado de pedir a un ordenador. Por naturaleza, los ordenadores son máquinas deterministas: por una misma pregunta, siempre obtendrás la misma respuesta. Los ordenadores incluso fueron pensados específicamente para funcionar así. El aleatorio es un parámetro que se quiere eliminar de los procesos algorítmicos. Entonces, ¿cómo se pide a un ordenador producir un número aleatorio?

 


De la utilidad de los números aleatorios


Antes de preguntarse cómo hacer una primera pregunta podría ser: ¿Por qué queremos preguntarle a un ordenador generar números aleatorios? Pues bien, para simular procesos aleatorios como lanzamientos de dados, sorteo, o juegos de cartas, para simular juegos de dinero por ejemplo. También podemos hablar de la simulación de acontecimientos en los videojuegos o en el ámbito de la criptografía, para la codificación de contraseñas y la protección de datos. Los ejemplos de uso de números aleatorios son entonces numerosos y pueden cubrir aspectos cruciales cuando la seguridad o el dinero entran en juego.

 


La aleatoria y la informática


Existen dos tipos de aleatoria en informática, lo que llamamos el pseudoaleatorio y la « verdadera » aleatoria. Primero, el pseudoaleatorio representa todos los procesos algorítmicos que permiten generar aleatoriamente números. Lo que hay que tener en mente es que es imposible pedirle a una máquina determinista producir aleatoriamente un número. A partir de este hecho, el principio generalmente empleado es el siguiente: un valor de inicio se elige, llamado valor raíz. Luego este valor va a ser modificado con la ayuda de un algoritmo de transformación. Este algoritmo es un proceso que reproduce la aleatoria, en todo caso en teoría. Es una secuencia de operación que debe ser difícil de comprender al mirar tan solo los números producidos. El proceso de transformación del algoritmo debe entonces ser  complejo y no dar la sensación de seguir un procedimiento evidente desde fuera. Tan complejo como sea, al ser constantemente repetido este proceso y al seguir una arquitectura predefinida, los números producidos no son verdaderamente aleatorios.

 

Entonces, estos procesos algorítmicos no son una « verdadera » aleatoria, que sin embargo existe en informática. Esta verdadera aleatoria función con el apoyo de elementos físicos externos al ordenador, que ellos si son realmente aleatorios. Un ejemplo clásico es basarse en la desintegración radio-activa de un átomo. Este proceso es aleatorio y según las teorías cuánticas, es imposible predecirlo. Los números generados a partir de este proceso son entonces totalmente imprevisibles y no siguen ningún paradigma- un modelo simplificado-predefinido. En práctica sin embargo, si queremos que un ordenador genere números aleatorios, este no puede siempre referirse a un procedimiento aleatorio como la desintegración de elementos radioactivos, es entonces necesario encontrar otros procesos aleatorios asequibles.

Un proceso habitual de los ordenadores es esperar algunos comportamientos del utilizador, como por ejemplo el momento exacto cuando va a apretar una de las teclas del teclado. El ser humano al no ser una máquina, es imprevisible por naturaleza.

 


No la misma aleatoria según el uso


Es evidente que la importancia de la tarea que cumplir va a condicionar la elección del tipo de aleatoria establecida. El pseudoaleatorio, aunque menos performante y útil que la verdadera aleatoria, no es por tanto inutil. En el contexto de un videojuego por ejemplo, no es necesariamente muy grave que el proceso de generación de distribución de cartas del crupier contra el cual estás jugando sea realmente aleatorio. Si quieres elegir una muestra representativa y equitativamente repartida en un juego de datos, un algoritmo pseudoaleatorio puede ser suficiente también. 

No obstante, en el caso de un juego de apuesta o de dinero, donde los usuarios arriesgan pérdidas o ganancias, es necesario que el proceso de generación del número sea, él, perfectamente aleatorio para que no pueda ser predecido. Al igual en criptografía, si el proceso de codificación de las contraseñas es demasiado fácil de adivinar, será posible encontrar las contraseñas al tener acceso a suficientes ejemplos. Es entonces claro que hay que calibrar la calidad del procesos de generación en función del uso que se le hace: cuánto más crítico es el proceso, más debe ser performante el proceso de generación de números aleatorios.

 


La generación aleatoria y la controversia


Con el fin de permitir a nuestros ordenadores tener acceso a procesos aleatorios para sus tareas habituales, los constructores de procesadores como Intel proponen generadores de números aleatorios basados en su material. El procesador, un componente informático a menudo considerado como el cerebro del ordenador, proporciona números aleatorios al sistema de explotación, y esto de manera automatizada. Los usuarios no controlan para nada este proceso que comúnmente se llama una « caja negra». Una de las controversias actuales es que si ciertas organizaciones como la NSA (una organización de vigilancia americana) tienen acceso a un fallo en este proceso,  a menudo llamado « backdoor »  en el ámbito, esta organización sería capaz de romper las llaves de codificación - cifrado-  proporcionadas por este método. Estos fallos pueden evidentemente ser deliberadamente insertados por los creadores del proceso. Así, esto daría acceso a datos potencialmente sensibles y supuestamente en seguridad con personas que no deben tener acceso a ellos. Este aspecto es actualmente un asunto de crítica, y muchos cuestionamientos están planteados en lo que concierne a la vida privada de los usuarios, el control de los gobiernos en las poblaciones y la vigilancia de masas. Una parte de la comunidad informática no considera estos sistemas como fiables y trabajan en otros métodos que no dependen de elementos exteriores desarrollados y controlados por empresas que pueden tener intereses divergentes con el interés general. Así, uno de los grandes desafíos de los próximos años de la informática libre es extraerse de estos procedimientos que potencialmente pueden perjudicar a los usuarios.

 






Fuentes:


1 - https://www.sicara.ai/blog/2019-01-28-how-computer-generate-random-numbers

2 - https://www.howtogeek.com/183051/htg-explains-how-computers-generate-random-numbers/

3 - https://www.hypr.com/random-number-generator/

4 - https://engineering.mit.edu/engage/ask-an-engineer/can-a-computer-generate-a-truly-random-number/


Comentario ( 0 ) :
4 m
20 de diciembre de 2021
Autores

Suscríbete a nuestro boletín

Publicamos contenido regularmente, manténgase actualizado suscribiéndose a nuestro boletín.