Está en la página 1de 10

HASH

Las funciones Hash (también conocidas como funciones resumen) son funciones que,
utilizando un algoritmo matemático, transforman un conjunto de datos en un código
alfanumérico con una longitud fija. Da igual la cantidad de datos que se utilice (muchos o
pocos), el código resultante tendrá siempre el mismo número de caracteres.

Conjunto de datos
Cuando nos referimos a un conjunto de datos, puede ser cualquier tipo de contenido
digital. Ya sean textos, fotografías, video, música… Lo que tendremos que tener en cuenta
es el formato de los archivos. Aunque un texto sea exactamente igual en formato .pdf y
.docx, sus códigos alfanuméricos o hashes serán diferentes.

Algoritmo matemático y código alfanumérico


El termino Hash proviene del inglés y significa “picadillo”. En consonancia con este
significado, el algoritmo matemático “pica”, “trocea” y “mezcla” el conjunto de datos y
crea un nuevo código con una longitud indicada. Cuando hablamos de funciones Hash,
hacemos referencia a diferentes algoritmos matemáticos de resumen. Por tanto, no existe
una sola función de Hash, sino que encontramos una pluralidad de ellas. Entre las
funciones más conocidas encontramos las denominadas SHA-2 (Secure Hash Algorithm).
SHA-2 se compone de 4 funciones: SHA-224; SHA-256, SHA-384 y SHA_512. Cada una de
ellas da un Hash diferente para un mismo conjunto de datos, y la longitud del Hash es de
224, 256, 384 y 512 bits dependiendo de la función elegida.

Por norma general, los Hashes son representados en código alfanumérico hexadecimal.
Por tanto, los 256 bits del SHA-256, nos entrega un código alfanumérico de 64 caracteres.

Una de las principales características de las funciones Hash es que cada conjunto de datos
al que se le aplica la función nos dará un hash único, por muy pequeña que sea la
variación en los datos.

La otra característica principal de los Hashes es la prácticamente imposibilidad de obtener


el conjunto de datos a partir del código alfanumérico. Es decir, es una función de solo
sentido.
Utilidades del Hash
Las funciones Hash y los códigos alfanuméricos que generan tienen muchas utilidades. En
este post no indicaremos todas y cada una de las funcionalidades, pero os indicamos
algunas de ellas.

El Hash es muy utilizado en la gestión de los identificadores y contraseñas. Cuando una


persona accede a un Saas, el sistema debe comprobar previamente que el usuario y la
contraseña introducidas son correctas para poder acceder al servicio. Para que exista un
mayor nivel de seguridad, el sistema no guarda la contraseña, sino que guarda el Hash de
la contraseña. Y, por tanto, cuando introducimos nuestra contraseña para acceder, el
sistema calcula el Hash de la contraseña y lo compara con el Hash guardado en el sistema.
Si ambos coinciden, permitirá el acceso. Esta es la razón por la cual los sistemas de
internet no pueden devolverte la contraseña olvidada, porque no la tienen. Deberás
generar una nueva contraseña, para que se calcule el Hash y el sistema la guarde.

Otra de las utilidades de las funciones Hash es determinar de forma rápida la


inalterabilidad de un documento o archivo. Como cada documento genera un Hash único
(como una matrícula de coche), si un documento ha sido alterado su Hash será diferente
al anterior. Esta misma función permite una trazabilidad de los documentos o archivos. Al
tener un identificador único, se podrán identificar cualquier copia del documento o
archivo.

Por último, destacar la funcionalidad de las funciones Hash en el entorno blockchain,


función que permite el sistema se cerrado de bloques y el estampado de documentos.

Ejemplos de funciones Hash

MD5
Es una función hash de 128 bits. Como todas las funciones hash, toma unos determinados
tamaños a la entrada, y salen con una longitud fija (128bits). El algoritmo MD5 no sirve
para cifrar un mensaje. La información original no se puede recuperar, ya que está
específicamente diseñado para que a partir de una huella hash no se pueda recuperar la
información. Actualmente esta función hash no es segura utilizarla, nunca se debe usar.

