Encriptación de Mensajes

Al momento de enviar mensajes, muchas veces se requiere mecanismos que permitan asegurar que los datos enviados no sean adulterados o puedan ser vistos por terceros. Desde la antigüedad se han utilizado algoritmos como el cifrado césar, para asegurar que un mensaje solo pueda ser leido por los receptores autorizados y que conozcan el algoritmo para decifrar el mensaje.

En la informática moderna existen tres herramientas principales. Hash, Encriptación Simétrica y Encriptación Asimétrica.

La criptografía juega un papel fundamental en la seguridad de sistemas operativos, aplicaciones y comunicaciones en sistemas distribuidos, entre otros. Permite transmitir información de forma que solo pueda ser vista y comprendida por el emisor y el receptor designado, ayudando a que terceros no puedan visualizar o adulterar el contenido original.

Hash

El hash es una forma de codificar un dato para detectar cualquier cambio de forma sencilla. El menor cambio mostrará una secuencia de caracteres totalmente distinta. El hash tiene la característica que es solo de una vía, un contenido no puede volver a su versión original si pasa por una función de hash.

Los hash son usados, por ejemplo, por las criptomonedas al momento de verificar los bloques utilizando técnicas como el Árbol de Merkle.

También son usados para verificar si un archivo ha sido descargado correctamente y no ha sido adulterado al verificar su hash.

MD5

MD5 es un hash creado en 1991 que fue muy popular en las aplicaciones webs de los 90s y principios del 2000. Hoy en día no es recomendado para nada más que verificar la integridad de datos. Ya que con el avance tecnológico el poder de cómputo avanza hasta lograr quebrar este algoritmo, provocando que pueda ser descubierto el dato original (usando tablas de palabras) o existan colisiones, es decir dos o más datos con el mismo hash.

SHA

Es un hash muy popular originado en 1993, su versión SHA-256 es utilizado por criptomonedas como Bitcoin para verificar los bloques del blockchain. Sin enmbargo no es recomendable para almacenar contraseñas, debido a que el SHA está optimizado para velocidad.

Bcrypt

Bcrypt es un hash originado en 1999, recomendado para ocultar contraseñas en las bases de datos. Tiene la característica de ser resistente a ataques de tablas de palabras (rainbow tables) y fuerza bruta, por lo que no se ve afectado por el aumento del poder de cómputo en el tiempo.

Diffie-Hellman

El intercambio de claves Diffie-Hellman es un protocolo criptográfico que permite a dos partes crear de forma segura una clave secreta compartida sobre un canal público e inseguro, sin que esa clave viaje nunca por la red. Este método se basa en la matemática de las funciones de un solo sentido y es fundamental para el cifrado de comunicaciones, ya que las claves resultantes se usan para asegurar la comunicación posterior.

Es muy común verlo utilizado para verificar conexiones ssh y generar llaves únicas para las criptomonedas. En términos simples existe una llave privada que será solo conocida por el autor y una llave pública que será divulgada públicamente. Lo que se encripta con la llave privada puede ser decodificado solamente por la llave pública, lo que se encripta con la llave pública puede solamente ser decodificado por la llave privada. Esto se conoce como encriptación asimétrica.