La diferencia entre estas dos prácticas es que la encriptación es reversible mientras que el hashing no lo es.
Si prestamos atención en el mundo de las criptomonedas, seguramente veamos como se utilizan estos dos términos de forma intercambiable.
Por lo que hoy vamos a ver en este artículo la diferencia que hay entre el hashing y la encriptación, así entenderás mejor como funciona la tecnología blockchain y otros aspectos de este mundo tan interesante de las criptomonedas.
También veremos lo que es el salting, ya que en algunas cosas como la creación de monederos también se encuentra presente.
Contenido
¿Qué es la encriptación?
La encriptación es la práctica de codificar la información de tal forma que solo alguien con la clave correcta puede desencriptarla y leerla.
Por eso se dice que es una función de dos vías. Cuando encriptamos algo, la idea es que esa información luego pueda ser leída.
Esta es la diferencia más importante que existe entre la encriptación y el hashing.
A la hora de encriptar la información se utiliza algo llamado cifrado, que es un algoritmo que sigue una serie de pasos bien definidos de forma ordenada. Esto se emplea tanto para encriptar como para desencriptar.
El algoritmo parece que es algo complejo o que tiene connotaciones difíciles de entender, pero la realidad es que simplemente se tratan de una serie de reglas que suelen ser muy sencillas.
La encriptación tiene una historia muy larga. Podemos encontrar mecanismo de encriptación que tienen más de 4.000 años. Esto porque se han descubierto en paredes de tumbas. Desde entonces, hay numerosos ejemplos históricos que la utilizan.
El antiguo Egipto usaba una forma muy simple de encriptación. El cesar también, cuyos cifrado es uno de los ejemplos más utilizados de la historia de la encriptación.
En particular, utilizaba un primitivo sistema de cifrado por desplazamiento que cambiaba las letras contando hacia adelante un número determinado de lugares en el alfabeto.
La cual tuvo un uso muy importante, impedir que cualquiera que intercepte un mensaje enviado por el cesar no pueda entenderlo.
La historia de esta práctica continua, y ha sido responsable que Maria, la reina de Escocia, fuera decapitada y que un grupo de conspiradores fuera asesinado cuando sus mensajes fueron interceptados y descifrados.
¿Cómo funciona?
Vamos como la encriptación funciona con un ejemplo muy simple. Vamos a utilizar la encriptación que utilizo el Cesar para aprender.
La idea es cifrar una oración utilizando una encriptación de desplazamiento monoalfabetica que simplemente sustituye cada letra por otra que esta secuencialmente 3 lugares por delante de ella.
![Ejemplo de encriptación simple](https://criptotario.com/wp-content/uploads/2021/12/Ejemplo-de-encriptación-simple-1024x482.webp)
Claro que los cifrados modernos son más complejos que esto, pero la idea es entender los fundamentos de esta práctica para luego ir a cosas más complejas.
Intentemos cifrar el nombre de esta web con este mecanismo. Es un ejemplo muy sencillo sin puntuaciones o espacios, aunque si los tuviera también deberíamos codificarlos.
criptotario
Cifrado quedaría así:
fulswrwdur
Si alguien conociera la forma en que hemos cifrado el mensaje, tranquilamente puede hacer el proceso a la inversa y llega a la información.
En este caso es muy sencillo, y alguien que interceptara el mensaje podría descubrir fácilmente lo que estamos intentando ocultar. Por eso existen actualmente otros mecanismos más avanzados que son utilizados para diferentes objetivos.
Encriptación moderna
Cuando nos referimos a algoritmos de encriptación moderna, no podemos dejar de hablar de las claves privadas y públicas. Dos componentes muy importantes de la encriptación en nuestra era.
El ejemplo que vimos arriba utiliza una clave privada, una que debemos comunicar a la otra persona para que pueda desencriptar el mensaje. En nuestro caso elegir la letra que se encuentra 3 lugares antes.
La clave privada es muy importante, ya que aquel que la tiene puede utilizarla para comprometer la información. Por lo que tener que comunicar la misma a la otra parte por cualquier medio, ya sea digital o físico, es un punto de falla muy grande.
Actualmente, gracias a los ordenadores e internet, podemos utilizar la criptografía con clave pública que es un gran avance en esta área.
Con la clave pública de la persona que va a recibir el mensaje podemos encriptar el mensaje de tal forma que solo aquella persona con la clave privada que hace pareja con la pública puede leer.
Esto lo podemos encontrar en la tecnología SSL. Aquí la información es encriptada y enviada al servidor, el cual tiene en su poder la clave privada para realizar la desencriptación. Un proceso que nosotros no vemos, pero que se ejecuta por detrás cuando navegamos webs seguras como esta.
Esta tecnología también se encuentra presente en las criptomonedas, cuando enviamos transacciones y estas solo pueden ser utilizadas por aquella persona con la clave privada correspondiente.
Actualmente, las formas más comunes de encriptación son:
- Encriptación asimétrica: en el ejemplo de la clave pública utilizada para encriptar y la clave privada para desencriptar, vemos que la encriptación va hacia un solo lado. Donde la información viaja desde el emisor hasta el receptor.
- Encriptación simétrica: aquí cada parte tiene una clave que puede ser usada para encriptar y desencriptar. Esto es perfecto para establecer un canal de comunicación en donde ambas partes envían y reciben información de manera segura.
Entre estos dos ejemplos, la encriptación asimétrica suele ser más segura. Esto se debe a su naturaleza de un solo camino. Y es justamente la que utilizan criptomonedas como Bitcoin.
¿Qué es el hashing?
El hashing es la práctica de usar un algoritmo para mapear información de cualquier tamaño en una de tamaño fijo. Este resultado es lo que se conoce como valor hash.
Mientras que la encriptación es una función de dos caminos, el hashing es una función de un solo camino. Si bien es técnicamente posible revertir un hashing, la cantidad de poder computacional necesario lo vuelven poco práctico.
Mientras que la encriptación tiene la finalidad de proteger la información durante su viaje, el hashing es la forma de verificar que un archivo o pieza de información no ha sido alterada, que es auténtica.
Su funcionamiento permite que, sin importar la información que induzcamos en la función, el resultado siempre tiene la misma longitud.
Por ejemplo, si usamos SHA-256, la salida siempre será un hash de 256 bits, que usualmente es representado con 64 caracteres hexadecimales.
Cada valor de hash es único. Si dos archivos diferentes produce el mismo hash se lo conoce como colisión y ocasiona que el algoritmo deje de ser útil.
Veamos un ejemplo de hashing para entender mejor como es que funciona este asunto.
Digamos que queremos firmar digitalmente un software y permitir que cualquiera lo descargue desde nuestro sitio web. Para lograrlo, vamos a crear un hash del script o ejecutable que firmamos.
Así, cuando un usuario descargue el software puede verificar que el hash producido de lo que descargo es el mismo que el que nosotros proporcionamos en la web.
En caso de que sea iguales, sabemos que el archivo no ha sido alterado durante la descarga. Sin embargo, en caso de ser diferentes, entonces el software ya no es el mismo y ha sido modificado adrede o no.
¿Qué es el salting?
Salting es un concepto que por lo general está vinculado al hashing de contraseñas. En esencia, es un valor único que puede ser agregado al final de la contraseña para crear un hash nuevo.
En el salting, este valor adicional se lo conoce como salt (sal, en español).
Esto aporta una capa extra de seguridad al proceso de hashing, especialmente en contra de la fuerza bruta.
La fuerza bruta es un ataque donde un ordenador o conjunto de ellos intentan todas las combinaciones posibles de caracteres hasta encontrar la contraseña.
La idea es que al agregar el salt al final de la contraseña hacemos que el hash sea más difícil de romper. Veamos un ejemplo para entenderlo.
Si tenemos una contraseña como esta:
1X5ZDKG93JDNFFS8
Si agregamos un salt con la palabra SALT, esto lo hacemos antes de generar el hash:
1X5ZDKG93JDNFFS8SALT
Así obtenemos un hash completamente diferente al que obtendríamos sin la palabra SALT, o cualquier otra que hayamos elegido.
Es que cuando utilizamos una función de hashing, cualquiera variación, por más mínima que sea, genera un resultado completamente diferente.
Ahora un atacante podría hacer muchas pruebas para intentar encontrar la contraseña correcta si conociera el valor de hash, pero al no conocer el SALT, no importa si encontró la correcta, ya que no le daría nunca el mismo hash.
Tendría que conocer el SALT y agregarlo a cada contraseña antes de hacer el hashing y comprobar.
¿Cuál es la diferencia?
La encriptación es una función de dos vías o caminos. Encriptamos la información con la intención de poder desencriptarla luego.
Por tanto, utilizamos la encriptación cuando es importante que la otra parte pueda hacer uso de ella desencriptándola. Como cuando enviamos una transacción y le entregamos el poder a esa parte para que pueda hacer uso de las criptomonedas.
Cuando creamos un hash no nos interesa ocultar la información, pero si alguien tiene esa misma información, y la pasa por el mismo algoritmo de hashing, debería obtener el mismo resultado. Esto nos permite verificar que la información no ha sido alterada o modificada en el camino.
El hashing es perfecto para crear una prueba de trabajo en la cual debemos demostrar un cierto esfuerzo. Pero a su vez es necesario que un tercero pueda corroborar que hemos realizado ese esfuerzo sin tener que pasar por todo el proceso de nuevo. Por eso el hashing es usado en la minería.
Al final, la diferencia radica en que el hashing no puede ser revertido y tampoco nos interesa que lo sea, mientras que la encriptación sí.
Resumen
- La encriptación es una función de dos vías, donde la información es codificada de tal manera que puede ser desencriptada luego.
- El hashing es una función de una vía, donde la información tiene una longitud preestablecida. El hashing es utilizado principalmente para autenticación.
- El salting es un paso extra en el hashing, asociado usualmente con el hashing de contraseñas, donde se agrega un valor extra al final de la contraseña para cambiar el hash que produce.
Agrega un Comentario