Tı́tulo Propio de la
Seguridad de la Información
P4. OpenSSL y HASH
Módulo: Protección de Redes y Sistemas
Máster en Ciberseguridad
UCyS-UGR 2021/2022
Seguridad de la Información – Tema P4 .1.
Tı́tulo Propio de la
1. Funciones hash en OpenSSL - I
• OpenSSL implementa de forma nativa varias funciones
Hash, incluidos los estándares SHA-1, SHA-2 y SHA-3.
• Para trabajar con funciones hash, empleamos el comando
$> openssl dgst
• También es posible acceder a una función hash concreta
empleando su nombre como comando. De esta forma,
Módulo: Protección de Redes y Sistemas
$> openssl dgst -md5
y
Máster en Ciberseguridad
$> openssl md5
UCyS-UGR 2021/2022
son equivalentes.
Seguridad de la Información – Tema P4 .2.
Tı́tulo Propio de la
1. Funciones hash en OpenSSL - II
• Dado que una de las aplicaciones de las funciones Hash es
su uso en firma digital, los comandos anteriores incluyen
las opciones de firmar y verificar. En este caso, las claves
privada/pública deben ser indicadas. OpenSSL selecciona
el algoritmo de firma/verificación adecuado para la clave
empleada.
• Los usos de las funciones hash son muy variados. Vamos a
Módulo: Protección de Redes y Sistemas
encontrar en OpenSSL varias opciones destinadas a dar
formato a la salida de la manera más adecuada al uso
Máster en Ciberseguridad
UCyS-UGR 2021/2022
correspondiente. Por ejemplo, para labores de
firma/verificación la salida tiene que ser binaria.
Seguridad de la Información – Tema P4 .3.
Tı́tulo Propio de la
2. Puzzles con funciones hash - I
• Una función Hash H se dice amigable para puzzles si dada
cualquier posible salida y ∈ {0, 1}n de n bits, si elegimos
k ∈ {0, 1}m , no es posible encontrar un x ∈ {0, 1}∗ tal
que H(k|x) en un tiempo significativamente menor que 2n .
• Con una función Hash amigable para puzzles es posible
realizar un puzzle de búsqueda que consiste en a partir de
la función Hash H(), un valor id elegido en un conjunto
Módulo: Protección de Redes y Sistemas
homogéneo y un conjunto objetivo Y , encontrar un valor
x tal que H(id||x) ∈ Y .
Máster en Ciberseguridad
UCyS-UGR 2021/2022
• En nuestro caso, id será la concatenación de un mensaje
junto con un nonce de un solo uso.
Seguridad de la Información – Tema P4 .4.
Tı́tulo Propio de la
2. Puzzles con funciones hash - II
• Lo usual es que el conjunto Y venga dado por una cota,
es decir, y ∈ Y si y sólo si y ≤ y0 para cierto y0 .
Concretamente, y0 = 2n−b para un cierto número de bits
b. Esto quiere decir que estar en Y es equivalente a
comenzar por b ceros.
• La resistencia a preimágenes implica ser amigable para
Módulo: Protección de Redes y Sistemas
puzzles, pero no al revés. Las funciones Hash que hemos
visto son resistentes a preimágenes, por tanto pueden ser
Máster en Ciberseguridad
empleadas para puzzles de búsqueda.
UCyS-UGR 2021/2022
Seguridad de la Información – Tema P4 .5.
Tı́tulo Propio de la
3. Ejercicios - I
• Coged un archivo cualquiera de los empleados en las
prácticas anteriores. Lo denominaré <archivo>.
• Probad las diferentes opciones que dan formato a la
salida, concretamente -hex, -binary, -r, -c,
comparando las diferentes salidas y sus tamaños al calcular
los valores hash de <archivo>. Usad, para ellos dos
funciones hash con distinto tamaño de salida.
Módulo: Protección de Redes y Sistemas
• Calculad el tamaño de salida de todas las funciones hash
que aparecen en OpenSSL.
Máster en Ciberseguridad
UCyS-UGR 2021/2022
• Calculad el HMAC de <archivo> con contraseña ’0123’, y
verificad que el HMAC es correcto cambiando el archivo y la
contraseña.
Seguridad de la Información – Tema P4 .6.
Tı́tulo Propio de la
3. Ejercicios - II
• ¿Qué libro de Arturo Pérez Reverte se corresponde con el
siguiente hash?
SHA256([Link])=
[Link]
[Link]
[Link]
• ¿Es posible contestar a la pregunta anterior si agrego al
Módulo: Protección de Redes y Sistemas
tı́tulo del libro un nonce1 ?
Máster en Ciberseguridad
• Comprobad los valores hash de los archivos situados en
UCyS-UGR 2021/2022
[Link]
/stretch/bibtex2html
Seguridad de la Información – Tema P4 .7.
Tı́tulo Propio de la
3. Ejercicios - III
• Para la función SHA256, realizad, en el lenguaje de
programación que queráis, una función que tome como
entrada un texto, una cadena de 256 bits en formato
hexadecimal y un número de bits b. Creará un id que
concatene texto y cadena dados. Pegará a ese id cadenas
aleatorias x de 256 bits hasta lograr que SHA256(id||x)
tenga sus primeros b bits a cero. La salida será el id, la
Módulo: Protección de Redes y Sistemas
cadena x que haya proporcionado el hash requerido, el
valor del hash y el número de intentos llevados a cabo
Máster en Ciberseguridad
hasta encontrar el valor x apropiado.
UCyS-UGR 2021/2022
• Calculad una tabla/gráfica que vaya calculando el número
de intentos para cada valor de b.
Seguridad de la Información – Tema P4 .8.
Tı́tulo Propio de la
3. Ejercicios - IV
• Si tenemos un suceso con probabilidad ρ, el número de
repeticiones k del experimento necesario para que la
probabilidad de que ocurra el suceso sea mayor que λ es
log(λ)
k≤ .
log(1 − ρ)
Teniendo en cuenta que la probabilidad de encontrar una
salida con b bits a cero debe ser 21b , compara la gráfica
Módulo: Protección de Redes y Sistemas
anterior con la gráfica de
Máster en Ciberseguridad
$ %
UCyS-UGR 2021/2022
log( 12 )
f (b) = .
log(1 − 21b )
1
Valor aleatorio de un solo uso
Seguridad de la Información – Tema P4 .9.