Ciberseguridad para gente con prisa: Criptografía

0 34
Avatar for acalpixca
2 years ago

En 2017 publiqué un pequeño libro sobre ciberseguridad (Amazon; Origin Shop) bajo la convicción de que es imprescindible que todos, seamos técnicos o no, conozcamos los conceptos básicos para comprender la tecnología en la que se basa la sociedad actual. La criptografía es una pieza central en los actuales mecanismos de seguridad de la información... y por supuesto, es la piedra angular de las criptodivisas. Este es el capítulo que le dediqué a la materia. Léanlo con calma. Espero y agradezco sus comentarios.

Criptografía

“Cripto” significa esconder, ocultar, ofuscar. “Grafía” es escritura. La criptografía es la ciencia que estudia los mecanismos para transformar mensajes de manera que solamente el emisor y el receptor deseado sean capaces de entenderlo. Esta ciencia es tan antigua como los secretos, es decir, como la humanidad. Pero durante la 2ª Guerra Mundial ésta dio un gran paso adelante y se forjó como disciplina moderna. Es en esta época que se acuñaron ciertos términos no demasiado intuitivos hoy en día, pero que siguen siendo los más utilizados. Dedicaremos unos minutos a repasarlos.

Texto simple (“plain text”): Es el mensaje a transmitir, previo a ser manipulado. Durante la Guerra éstos eran mensajes de texto. Hoy en día el mensaje puede ser un emoticón, un sonido, un video, además de texto. En todos los casos, cuando hablamos de criptografía les llamamos texto simple.

Texto cifrado (“cypher text”): Es el mensaje ofuscado, es decir, modificado de tal manera que solamente el emisor y la persona a quien se ha enviado sean capaces de leerlo. Recordemos que una imagen y un video también son mensajes, y por lo tanto una vez ofuscados nos referiremos a ellos como texto cifrado, aunque no se trate de texto en sí.

Cifrado (“cypher”) o código: el algoritmo, método o función matemática que aplicamos al texto sencillo para obtener el texto cifrado. Es “el secreto de la salsa”. Más adelante veremos los diferentes algoritmos de cifrado existentes y su nivel de seguridad.

Clave de cifrado o de encriptación: Un secreto, o combinación de secretos, conocidos total o parcialmente por el emisor y el receptor, utilizados junto con el cifrado o código para cifrar y descifrar (o encriptar y desencriptar) el mensaje.

Cifrado, también conocido como encriptación (“encryption”): El proceso de aplicación de un cifrado o código determinado a un texto simple determinado para obtener un texto cifrado determinado que seguidamente enviaremos al receptor del mensaje. El uso de la clave de cifrado en este proceso es también habitual. El lector apreciará que aquí se empiezan a complicar los términos, ya que cifrado puede significar el algoritmo o función matemática y también el proceso de aplicación de dicho algoritmo. El contexto será lo que determine el significado del término.

Descifrado, también conocido como desencriptación (“decryption”): Una vez el texto cifrado llega al receptor, éste ha de revertir el proceso de cifrado o encriptación para que el texto cifrado se convierta en texto simple que pueda ser leído. Este proceso se llama descifrado.

Pongamos un ejemplo quizás conocido para el lector, ya que resulta ser un juego infantil muy común. Un grupo de amigos escogen una vocal, digamos la “i” y a partir de entonces hablan sustituyendo todos los sonidos vocálicos por esa vocal. Apliquemos esta situación con los términos recién definidos:

·         El mensaje “hola, ¿eres mi amigo?” es el texto simple.

·         El cifrado es el método “sustituye todas las vocales por una determinada”.

·         La clave de cifrado es la vocal “i”.

·         El texto cifrado es “hili, ¿iris mi imigi”?

·         El descifrado es el método “sustituye la clave de cifrado (la letra “i”) por vocales de tal manera que las palabras una a una, y la frase entera, tengan sentido”.

·         El mensaje descifrado es de nuevo “hola, ¿eres mi amigo?”

