Diferencias entre codificación, hashing, cifrado y ofuscación.

Autor: Hugo Galilea

Es común escuchar a personas, incluso especialistas, confundiendo estos términos o utilizándoles indistintamente para diferentes prácticas. La verdad es que son distintas técnicas que tienen propósitos diferentes. En este artículo intentaremos, más que explicar cada una de ellas, entregar una breve definición, tipo de uso, ejemplos y sus diferencias.

Partamos por la más simple y la más nueva, la codificación.

Codificación

Codificar un mensaje es la técnica de cambiar los símbolos que representan el mensaje por otros de más fácil interpretación para el receptor o de mejor eficiencia en el envío del mensaje.

Un computador puede entender mejor un mensaje escrito en binario o hexadecimal que nosotros, pero nosotros necesitamos que sea codificado en un lenguaje que nosotros entendamos sin mayor dificultad.

Se diferencia de un cifrado con que no tiene llaves de encriptación, más bien tiene tablas de transformación, las cuales nos explican como pasar de un lenguaje a otro. Estas tablas son públicas, dado que la finalidad no es proteger el secreto de la información.

Ej: ¿P52d2s d2c3fr1r 2st2 m2ns1j2?

S C
A 1
E 2
I 3
O 4
U 5

Ejemplos tenemos muchos como son tablas ASCII, UNICADO, MORSE, Base64 y URLEncoding.

 

Hashing

Comúnmente referido como “hashear”, esta técnica sirve para asegurar al receptor o lector del mensaje la integridad de este. Lo que te envié es exactamente lo que recibiste si sólo si el hash que te estoy entregando es idéntico al hash que puedes calcular en el mensaje que tienes.

Hashear es tomar un mensaje y transforarlo en un string fijo de caracteres con las siguientes características:

  1. El mismo Input producirá siempre el mismo Output (hash).
  2. Distintos Inputs no debiesen generar un Output idéntico (es matemáticamente posible pero la probabilidad es muy, pero muy baja).
  3. No es posible tomar el Output para obtener el Input (one way).
  4. Cualquier modificación en el Input entregará un Output diferente.

Un ejemplo de uso lo tenemos comúnmente en Kepler cuando realizamos peritajes informáticos en busca de evidencia digital, con la finalidad de conservar la cadena de custodia de la evidencia, debemos tomar el dispositivo a investigar (digamos un disco duro), calcular el hash de los datos que tiene, clonarlo sin modificar los datos (con maquinaria especial) y entregar este hash y el clon, de manera de asegurar que la evidencia se extrajo de ese dispositivo, lo que puede ser comprobable y repetible.

Ejemplo:

1.- ¿Puedes descifrar este mensaje?

HASH: 363c47d2bb72cb004a33e5fffbc5a03fa4242f8e322d7cf760217c4d935ffd0a

2.- ¿Puedes descifrar este mensaje

HASH: aab4ef6c3bfd76aa95ec71c24c8cc5f13351934b774a75ca58c93d3523ed8520

Utilizando SHA256 podemos ver como cambiando sólo el último caracter, todo el hash se ve modificado.

También para descargas de documentos importantes es posible realizar estas comprobaciones.

Tipos: SHA-3(Secure Hash Algorithm 3), MD5, SHAKE128, SHAKE256, Blowfish.

 

Ofuscación

La ofuscación busca dificultar el proceso de entendimiento, generalmente para evitar o hacer más difíciles ataques o copias no autorizadas. También puede servir para engañar a un robot y saltar un filtro de palabras o un proceso de minería de datos manteniendo el contenido legible para humanos.

Ejemplo: Mi correo es hgalilea[AT]kepler.cl

Acá cambié el “@” por un “[AT]” de manera que si un robot de minería de datos que busca generar una base de datos de correos electrónicos publicados en páginas web, no guarde el mío.

Cabe mencionar que la ofuscación no es un método seguro como la encriptación y generalmente se puede revertir corriendo el proceso a la inversa.

Tipos: Jabascrytp obfuscator, proguard.

 

Cifrado

 La encriptación o cifrado, tiene una sola finalidad, que sólo puedan entender el mensaje quien lo escribe y quienes tengan las llaves para desencriptar. Bastamente utilizado en períodos de guerra por toda la humanidad, actualmente se utiliza mayoritariamente para proteger información valiosa que se encuentra almacenada digitalmente.

Antiguamente se enviaban cartas a través de mensajeros con mensajes cifrados a través de transposición, sustitución, permutación o combinación. El mensajero podría ser interceptado, pero el mensaje seguía seguro gracias al cifrado.

Un gran ejemplo es el de la película “código Enigma” (The Imitation Game), basada en hechos reales, donde uno de los padres de la computación, Alan Turing, logra romper el cifrado de los mensajes de la inteligencia alemana en la segunda guerra mundial a favor de los británicos.

cifrado simetrico

 

Ej: e5gH9yLm+Un6OmiLAx3Jog==

(mensaje cifrado AES bajo ECB, llave 1234567981234567891011121)

Por supuesto ningún método es infalible y a mayor seguridad, mayor es el gasto en energía, cómputo y tiempo.

Para encriptar, tomamos un mensaje y a través de un procedimiento que utiliza un algoritmo de cifrado con cierta clave (llamada llave) para transformar un mensaje, desde algo legible a algo ilegible para quienes no tengan la llave. Existen claves de cifrado que son iguales a las de descifrado (criptografía simétrica), distintas (asimétrica) o de ambos tipos (híbrida).

Ejemplos: AES, RSA.

 

Espero este artículo haya ayudado a clarificar dudas respecto a la diferencia entre estas cuatro técnicas.

¿Pudiste leer el mensaje encriptado? Hay muchas páginas que te permiten desencriptar en línea teniendo la llave y método de encriptación.

¿Conoces las diferencias entre Ofuscación, Cifrado, Hashear y Codificar? Acá te lo explico

Click to Tweet