18 junio 2008

Enigma, Julio César y RSA

Hasta los los años 80, los métodos para encriptar datos estaban clasificadas al mismo nivel que los secretos atómicos y cualquiera que los divulgara en USA se arriesgaba a ir con cadena perpetua por delito contra la seguridad nacional. Creo que fue a fines de los 70 cuando se inventó el RSA que cambió completamente el concepto, eliminando la necesidad del secreto para encriptar los datos.

Siempre me ha gustado la historia de la criptografía, la necesidad de ocultar información es antiquísima desde los primitivos métodos de sustitución usados por Julio Cesar hasta los actuales, basados en problemas matemáticos que todavía no se han resuelto.

En la segunda guerra mundial, los barcos y submarinos necesitaban comunicarse por radio, los alemanes usaron la máquina Enigma, que tenía un metodo de sustitución tremendamente sofisticado. El concepto de encriptar por sustitución es simple: se cambia una letra por otra, por ejemplo en el conocido ROT13 se corren las letras en 13 lugares, así la A se cambia por M, la B por N, la C por O, etc. Para hacerla más difícil cada vez que se manda un nuevo mensaje la sustitución puede cambiar 15, 7 o cualquier otra cantidad de lugares. Descifrar estos mensajes que sustituyen "por rotación" es trivial, basta con probar las 25 rotaciones posibles sobre un texto y listo.

Más difícil es si se sustituye al azar, por ejemplo haciendo una tabla de equivalencias que no siga ningún órden. Pero ese también es un código relativamente fácil de romper usando la estadística, existen letras y palabras en cada idioma que se usan más frecuentemente que otras, por ejemplo en español una combinación de dos letras puede ser "el", "al", "es" o unas pocas más, eso permite ir descifrando parte del mensaje, el resto se saca por contexto y así se puede romper toda la clave con cierta facilidad.

La máquina Enigma usaba tres cilindros que iban cambiando las equivalencias a medida que se iba escribiendo por un sistema electromecánico. Así por ejemplo la palabra AA no producía dos letras iguales sino -digamos- EJ, esto dificultaba enormemente la tarea de descifrar. Desgraciadamente para los alemanes durante la guerra Inglaterra tenía a Alan Touring, el padre de la inteligencia artificial. La clave de enigma era la posición inicial de los rotores y conectores, si se colocaban en la misma posición en otra máquina igual y se tecleaba el texto cifrado, aparecía de inmediato en texto claro.

¿Como pudieron romper el cifrado de Enigma? en 1929 los polacos interceptaron una de esas máquinas y el matemático Marian Rejewski hizo algunos descubrimientos fundamentales para romper el código. Cuando estalló la segunda guerra mundial los mejores matemáticos junto con gente común pero muy dotada para romper códigos usaron estos descubrimientos y desde antes de la batalla de Inglaterra ya podían descifrar la mayoría de las comunicaciones alemanas, sin duda que ese fue uno de los principales factores de la derrota de Alemania, que nunca se dieron cuenta que estaban siendo interceptados.

Hasta los años 70 todas las técnicas de la criptografía se basaban en mantener el método en secreto, así, cuando se rompía el secreto se facilitaba el trabajo de romper el código, pero cuando Rivest, Shamir y Adleman inventaron el sistema de clave pública RSA, hubo una revolución en la criptografía: ya no era necesario mantener secretos para que fuera seguro, todo lo contrario, mientras más lo conocieran y trataran de romperlo más robusto se ponía el método.

El método RSA es también en principio sencillo, todos aprendimos en preparatoria que se puede descomponer cualquier número en sus factores primos, por ejemplo 36 es 3x3x2x2, esto es más o menos fácil hacerlo "al ojo" pero no se sabe de ningún método o algoritmo matemático para hacerlo con números muy grandes, es un problema que se conoce desde la época de los matemáticos griegos y todavía nadie le ha encontrado solución (o si la ha encontrado se la tiene muy calladito). basta entonces tener dos números primos muy grandes (por ejemplo mayores que 10 elevado a 100), se multiplican y con alguna manipulación se generan dos claves, una pública y otra privada, que deben usarse en conjunto para abrir el mensaje, tal como algunas cajas de fondos necesitan dos llaves distintas al mismo tiempo para abrirse.

Así, para encriptar con RSA solo necesitamos un buen password, que no queda almacenado en ninguna parte pero se usa para generar el par de claves, la clave privada la guardamos para nosotros y la pública se la mostramos a todo el mundo. Si quiero mandar un mensaje a otra persona lo encripto con mi clave privada y su clave pública, y para abrirlo la otra persona usará mi clave pública y su clave privada, Ambas combinaciones permiten factorizar con facilidad los grandes números primos y así cifrar y descifrar el mensaje.

A partir de este concepto han surgido muchos otro métodos que funcionan de manera similar pero usan otros problemas matemáticos no resueltos. Otra técnica que se usa mucho en criptografía en combinación con la clave pública son las funciones Hash, también conocidas como resúmen o digest. El concepto también es simple, supongamos que tenemos un archivo inmenso de varios gigabytes, le podemos aplicar un método matemático para que nos entregue un texto pequeño, de largo fijo garantizadamente único, que será su resumen o firma. ¿para que sirve esto? es muy útil porque como el hash es único para cualquier combinación de datos, podemor calcularlo para asegurarnos que los archivos, incluso los más grandes, no han sido modificados ni en un solo bit. Si se modifica un solo bit el valor hash dará distinto. Normalmente se usa el método MD5 y así es como verificaron -por ejemplo- que los laptop del líder de las FARC no habían sido modificados.

La criptografía se ha simplificado enormemente desde que apareció el PGP en los 80s y ahora el True Crypt que es completamente gratis, muy fácil de usar y al alcance de cualquiera, lo raro es que la gente no la usa. Mandar mail desencriptados, sabiendo que quedan almacenados y -peor todavía- son indexados y accesibles para siempre por compañías como Google y Yahoo es como mandar cartas con contenido privado sin sobre. La encriptación es el equivalente a un sobre y lo único que puede garantizar la seguridad, el contenido de cualquier mail que mandemos sin encriptar es abierto y fácilmente accesible para las compañías que generosamente nos dan este servicio sin cobrar un solo peso.

