miércoles, 19 de junio de 2019

¿Dónde están las llaves? Criptografía explicada para no informáticos


Ha pasado MUCHO tiempo desde la última vez que escribí para el blog pero, de un tiempo a esta parte en mi trabajo, han estado fomentado algunas actividades y la escritura de blogs informativos sobre temas tecnológicos está entre ellas. Así que, sin más explicaciones, aquí me tenéis de nuevo, dispuesto a resolver dudas que no teníais. Hoy, varios años después, la cosa va de llaves y candados, de cajas y notas, de cifrados, firmas y encriptaciones. ¿Cómo se cifran las cosas en internet? Es relativamente sencillo y, para el público general, mayormente desconocido. Para paliar vuestra (estadísticamente probable) ignorancia en este tema vamos a dar una vuelta por el mundo de los cifrados. Al tajo.


Whatsapps, emails, información bancaria y otros datos de esta índole pasan por el aro de la criptografía pero, ¿qué tipos de cifrado hay? Y, más importante, ¿por qué hay varios tipos? Aquí no me voy a meter en detalle en las distintas implementaciones de los algoritmos criptográficos que existen, pues son muchos, difíciles y serían un tema muy aburrido de explicar. Así que ya tengo un buen motivo para sólamente entrar en las ideas abstractas. Además, os insisto que, como ya dije, es mejor tenerla larga (la contraseña).


llavesEntrando ya en materia, un archivo o un texto cifrado son como una caja a la que le pones un candado. Todo el mundo sabe que hay una caja y que podría contener algo, pero sólo quien tiene la llave conoce el interior. En el maravilloso mundo imaginario de la informática hay varios tipos de candados, el más simple de ellos es el candado ‘simétrico’ (cifrado simétrico o criptografía de clave simétrica), es decir, echo el cerrojo con una llave y con la misma llave (o una copia) lo abro.


Imagina que tienes que dejarle a tu amigo Paco notas personales y no te fías de que nadie les eche un ojo. Rumiando qué hacer se os ocurre comprar una caja con cerrojo y coger una llave para cada uno. Ahora, cuando cualquiera de vosotros quiere enviar algo al otro, mete sus documentos en la caja y la cierra con su llave. Así, cuando el otro vea la caja sobre la mesa, la abre con su copia de la llave y ve qué hay dentro. Todo perfecto, vuestra información está a salvo. Esta es la forma más ‘primitiva’ de cifrado, los antiguos criptex de Da Vinci lo utilizaban y la ciberseguridad la usa.


¿Qué problema tenemos con esto? Podría preguntar una voz en cursiva en tu cabeza. Imagina que un día dejas tirada por ahí tu llave y tu cuñada Lola, que te odia, hace una copia. Tú no tendrías por qué enterarte y de hecho no te enteras. Cuando dejas una caja con una nota asumes que nadie puede abrirla, pero ahora tu cuñada tiene la capacidad de leer vuestros secretos. Esto de por sí es malo, porque perderías el secreto en tus comunicaciones pero, además, cuando tú escribas una nota con tu número de cuenta para que Paco te devuelva tus 300€, la impía de Lola, cogerá la nota y cambiará tu número de cuenta por el suyo y Paco, al no saber que vuestra seguridad se ha visto comprometido, pondrá 300 jugosos lereles en una cuenta que no es la tuya. También podría trolearos cambiando vuestros mensajes para que os odiéis, o pediros dinero a ambos y que ninguno sepáis que ese dinero no va a vuestro amigo. El problema se incrementa si, en lugar de sólamente Paco y tú, la llave de la caja la tenéis 10 personas y compartís mensajes en ella. Así que ¿cómo podemos asegurarnos de que la caja la ha cerrado quien nosotros esperamos? o dicho de otro modo ¿cómo certificamos la identidad de las personas sólamente con llaves y cerrojos? 


Parece lícito que hagáis esa pregunta (sé que la habíais pensado antes que yo, tranquilos). Antes vimos de lejos el cifrado simétrico y ahora tenemos tiempo para revisar, lo habéis adivinado, el asimétrico.