SHA-1
Es parecido al famoso MD5, pero tiene un bloque de 160bits en lugar de los 128bits del
MD5. La función de compresión es más compleja que la función de MD5, por tanto, SHA-1
es más lento que MD5 porque el número de pasos son de 80 (64 en MD5) y porque tiene
mayor longitud que MD5 (160bits contra 128bits).

SHA-1 es más robusto y seguro que MD5, pero ya se han encontrado colisiones, por tanto,
actualmente esta función hash no es segura utilizarla, nunca se debe usar.
SHA-2
Las principales diferencias con SHA-1 radica en en su diseño y que los rangos de salida han
sido incrementados. Dentro de SHA-2 encontramos varios tipos, el SHA-224, SHA-256,
SHA-384 y SHA-512. El más seguro, es el que mayor salida de bits tiene, el SHA-512, que
tiene 80 rondas (pasos), como el SHA-1 pero se diferencia de éste en:
 Tamaño de salida 512 por los 160 de SHA-1.
 Tamaño del bloque, tamaño de la palabra y tamaño interno que es el doble que
SHA-1.
Como ocurre con todos los cifrados y hash, cuanto más seguro, más lento su
procesamiento y uso, debemos encontrar un equilibrio entre seguridad y velocidad.

SHA-1
Ejemplo: 356a192b7913b04c54574d18c28d46e6395428ab
Se utiliza en muchos foros y CMS.
Longitud: 20 bytes.
Algoritmo: Igual que el sha1 () en PHP.

sha1(strtolower($username).$pass)
Ejemplo: Admin:6c7ca345f63f835cb353ff15bd6c5e052ec08e7a
Utilizados en SMF.
Longitud: 20 bytes.

sha1($salt.sha1($salt.sha1($pass)))
Ejemplo: cd37bfbf68d198d11d39a67158c0c9cddf34573b:1234
Utilizados en WoltLab BB.
Longitud: 20 bytes.

SHA-256(Unix)
Ejemplo: $5$12345678$jBWLgeYZbSvREnuBr5s3gp13vqiKSNK1rkTk9zYE1v0
Utilizados en Linux y otras similares OS.
Longitud: 55 characters.
Descripción: El hash comienza con la firma de $ 5 $, entonces ahí va la sal (hasta 8
caracteres al azar, en nuestro Ejemplos En la sal es la cadena "12345678"), entonces ahí va
uno más el carácter $, seguido por el hash actual.
Algoritmo: La verdad es que es un circuito llamado el algoritmo SHA-256 5000 veces.
Notes: [1] [2]

SHA-512(Unix)
Ejemplo:
$6$12345678$U6Yv5E1lWn6mEESzKen42o6rbEmFNLlq6Ik9X3reMXY3doKEuxrcDohKUx0O
xf44aeTIxGEjssvtT1aKyZHjs
Utilizados en Linux y otras similares OS.
Longitud: 98 caracteres.
Descripción: El hash comienza con la firma de $ 6 $, entonces ahí va la sal (hasta 8
caracteres al azar, en nuestro Ejemplos En la sal es la cadena "12345678"), entonces ahí va
uno más el carácter $, seguido por el hash actual.
Algoritmo: La verdad es que es un circuito llamado el algoritmo SHA-512 5000 veces.

¿Que son las llaves públicas y las llaves privadas?

Todos los sistemas de cifrado están basados en el concepto de clave. Una clave es la base
de una transformación, normalmente matemática, de un mensaje ordinario en un
mensaje ilegible. Durante siglos, la mayoría de los sistemas de cifrado se basaban en un
cifrado de clave privada. El cifrado de clave pública es el único reto al cifrado de clave
privada que ha aparecido en los últimos 30 años.

Cifrado de clave privada


Los sistemas de cifrado de clave privada utilizan una sola clave que comparten el
remitente y el destinatario. Ambos deben poseer la clave; el remitente cifra el mensaje
mediante la clave y el destinatario descifra el mensaje con la misma clave. Para poder
establecer una comunicación privada, tanto el remitente como el destinatario deben
mantener la clave en secreto. Este tipo de cifrado tiene características que lo hacen
inadecuado para su uso general:
 El cifrado de clave privada requiere una clave para cada par de personas que