Como hemos podido ver, la principal aplicación de la criptografía ha sido el envío de mensajes que sean indescifrables para quien sea que pudiera interceptarlos. Basado en eso, los ejemplos que utilizaremos a partir de ahora involucran a tres personas: el emisor del mensaje, el receptor intencionado del mensaje, y el interceptor del mensaje. Tradicionalmente en el campo de la criptografía se escenifican los roles de emisor y receptor con los nombres Alice y Bob. La persona que intenta interceptar el mensaje siempre se llama Eva[1]. La clave de cifrado siempre se representará con una llave[2].

Otro uso muy frecuente de la criptografía es la firma de mensajes. Siguiendo el símil de mundo real, un documento firmado es un documento cuyo origen está asegurado. El atributo de la seguridad de la información que se garantiza gracias al firmado de mensajes son la autenticación (sabes a ciencia cierta quién te envió el mensaje) y la no repudiación (esa persona no puede negar que  fuera ella quien envió el mensaje).

Como ya vimos en el caso de elección de contraseñas, el cifrado será tan seguro como lo sea la clave de cifrado que escojamos, y cómo de secreta la mantengamos. Imaginemos que somos Bob y queremos enviar mensajes seguros a Alice. Podemos crear una clave muy larga y compleja, pero ¿cómo podemos compartir la clave con Alice? La única manera 100% de hacerlo es quedando con ella en persona y dársela en mano. Desafortunadamente, esto no es muy práctico. Cualquier otro método de hacerle llegar la clave compartida a Alice es en sí insegura. ¡No podemos garantizar que Eva no pueda interceptarla en tránsito! A esto se le llama el problema de la distribución de la clave, y la criptografía en que emisor y receptor comparten una sola clave se conoce como de clave única o criptografía simétrica.

En 1976 dos matemáticos estadounidenses, Diffie y Hellman, encontraron una solución a este problema [7]. Su solución se conoce como criptografía de clave pública o criptografía asimétrica y se basa en proveer a cada persona con un par de claves: una privada, que solamente ellos conocerán y se mantendrá en secreto, y una pública, que repartirán a todos sus contactos. Es muy importante que en caso de que se sospeche que alguien puede conocer tu clave privada, inmediatamente dejes de usar el par de claves al que pertenece, generes un nuevo par de claves, y distribuyas tu nueva clave pública a tus contactos. Más adelante veremos cómo se generan y distribuyen claves en la práctica. Ahora veamos con unos ejemplos muy conceptuales la manera de funcionar de la criptografía asimétrica. No son complicados, pero requieren un poco de atención. Comprender bien el fundamento facilita enormemente el uso en la práctica de la criptografía. Vamos con ellos.

1.       Alice quiere enviarle un mensaje a Bob.

Cifrar un mensaje con criptografía asimétrica puede visualizarse como colocarle un candado de cifrado que es propiedad del destinatario al mensaje. El candado funciona con dos llaves. Para abrir el candado debes disponer de la llave pública y privada del destinatario (cosa que, si la llave privada se mantiene así, privada, solo puede hacer el destinatario), mientras que para cerrarlo solo necesitas la clave pública del destinatario (esa está al alcance de cualquier persona).

Para que Alice le pueda enviar un mensaje a Bob, ella ha de conocer la clave pública de Bob. Alice cifra el mensaje con la clave pública de Bob (cierra el candado), y le envía el mensaje con el candado puesto. Bob usa sus dos llaves (la pública y la privada) para abrir el candado, es decir, para descifrar el mensaje.

Si Eva intercepta el mensaje e intenta abrir el candado para leerlo, no podrá, ya que solamente dispondrá de la clave pública de Bob, pero no la privada, y ya hemos visto que para abrir el candado se necesitan ambas.

  1. Bob quiere contestarle a Alice.

El proceso es idéntico: Bob debe obtener la clave pública de Alice. Bob cierra el candado con la clave pública de Alice, y le envía el mensaje con el candado. Alice ha de usar sus dos llaves para abrirlo. Eva, que intercepta el mensaje, es incapaz de abrir el candado.

