1. Funciones Hash - Ing. Aldo Jiménez Arteaga

Anuncio
Criptografı́a - 2016
.
1.
Funciones Hash
Los algoritmos de cifrado
asimétricos son muy lentos y costosos computacionalmente. Serı́a
intratable el tratar de cifrar mediante alguno de estos algoritmos documentos que tengan una
longitud muy grande. Es más
conveniente cifrar mediante un
algoritmo simétrico y resguardar
la clave mediante un algoritmo
asimétrico. O bien, cifrar identificadores de los documentos.
Estos identificadores tendrán una longitud fija, de unos cuantos cientos de
bits, y podrán ser cifrados mediante el algoritmo asimétrico. Este tipo de
algoritmos se les conoce como funciones hash.
Dados los espacios de textos planos M y de cadenas de longitud
n
finita {0, 1} donde |M | n, una función hash H es una función
n
H : M → {0, 1} para identificar unı́voca (función inyectiva) y
probabilı́sticamente cualquier texto m ∈ M , resultando una caden
na imagen H (m) ∈ {0, 1} .
Toda función hash criptográficamente segura debe cumplir con
tres requisitos:
1. Resistencia de preimagen. Dado el valor y, es computacionalmente imposible encontrar x tal que H (x) = y.
2. Resistencia de segunda preimagen. Dado el valor x, es
computacionalmente imposible encontrar x0 tal que x 6= x0 y
H (x) = H (x0 ).
3. Resistencia a colisiones. Es computacionalmente imposible
encontrar H (x) = H (x0 ) donde x 6= x0 .
Los tres requisitos significan que toda función hash es irreversible (resistencia
de preimagen), que dado cualquier texto no puede obtenerse un segundo texto
con el mismo hash (resistencia de segunda preimagen) y que dada una cadena
hash no pueden encontrarse dos textos que la generen (resistencia a colisiones).
1.1.
Construcción de
Merkle-Damgård
la
Función
Hash:
Paradigma
En 1989 Ralph Merkle e Ivan Damgård probaron de manera independiente
que la construcción de funciones hash resistentes a colisiones puede basarse en
funciones de compresión para un texto de longitud fija.
Una función hash debe tener las caracterı́sticas básicas siguientes:
la entrada puede ser de cualquier tamaño.
el valor hash (salida) tiene un tamaño fijo.
estar libre de colisiones. Dadas dos cadenas como entrada A y B, no se
obtenga un mismo valor hash tal que H (A) = H (B).
irreversible; es decir, dado un valor hash H (A), no es posible encontrar
la entrada A.
rapidez y facilidad de obtener el hash.
Es posible que existan identificadores iguales para documentos diferentes, ya
que el rango de posibles salidas de la función hash es menor que el de posibles
entradas (los identificadores tienen un tamaño fijo, pero los documentos no).
Para evitar que se presente esta caracterı́stica, las funciones hash deben ser
criptográficamente seguras.
1
La definición de este tipo de funciones hash es:
Una función hash H para textos de longitud arbitraria |m| puede
construirse a partir de una función de compresiópn h de longitud
fija |n|, donde |m| |n|.
Dentro de la función se aceptan los siguiente parámetros de entrada:
un vector de inicialización, que será el bloque inicial que se mezcla con el
Ing. Aldo Jiménez Arteaga
Criptografı́a - 2016
primer bloque de texto a comprimir.
un esquema de relleno (padding) que permite formatear el texto a comprimir. Este esquema puede aplicarse en dos formas: completando el último
bloque del texto a comprimir o bien, operando todo el texto (posiblemente mediante una XOR) antes de entrar a la función de compresión.
Puede observarse que este tipo de construcciones sin similares a las funciones
NMAC de criptografı́a simétrica, ya que la función de compresión arroja una
salida que se convierte en entrada para procesar el siguiente bloque de texto.
A difrencia de las funciones MAC, las funciones hash no requieren una clave
privada para funcionar, ya que la compresión es irreversible e impide recalcular
el identificador si hay alguna modificación no autorizada del texto.
1.2.
Algoritmos de Hash: SHA-3
Varios algoritmos de hash han sido desarrollados tratando de mejorar las
versiones anteriores. Entre 2007 y 2012, el NIST lanzo una convocatoria para encontrar al nuevo algoritmo hash estándar, denominado SHA-3
(Secure Hash Algorithm). En el concurso, la función ganadora fue Keccak,
desarrollada por Guido Bertoni, John Daemen (coautor de Rijndael/AES) Michael Peeters y Guilles van Assche. Dentro de sus caracterı́sticas se encuentran:
digital debe cumplir con los siguientes requisitos:
es fácil de generar.
es irrevocable; su propietario no puede rechazarla.
es única; sólo puede generarla su propietario para cada documento que
firme.
es fácil de autenticar o reconocer por su propietario y los usuarios receptores.
depende del mensaje a firmar y del autor.
El proceso de firma digital se define a continuación:
La firma digital de un elemento del espacio de textos planos M
es un algoritmo F = (G, V ) que comprende dos funciones:
1. La generación, G (kP v , H (m)) = f, ∀m ∈ M, f ∈ F , donde
F es el espacio de firmas.
2. La verificación, V (kP b , m, f ) = r, siendo r = 0 ⇒ no y
r = 1 ⇒ sı́.
Puede observarse que la firma digital es la aplicación de un algoritmo de cifrado asimétrico, donde el orden de las claves se intercambia: la clave privada
cifra para generar un identificador de la identidad del autor, y la clave pública
descifra para corroborar dicha identidad.
se basa en la construcción Esponja, la cual absorbe el texto a resumir
mediante la operación XOR y un vector de estado.
cada estado consiste en una palabra de 64 bits dispuesta en un arreglo
de 5 × 5 posiciones.
se utilizan permutaciones mediante operaciones XOR, AND y NOT.
la longitud de las cadenas de salida puede ser de 224, 256, 384 o 512 bits.
2.
Firma Digital
En muchos casos es importante verificar la autenticidad de un documento; esta
es una de las funciones primordiales de la criptografı́a asimétrica. Al contar con
una clave pública y una privada, perteneciente a un solo usuario, se autentica
el origen y la integridad de los datos.
Puesto que es complicado trabajar documentos grandes con algoritmos
asimétricos, el proceso de firmado digital se realiza con un resumen del documento (el resultado de aplicar una función hash al documento). La firma
2
En caso que H (m) = H 0 (m) la firma es autentica y el texto ı́ntegro; si
H (m) 6= H 0 (m), entonces la firma es falsa o el texto ha sido alterado sin
autorización.
Ing. Aldo Jiménez Arteaga
Descargar