20 comentarios:

  1. Hola Tomas

    Me da gusto saludarte.
    Con tus comentarios, me entero como esta Arica y tu.
    Espero viajar pronto a la ciudad y nos podamos reunir sobriamente.

    hasta la vista.

    JCarlos Guarachi

    ResponderBorrar
  2. Hola JC! claro pues, solo me mandas un mail cuando vengas y los "rockets" nos estarán esperando en el Shopdog... digo por lo de "sobriamente" jajajaja!
    Saluti compañero.

    ResponderBorrar
  3. Oiga Dr. Kryptex, la clave de mi email es de muchos d�gitos alfanum�ricos (la verdad, much�simos). �Es verdad, guachito, que a m�s d�gitos mayor seguridad?.

    Trostsky balalaika, tobarish spasiva, niet!!!

    (lo �ltimo va en ruso, para que veas que tambi�n le trabajo al cir�lico)

    ResponderBorrar
  4. Ahora que se ha hecho casi imposible romper el código, la mayoría de los ataques se concentran en el password o párrafo usado para generar las claves. Etos ataques son con expresiones probables y fuerza bruta, la mayoría de los password cortos pueden ser encontrados con facilidad usando fuerza bruta (probando con todas las combinaciones posible) y los que tienen algún significado se pueden encontrar con ataques de diccionario (que contienen unos cientos de miles de palabras y las combinan).

    Lo mejor para un password es, en este órden:

    1.-Que sea largo
    2.-Que no signifique nada
    3.-Que no tenga repeticiones
    4.-Que use caracteres no alfanuméricos, mayúsculas, minúsculas, letras y números

    Como esos son difíciles de memorizar, solo se usan en aplicaciones de alta seguridad, un buen password podíra ser, por ejemplo, así:

    3Rte3*U54pe*VReo*93Úts*0=ÇT7$d

    Para mis requerimientos de alta seguridad (volúmenes encriptados con pornografía y fotos comprometedoras) yo uso un password de alta seguridad como este:

    beppy

    ResponderBorrar
  5. Jajajajajaja....

    Nadie puede Dr, nadie puede!!!

    ResponderBorrar
  6. Chuuu y otra medida de seguridad -que yo acabo de violar- es nunca publicar su password maestro de máxima seguridad en el blog ¡se me chispoteo!
    beppy
    beppy

    ResponderBorrar
  7. Por eso los bancos siempre recomiendan cambiar las claves con frecuencia, pero cada vez que trato de seguir ese sano concejo, lo único que saco es que se me enreden las claves nuevas con las antiguas y no puedo entrar a ver mis propios saldos ni mi cuenta en la AFP.

    ResponderBorrar
  8. Los PIN de las tarjetas de crédito, bancarias, etc son lo más inseguro. Si mal no recuerdo con 4 cifras del 1 al 9 se pueden hacer... a ver

    c = m! / n!(m-n)!

    C = 9! / 4!(9-4)!
    C = 9!/4!5!
    C = 126

    ¿solo 126 combinaciones? es bastante fácil entonces, si cada visita al cajero permite dos intentos fallidos sin retirar la tarjeta, tomaría solo 63 intentos en el peor, peor de los casos

    Corríjame algún matemático si me equivoco, si no me voy a robar una tarjeta ipso-facto!

    ResponderBorrar
  9. El mejor consejo que he leído acerca de las claves es tener una clave de computador muy segura y escribirla en dos papeles: guardar uno en algún lugar de la casa donde no se pierda y la otra en la billetera. Claro que eso no sirve para las tarjetas de crédito ¡imagínate te roban la billetera con tarjeta y clave al mismo tiempo!

    ResponderBorrar
  10. Pero se te olvido un pequeño detalle, si hay mas de tres intentos fallidos con tu clave, el banco te llama para decirte...

    ResponderBorrar
  11. Aca la máquina te retiene la tarjeta! por eso mi plan maquiavélico es de a dos intentos en cada cajero, en el peor de los casos (recuerda que soy tomás malasuerte) que le achuntara solo en el último tendría que hacer 63 intentos, con dos cajeros diarios en poco más de un mes lo tengo listo!

    nací para punga parece...

    ResponderBorrar
  12. otro proyecto de negocios jaja :D

    ResponderBorrar
  13. Aqui vamos de nuevo...¡vamos que se puede! jajaja!

    ResponderBorrar
  14. 9 x 9 x 9 x 9 = 6561

    OR

    Sub TEST()
    Dim X&, I As Byte, II As Byte, III As Byte, IIII As Byte
    For I = 1 To 9
    For II = 1 To 9
    For III = 1 To 9
    For IIII = 1 To 9
    X = X + 1
    Next
    Next
    Next
    Next
    MsgBox X
    End Sub

    Sorry to burst your bubble. I guess will have to work for a living. hahaha

    ResponderBorrar
  15. OMG!!!
    You broke my dreams
    :((

    Tks for correction anyway, now I have to spend 3281 visits to the ATM!

    ResponderBorrar
  16. Nunca es bueno comentar entradas antiguas, pero al bajar y abrir el TrueCrypt, me abrió una aplicación a un sitio del depto de estado norteamericano. ¡plop!
    Yo también tengo mis rastreadores para estos casos.
    Parece que desde el 11 de septiembre del 2001, se acabo la privacidad absoluta Tomas.

    Vicente

    ResponderBorrar
  17. Es muy curioso, habría sido perfecto que hubieses documentado bien algunas cosas:

    1.-de donde descargaste el truecrypt
    2.-si le chequeaste la integridad con md5sum
    3.-la url/ip del departamento de estado a la que te llevó

    Probablemente es algún parche que alguien le colocó por broma, en todo caso la instalación de cualquier programa de encripción se hace siempre con Internet desconectado y si eres medio paranoico, antes de abrir un volumen encriptado sacas el cable de red, y lo vuelves a colocar después que lo cierras (eso por si tienes algo como el VNC con que estén viendo tus pantallas)

    La privacidad en Internet no existe, en eso te encuentro toda la razón, pero la encripción bien usada puede ser sumamente segura para asegurar la confidencialidad de tus datos

    ResponderBorrar
  18. Tomas:

    El realidad lo que paso fue que el TrueKryp, por medio de su setup5.exe, trato de desplegar firefox.exe, para ira los laboratorios JPL de la Nasa en Pasadena....ja.
    No idea porque, capaz que sea porque estoy incrito en los podcast de JPL.

    Misterios de la web.

    ResponderBorrar
  19. ok, es Truecrypt, sin k y lo baje de tu link, que es el sitio oficial.

    Saludos,
    Vicente

    ResponderBorrar
  20. vi la historia de tu vida; eres un egocéntrico. Hay más personas en el mundo fuera de tu mismo.

    ResponderBorrar

"Send me a postcard, drop me a line
Stating point of view
Indicate precisely what you mean to say
Yours sincerely, wasting away
Give me your answer, fill in a form
Mine for evermore
Will you still need me, will you still feed me
When I'm sixty-four"