jueves, 22 de enero de 2015

Mientras encripatmos a alguien, hablemos de cifrado y así.


Muchas veces confundimos el codificar, con cifrar, con encriptar ( No, nos negamos a meter a alguien en una cripta.) que no, no es encriptar, por que cada que dices encriptar, dios mata un gatito, y los gatitos son como las direcciones IPv4, ya no hay mas.

Pero hablemos de conceptos.

¿Qué es codificar?

En términos muy simples es expresar una misma información de una forma distinta, es decir, transformamos nuestros símbolos (Caracteres) en otro sistema de representación, por eso, en realidad no estas ocultando o dificultando el acceso a la información, y el ejemplo mas común es el lenguaje.

Supongamos que tenemos un mensaje: "Hola, mundo"

Es simple, es burdo, pero es lindo, ahora tenemos el mismo mensaje en ingles: "Hello world"

Foneticamente y morfologicamente son distintos, pero el significado es el mismo, simplemente codificamos el mensaje, y por eso se puede leer de otra manera, en este caso, en ingles.

Y bien, ¿Qué es cifrar?

Es aplicarle a un mensaje un algoritmo y una clave, y esto nos da como resultado, un mensaje cifrado, vulgarmente conocido como criptograma.

Pero cuando hablamos de algoritmo, hablamos de un proceso que debe ser siempre unívoca, lo que significa que una entrada siempre provoca una misma salida o resultado, pero como no queremos eso, tenemos que variar la entrada y para ello usamos una clave.

Supongamos que yo tengo un secreto (Una clave) y utilizo este secreto para cifrar un mensaje. Si yo quiero compartir este mensaje con alguien mas, tengo que compartir mi secreto con esta otra persona, y luego esta persona aplicar mi secreto para poder leer el mensaje. Por lo que podríamos decir que, nuestro mensaje es tan seguro como mantengamos oculto nuestro secreto. Esta técnica se le conoce como criptografia simétrica.

De aquí nace otro concepto interesante en los años 70's que pretendió arreglar el inconveniente del secreto pre-compartido con un juego de llaves, donde una se una en un sentido y la otra, en otra (Por que, obvio, no creo que sean para lo mismo, no tendría caso). Para este punto, una de ellas es la llave privada, que nadie debe tener, y la otra es una publica, que puedo compartirla con quien yo quiera. Y a esto se le llamo criptigrafía asimétrica.

Cuando creamos estas llaves con PGP o GPG, ponerle una frase de paso o clave a la llave privada, es obligatorio (O muy recomendado, de verdad, tienen que ponerle una clave, ya les diré por que). Pero algunas veces, cuando usamos RSA o SSL no lo hacemos por que suponemos que están en un sitio seguro y... nadie entra a sitios seguros a robar información, o ¿si? El caso es que, supongamos que nuestra llave privada cae en otras manos que no sean las nuestras y no cuenta con una frase de paso (clave), pues esta persona podrá leer nuestros mensajes cifrados y saber donde ocultamos las galletas de chispas de chocolate que no queremos compartir con el resto de la humanidad.

Gracias a la criptografia asimétrica, hoy podemos hace una firma. pero pongamos en contexto algo simple del funcionamientos de las llaves. Y es que si bien, todo mundo (o los que queramos) tiene nuestra llave publica, el proceso de cifrado es a la llave publica y el proceso de decifrado es por lo tanto, a la llave privada, pero si ¿esto lo hacemos al revés? Aplicando el proceso de cifrado a la privada y el decifrado a la publica. Y si, es aquí donde entra la tan conocida firma digital o electrónica, es decir, solo tu, que tienes tu llave privada puedes generar una firma valida y cualquiera con tu llave publica verificar la integridad, la autenticidad y el no repudio de la información entregada, por lo que luego no puedes venir a decirle que no haz escrito el correo mandado. ¿Pero como de que no? Tengo la prueba matemática para demostrarlo!

Una cadena es tan fuerte como el mas débil de sus eslabones.

Si bien, el cifrado es algo (mucho) útil a la hora de mantener segura nuestra información y poder asegurar la veracidad de la información que se maneja, de nada sirve que tengamos una llave de 4096 bits si para comparar las firmas digitales lo hacemos por medio de la comparación de cadenas: Nintento, nunca cambies, por favor.

Existe desde hace unos cuantos meses o miles de años, desde los algoritmos clásicos y de eso, hace ya mucho los ataques criptograficos o el criptoanalisis, que consiste en descubrir debilidades en los algoritmos criptograficos que nos permitan obtener pistas para decrifrar las claves.

Ahora, supongamos, mi querido lector, que tenemos el algoritmo RSA que se basa en el problema matemático de la factorización de números enteros, en el cual usaremos nuestra computadora cuántica que funciona con aire y que compramos en china a un buen precio para tratar de romper un mensaje cifrado. Esto es un coste exponencial, que en la teoría de la complejidad, si nosotros aumentamos un poco la complejidad de la frase de paso (clave), poder romperla se vuelve un lio  hasta el punto que no se podría... o si, pero nos llevaría mas tiempo del que lleva el universo siendo universo, así que no esta nada mal desde ese punto de vista.

Así que, la criptografia no nos hace la vida mas fácil, pero si mas segura. Tiene un costo, pero tiene beneficios que cada uno de ustedes le dará el peso que crea necesario.

Con amor: Uetiko