necesitan comunicarse de forma privada. El número necesario de claves aumenta
considerablemente a medida que se incrementa el número de participantes.

 Las claves se deben compartir por pares de comunicadores, por lo que las claves se
deberán distribuir a los participantes. La necesidad de transmitir claves secretas las
hace vulnerables al robo.
 Los participantes sólo pueden comunicarse mediante un acuerdo previo. No puede
enviar un mensaje cifrado utilizable a alguien de forma espontánea. Tanto una
como la otra persona deben establecer acuerdos para comunicarse compartiendo
claves.

El cifrado de clave privada también se denomina cifrado simétrico, porque se utiliza la


misma clave para cifrar y descifrar el mensaje.

Cifrado de clave pública


El cifrado de clave pública utiliza un par de claves relacionadas matemáticamente. Un
mensaje cifrado con la primera clave debe descifrarse con la segunda clave y un mensaje
cifrado con la segunda clave debe descifrarse con la primera clave.

Cada participante en un sistema de claves públicas dispone de un par de claves. Una clave
se designa como clave privada y se mantiene secreta. La otra clave se distribuye a quien lo
desee; esta clave es la clave pública.

Cualquier usuario puede cifrar un mensaje utilizando su clave pública, pero sólo usted
puede leerlo. Cuando recibe el mensaje, lo descifra utilizando la clave privada.

De forma parecida, puede cifrar un mensaje para cualquier otro utilizando su clave pública
y, a continuación, descifrándola utilizando su clave privada. Entonces podrá enviar el
mensaje de forma segura a través de una conexión no segura.

Este tipo de cifrado tiene características que lo hacen muy adecuado para su uso general:
 El cifrado de clave pública sólo requiere dos claves por participante.

 La necesidad de mantener el secreto es más fácil de cumplir: únicamente debe


mantenerse secreta la clave privada y puesto que no necesita compartirse, es
menos vulnerable al robo en la transmisión que la clave compartida en un sistema
de claves simétricas.

 Las claves públicas pueden publicarse, lo que elimina la necesidad de compartir


previamente una clave secreta antes de la comunicación. Cualquiera que conozca
la clave pública puede utilizarla para enviar un mensaje que sólo el usuario
implicado puede leer.

El cifrado de clave pública también se denomina cifrado asimétrico, porque no puede


utilizarse la misma clave para cifrar y descifrar el mensaje. A cambio, se utiliza una clave
de un par de claves para deshacer el trabajo del otro.
Con el cifrado de clave simétrica, debe ir con cuidado con las claves robadas o
interceptadas. En el cifrado de clave pública, en el que cualquier puede crear un par de
claves y publicar la clave pública, el reto consiste en verificar que identidad del propietario
de la clave pública. Nada impide que un usuario cree un par de claves y publique la clave
pública bajo un nombre falso. El propietario listado de la clave pública no puede leer
mensajes que están cifrados con dicha clave porque el propietario no posee la clave
privada correspondiente. Si el creador de la clave pública falsa puede interceptar estos
mensajes, dicha persona puede descifrar y leer mensajes que están pensados para alguien
más. Para contrarrestar el potencial de claves olvidadas, los sistemas de claves públicas
proporcionan mecanismos para validar claves públicas e información adicional con
certificados digitales y firmas digitales.

Esteganografia

Actualmente el estegoanálisis estudia la detección de mensajes ocultos en diversos


medios como protocolos TCP, telofonía IP, videos, archivos de sonido o documentos de
texto o simplemente un texto plano. En muchos casos de terrorismo y narcotráfico se ha
detectado que los delincuentes utilizaban mensajes con técnicas de estenografía para
guardar su información, pasando por alto a las agencias de inteligencia y de ciberdelitos.
Otro uso poco ético y que cada año tiene un mayor impacto está vinculado a la fuga de
información en entornos corporativos.
¿Esteganografía o criptografía?
Si bien la esteganografía se confunde erróneamente con la criptografía, lo cual es lógico ya
que ambas son técnicas que protegen la confidencialidad de la información, ambas se
diferencian entre sí por la forma en que logran su objetivo. La esteganografía tiene como
principal diferencia la intención de que ni siquiera se perciba la información oculta, para
que de este modo permanezca segura.
Existen distintas técnicas de ocultar la información en diversos medios; la mayoría se basa
en sustituir el bit menos significativo del mensaje original por otro que contenga el
mensaje oculto.
Naturalmente, la información que se almacene de forma camuflada en los archivos tendrá
un tamaño limitado por la capacidad del archivo visible, es decir que la información oculta
no podrá superar a la magnitud de la información visible, logrando de esta manera pasar
completamente desapercibida.
La esteganografía y las comunicaciones
Dentro del mundo de Internet el protocolo TCP/IP es el más utilizado, y es perfecto para
crear canales encubiertos de comunicación, debido a que a través de las cabeceras de los
paquetes se pueden enviar datos relevantes para dos organismos que concuerde con el
protocolo encubierto.