El cifrado asimétrico es, por así decirlo, un cerrojo que se cierra con un candado y se abre con otro. Si cierras con la llave A, el candado se abre con la B y viceversa. Para rizar un poco el rizo, vamos a coger una llave y esconderla. Será nuestra llave privada. También vamos a colgar un manojo de copias de la otra llave con nuestro nombre grabado por todas partes, una en la puerta de casa, una en el ayuntamiento… Es decir, que quien quiera puede tener una copia de nuestra llave pública (por eso se llama criptografía asimétrica o criptografía de clave pública-privada).


Pues bien, ahora tenemos dos llaves, una pública, que tiene todo el mundo y que, además se sabe que es la pareja de la mía y otra privada, que nunca jamás compartiré con nadie. Solamente con esto, estaríamos habilitados para tener nuevas funciones de seguridad y que permiten que nuestra caja sea a prueba de la malvada cuñada Lola:


  1. Tu amigo Mike puede guardar un mensaje en su caja y cerrarla usando tu llave pública (puede recogerla en el ayuntamiento y hacerse una copia sin problemas). La caja se ha cerrado con tu llave pública solamente tú podrás abrirla. A su vez, tú podrías coger la llave pública de Mike para responder en una caja cerrada y él tendrá la única llave para poder abrirlo. Éste es el tipo de encriptación que usan Telegram o Whatsapp. Cuando alguien tiene tu número de teléfono e inicia una conversación, te solicita tu clave pública (aunque no lo sepas) y te envía la suya. Así, ambos tenéis un cifrado de extremo a extremo que solamente vosotros podéis descifrar.
  2. Tú puedes escribir un mensaje en una tabla de madera, colgar a esa tabla un candado que cierres con tu llave privada y dejarlo por ahí. De este modo, cualquiera que lo lea puede comprobar fácilmente si lo has escrito tú. Simplemente van al ayuntamiento y ven que el candado se abre con tu llave, es decir, solamente lo has podido cerrar tú, así que has “firmado” un mensaje público. Así funcionan los certificados electrónicos y, por eso, te los tiene que dar un organismo oficial. Ellos certifican que eres quien dices ser y tú puedes “firmar” cerrando tu caja con la llave privada que te dan.
  3. Una combinación de ambas, es decir, una caja con dos cerraduras. Metes tu mensaje en la caja y echas el cierre a las dos cerraduras: una de ellas con tu llave privada y la otra con la llave pública de tu amigo Mike y, así, solamente mike puede abrirlo y, además, sabe que eres tú y no otra persona quien lo ha mandado.




Viñeta de la web XKCD donde se establece que es más sencillo golpear a alguien para que te de su contraseña que desencriptarla
Opinión de XKCD sobre cómo desencriptar
En realidad, éste tercer tipo de cifrado es el más común hoy en día. Firmas y encriptas para que el receptor desencripte y compruebe la autenticidad. Se usa en mensajería instantánea (sí, mentí en el punto 1) o cuando envías datos a organismos públicos (sí, mentí en el punto dos). Y, aunque no lo sepáis, la mayor ventaja ya la hemos visto: no tienes que compartir tu clave privada jamás (a diferencia del cifrado simétrico, donde emisor y receptor deben tenerlo). Esto permite que tu clave sea potencialmente menos vulnerable y que, si tienes que renovarla porque alguien te la haya sacado a punta de pistola o mediante alcohol, solamente tengas que crear una pareja de claves nueva y llevar la pública al ayuntamiento. Si usases el modo simétrico tendrías que sustituir las llaves de todo el mundo que te conoce para todas las cajas que tengas.


Tampoco os equivoquéis, la criptografía simétrica no ha desaparecido, aún tiene aplicaciones. Se sigue usando, por ejemplo para bloquear tu teléfono o para encriptar su tarjeta de memoria pero, para compartir secretos o información confidencial online, el cifrado asimétrico se ha vuelto el rey del mambo. ¿Te parece fea ahora la asimetría?

No hay comentarios: