Criptografía en la vida cotidiana.

La mayoría de las personas piensa que los esquemas de cifrado, de encripción, son parte de las actividades que tienen que hacer diversas empresas como los bancos, las ventas en tiendas electrónicas e incluso, en la telefonía celular. Muchos esquemas de cifrado usan la generación de números al azar, los cuales se usan muchas veces para asegurarse que la transacción comercial es válida, por ejemplo, y que puede verse con estos dispositivos que los bancos dan a sus clientes para entrar a sus sistemas y que evitan el uso de contraseñas estáticas.

El problema con los números al azar, aleatorios, es que en la computadora requieren ser simulados y por eso se llaman pseudo-aleatorios. Dada una semilla en particular, un programa puede generar una secuencia de números que parezcan al azar, pero siempre esa semilla generará los mismos números en el mismo orden. Hay muchos algoritmos para esto y desde luego, hay hardware que sí genera números al azar, usando algunas leyes de la física que inciden en la electrónica moderna.

De todas maneras el problema de generar números aleatorios sigue y en general se estima que en muchos casos la solución usando números pseudo-azarosos es suficientemente buena y segura. La dificultad, sin embargo, es que pequeños errores de programación pueden hacer estos sistemas vulnerables y muchas veces es difícil localizarlos.

Por ejemplo, si uno se conecta a tiendas como Amazon, uno da su tarjeta de crédito y uno espera que la conexión sea segura y así no se vaya a robar alguien mis datos para usarlos de mala manera. Todos los sistemas con conexiones seguras usan criptografía con llaves pseudo-aleatorias y por ende, ya hay una debilidad susceptible de volver al software vulnerable pues como ya dijimos, la misma semilla siempre genera los mismos números y en el mismo orden. Esto podría llevar a ataques y a fugas de información.

Pero si alguien cree que los problemas solamente son para instituciones financieras, considérese, las máquinas que permiten votar en los Estados Unidos. Andrew Appel, profesor de ciencias de la computación en Princeton, ha trabajado extensivamente en esta dificultad y su última investigación se enfoca sobre la verificación formal, es decir, un conjunto de herramientas que “especifican qué es lo que deberían hacer los programas o bien, para construir software que se sujeten a estas especificaciones, así para poder probar y verificar que los programas se comportan como se ha especificado previamente”.




Comentarios