Usando esta técnica es posible camuflar datos en peticiones de conexión, conexiones


establecidas y comunicaciones intermedias, las cuales serán el sustento para los mensajes
ocultos sin despertar ningún tipo de sospecha.
Este tipo de esteganografía ya fue visto repetidas veces en los últimos años, en algún
malware como fue el caso del gusano Waledac, o en nuevas variantes de Zeus o Lurk, con
el fin de complicar la tarea a los analistas de malware para así poder extender su ciclo de
vida.
La esteganografía en el hogar: cómo camuflar un archivo de texto en una imagen
Una de las técnicas más utilizadas para el uso hogareño está ligada a enmascarar
el backup de claves o información valiosa en una imagen. Este tipo de práctica es muy útil
a la hora de preservar la información de una posible intrusión, en la que el atacante una
vez dentro del sistema tendría un fácil acceso a los archivos, pero difícilmente podría
llegar a encontrar la información enmascarada dentro de ellos.
En este caso explicaremos cómo camuflar un archivo de texto dentro de una imagen. Para
hacerlo se necesitan básicamente tres elementos:
 Una imagen en donde ocultar la información
 Un archivo de texto, en el cual se encuentren las claves o información valiosa a
resguardar
 Una aplicación de esteganografía
Para comenzar seleccionamos la imagen. Es aconsejable que sea alguna que no llame la
atención y que sea fácilmente recordable. La siguiente es la que utilizaremos como
ejemplo:

Luego se debe generar un archivo de texto como por ejemplo un .txt o .doc conteniendo
la información importante a camuflar, como agendas, contraseñas o certificados.
Con respecto a la aplicación esteganográfica, existen muchísimas pero en este caso
mostraremos el proceso con JPHS para Windows. Normalmente el proceso es sencillo y
estándar, en términos generales las operaciones serían las siguientes: inicialmente se
carga la imagen y el texto a ocultar.
La aplicación indica que el tamaño de nuestra imagen es 940kb y el máximo del archivo a
esconder que podremos utilizar en este caso es de 141kb, el cual es bastante grande
teniendo en cuenta que se trata de un archivo de texto plano.
El siguiente paso es ingresar una contraseña, y naturalmente, es recomendable que sea
una fuerte y segura con una combinación de letras en mayúsculas, minúsculas y algún
número o símbolo.
Finalmente, se guarda la imagen con texto oculto con un nombre distinto ya que
visualmente nos será imposible detectar la diferencia con la imagen inicial. De esta forma
la información permanecerá oculta, y aunque el archivo de imagen esté a la vista, el
atacante o intruso solo percibirá una imagen de algún buen recuerdo.
Para recuperar nuestra información, la aplicación nos guiará por el camino inverso, es
decir, inicialmente cargamos la imagen, ingresamos la contraseña y finalmente, exportará
el archivo de texto con la información valiosa.
Como mencionamos anteriormente, este tipo de procesos en general se repite con todas
las herramientas, por lo tanto cuando se trabaje sobre archivos de videos o de música los
pasos serían similares.
Como es de esperar, los archivos utilizados son ciento por ciento funcionales, al igual que
lo eran antes de cargar la información oculta, por lo cual sería interesante reflexionar
sobre cuántos archivos que habitualmente vemos, escuchamos o compartimos en redes
sociales tienen mensajes ocultos. Y por otro lado, la importancia que puede tener este
tipo de técnicas a la hora de resguardar datos con el fin de mejorar la confidencialidad de
la información.

También podría gustarte