Cuando uno investiga un poco sobre criptografía, se da cuenta de que una de las cosas que hacen falta para que tu sistema de encriptado (criptosistema) sea seguro, es poder generar valores aleatorios.Esto para un programador no supone ningún problema, salvo que debe tener en cuenta algunos detalles.
Por ejemplo, todos los que programen en C/C++ conoceran la función "rand", que genera un número aleatorio a partir de una semilla. Pasemos a describir qué es lo que hace esta función en concreto:
- En la primera llamada a rand se le pasa una semilla X0 y devuelve un X1 = (a * X0 + b) mod c.
- Para la siguiente llamada a rand, cogería X1 como semilla para calcular X2.
- Y así hasta que nosotros queramos.
Pero esta función tiene un problema, si en algún momento de Xi tienen el mismo valor, se repetiría la cadena. Es decir, podría darse el caso en el que todos los Xi valiesen lo mismo...¡Qué aleatorio!. Por ejemplo, si cogiéramos (a,b,c,X0) = (2,3,7,4) haría lo siguiente:
- X1 = (2 * X0 + 3) mod 7 = (2 * 4 + 3) mod 7 = 11 mod 7 = 4
- X2 = (2 * X1 + 3) mod 7 = (2 * 4 + 3) mod 7 = 11 mod 7 = 4
- ... (así hasta el infinito y mas allá...)
Con esto conseguiríamos una sucesión de números "aleatorios": [4,4,...,4]. Todos iguales.
Esto es un caso extremo, pero sirve para demostrar que esa función no produce números precisamente aleatorios, utilizan un patrón predecible.
Pero no hay que desesperar, existen alternativas con las que podemos conseguir unas sucesiones de números aleatorios criptográficamente aceptables, es decir, que aunque no sean totalmente aleatorios, se acercan lo suficiente para considerarlos como tal. Estos generadores suelen venir implementados en las librerías de desarrollo de los distintos lenguajes de programación.
Links relacionados:
- Pseudo-aleatorios vs Alatorios:
Muestra dos imágenes que muestran el efecto de no disponer de números verdaderamente aleatorios.
- Un libro muy curioso:
Un libro en el que encontramos un millon de dígitos aleatorios.
miércoles, 11 de marzo de 2009
[Criptografia] Números Aleatorios
miércoles, 4 de marzo de 2009
[Ing. Informática] Un paso adelante en la regulación de las Ingenierías Informáticas
Es bueno saber que las manifestaciones sirvieron para algo, aunque esto sea sólo un pequeño avance. Ya que aún queda mucho por andar para llegar a nuestros objetivos.
martes, 3 de marzo de 2009
[Informática] Hasta donde es beneficioso AdSense
Hoy, gracias a una conferencia que dieron en la escuela, me he enterado de un fenómeno cuanto menos original. Se trata de un grupo de... frikis ¿porque no?, que han creado el proyecto GWEI (Google Will Eat Itself). Sí, tal como se lee: "Google se comerá a sí mismo".
Y es que el proyecto consiste en atraer a mucha gente, para que pulsen en los anuncios de AdSense que tienen en su página. Con esto pretenden conseguir dinero, hasta ahí todo claro, pero lo curioso del tema es el fin que le quieren dar a dicho dinero: Comprar acciones de Google.
Definitivamente, no hay que ser muy listo para darse cuenta del truco pero... cuántos de vosotros no os habéis preguntado "¿Por qué no se me habrá ocurrido antes?". Pues bueno, a aquellos que piensen seguirle los pasos, decirles que Google los ha pillado y está emprendiendo acciones legales contra ellos. No sé muy bien como va eso del juicio, pero siendo Google vs "2-frikis-con-ganas-de-dar-la-lata", creo que se intuye quién va a ser el ganador.
Bueno, el caso es al menos digno de mención, ya que le han echado agallas, originalidad y mucho humor al asunto (y cara dura, claro).