Con este sistema, se garantiza la confidencialidad de la comunicación, pero de ninguna manera la autenticidad: Eva podría fácilmente escribir un mensaje, cerrar el candado usando la clave pública de Bob, pero hacerse pasar por Alice. La solución a ese problema es el uso de la firma de mensajes. Si seguimos con el símil de los candados, el de firma es diferente: es propiedad de la persona que firma el mensaje, se cierra con su clave privada (que solamente conoce el firmante) y se abre con su clave pública (que conoce todo el mundo).

Veamos un par de ejemplos.

1.       Alice quiere firmar un mensaje y después enviárselo de modo seguro a Bob.

La mejor manera de entender este proceso es hacerlo en dos pasos: primero, Alice firma su mensaje (le coloca un candado de firma, propiedad de ella), y después, Alice cifra ese mensaje ya firmado (le coloca otro candado, éste de cifrado, propiedad de Bob) para que solamente Bob pueda leerlo.

Así pues, lo primero que hace Alice es cerrar el candado de la firma con su clave privada (que solamente ella conoce).

El segundo paso es cerrar el candado de cifrado (propiedad del destinatario, es decir, de Bob) usando la clave pública de Bob, y enviar el mensaje a Bob.

Una vez Bob recibe este mensaje, lo primero que hará es usar su par de claves (compuesto de la pública y la privada, que solamente él conoce) para obtener el mensaje firmado de Alice.

Después, tiene que abrir el candado de la firma (propiedad de la firmante, es decir, de Alice) usando, como hemos visto antes, la clave pública de Alice. El resultado es que Bob puede leer el mensaje, y además sabe que ha sido enviado por Alice.

2.       Eva intenta enviar un mensaje a Bob haciéndose pasar por Alice.

Eva podría escribir un mensaje diciendo que es Alice, usar el candado de cifrado de Bob, cerrarlo con la clave pública de Bob, y enviárselo. Bob podría desconfiar de la autenticidad del mensaje ya que no viene firmado por Alice.

Eva de ninguna manera puede cerrar el mensaje con el candado de firma de Alice ya que se requiere la clave privada de Alice, que es secreta.

Estos conceptos de criptografía asimétrica son un poco enrevesados pero no demasiado difíciles de comprender. No se puede decir lo mismo sobre los cálculos matemáticos que se realizan combinando las claves con el mensaje para obtener un resultado ininteligible y difícil de descifrar. Nos limitaremos aquí a mencionar los algoritmos de criptografía más utilizados:

DES: Se creó en los años 70, cuando nació el cifrado asimétrico. Usa claves de una longitud de 56 bits (56 dígitos binarios, es decir, 1 o 0). Con ordenadores actuales, puede ser descifrado usando “fuerza bruta” en menos de un día.

Triple DES: Se usan los mismos principios matemáticos y tipos de claves, pero se repite el proceso tres veces. Con la velocidad actual de mejora de rendimiento de los ordenadores, Triple DES dejará de ser seguro en la década de 2030.

AES: Hay tres versiones: de claves de 128, 192 o 256 bits. Es la criptografía más usada en la actualidad. Tanto es así que su cálculo se implementa en los circuitos integrados de los procesadores (como si se tratara de una suma o una resta).

Blowfish: Es un algoritmo creado en la década de 1990. Las claves tienen longitud variable, de entre 1 y 448 bits. Sigue siendo un algoritmo seguro. Tiene variaciones más fuertes: Twofish y Threefish (misma función matemática pero aplicada dos y tres veces seguidas, respectivamente). No es muy usado.



[1] No se trata de ninguna referencia bíblica. Resulta que en inglés el hecho de escuchar un mensaje no dirigido a uno mismo se dice “eavesdropping”, y su primera sílaba se pronuncia exactamente igual que Eva en inglés.

[2] Clave y llave vienen de la misma palabra en latín y tienen significados similares: ambos nos permiten acceder a un recurso inaccesible a quienes no dispongan de ella.

1
$ 5.87
$ 5.87 from @TheRandomRewarder
Avatar for acalpixca
2 years ago

Comments