En esta habitación vamos a aprender lo básico sobre criptografía, hashing, codificación, etc.

Introducción a la criptografía

Es un campo muy amplio, así que empecemos por lo fundamental. ¿Para qué necesitamos la criptografía?

Para hacer las comunicaciones seguras.

Sin encriptación, las comunicación vía Internet serían muy inseguras, de modo que a cualquiera le resultaría muy fácil ver tus datos.

Casi todos esos datos que envías y recibes están encriptados y, por eso, terceras personas no pueden verlas «en texto plano», de manera que, si interceptan mensajes, estos no se entienden y, con una encriptación fuerte, es muy difícil descifrarlo.

Tipos de criptografía

Hay dos tipos:

  • Simétrica.
  • Asimétrica.

Qué es la criptografía simétrica

Imaginemos que Alice le quiere mandar un mensaje a Bob, pero no quiere hacerlo en texto plano porque cualquiera podría leerlo.

Así que ella tiene una receta para que el contenido del mensaje no se entienda (eso se llama encriptación).

Bob tiene la misma receta, de manera que puede usarla para aplicarla al mensaje que no se entiende y descifrarlo.

La «receta», en criptografía, se llama clave o llave.

En criptografía simétrica, ambos usuarios tienen la misma clave para encriptar y desencriptar mensajes.

Qué es la criptografía asimétrica

En la criptografía asimétrica, las claves de encriptación y desencriptación son diferentes. La de encriptación solo sirve para encriptar, no para descifrar, y viceversa.

  • La clave de encriptación se llama clave pública.
  • La clave de desencriptación se llama clave privada.

¿Por qué se usa la criptografía asimétrica?

Porque es más segura. Solo el poseedor de la clave privada puede desencriptar, porque la pública solo sirve para cifrar el mensaje.

Veamos con un ejemplo:

  • Alice quiere hablar a Google.
  • Google le da a Alice la clave pública.
  • Alice encripta su mensaje usando la clave pública (que es para lo que sirve) y se lo manda a Google.
  • Google desencripta el mensaje con su clave privada y le envía a Alice la respuesta que desea.

Y así es como transcurre la conversación.

Es cierto que la criptografía simétrica es más rápida que la asimétrica, pero menos segura.

Respondamos a las preguntas.

¿Qué clase de criptografía es más segura?

asymmetric

¿Qué clase de criptografía es más rápida?

symmetric

¿Qué clase de criptografía usará un banco?

asymmetric

¿Qué usarás para encriptar tus mensajes en criptografía asimétrica?

public key

¿Qué usarás para desencriptar mensajes en la criptografía asimétrica?

private key

¿La criptografía simétrica usa dos llaves diferentes para encriptar/desencriptar? (yay/nay).

nay

¿Qué es un hash?

Los hashes son cadenas largas de letras y números generados por algoritmos de hashing. Cogen texto plano y lo convierten en un hash.

Lo importante a comprender sobre los hashes es que no son reversibles. No hay manera de decodificar o desencriptar un hash.

Esquema de hashing

Algoritmos de hashing populares son MD5 (Message Digest 5) y SHA (Secure Hash Algorithm).

La palabra hello se convierte en 5d41402abc4b2a76b9719d911017c592 al pasarla por el algoritmo MD5 de hashing.

Para qué se usan los hashes

Los usos más populares son:

  • Identificación de archivos.
  • Almacenamiento de datos sensibles.

Cuando creas una cuenta en una web, tu contraseña es convertida en un hash y ese hash es lo que se guarda en la base de datos del servidor.

De esta manera, cuando te identificas, la contraseña se convierte en hash, el servidor lo compara con el hash almacenado y, si coincide, te dejará pasar porque la contraseña que has dado es correcta.

Los hashes MD5 también se usan para asegurar la integridad de los archivos. Como MD5 siempre produce el mismo output partiendo de un mismo input, puede usarse para comparar el hash del archivo fuente y compararlo con el del archivo destino para ver si son el mismo y, por tanto, ese archivo está intacto y no se ha modificado.

Hay más algoritmos de hashing, pero lo dejamos aquí porque esta es una introducción muy básica.

Vayamos con las preguntas.

¿Cuál es el hash MD5 de «hashes are cool»? (nos vamos a una de las muchas herramientas online que hay y lo convertimos).

f762d32e3c160900d94b683e927555b9

¿Qué significa MD5?

Message Digest 5

¿Quién creo MD5? (Google es nuestro amigo)

Ronald Rivest

Codificando y decodificando

Hay una diferencia entre codificar y encriptar. Digamos que tienes un archivo encriptado, la única manera de descifrarlo es con la clave.

Sin embargo, los datos codificados pueden ser decodificados inmediatamente, sin claves.

Por tanto, la codificación no es una forma de encriptación, es solo una manera de representar datos.

Una codificación popular es Base64. Así es como «hi there» luce codificado en Base 64: aGkgdGhlcmU=

Vamos con las preguntas:

Codifica la cadena «cryptographyisuseful» en Base64 (hay mil herramientas online para hacerlo).

Y3J5cHRvZ3JhcGh5aXN1c2VmdWw=

Decodifica dGhlIHNlY3JldCB3b3JkIGlzIDogd2F0ZXJtZWxvbg==, ¿cuál es la palabra secreta?

watermelon