Criptografía Hash para Firma Electrónica
Dr. Luis A. Lizama Pérez
• Firma Electrónica
• Función Hash
• Firma de Una Sola Vez (OTS)
• Cadena Hash + S/Key
• HMAC
• Protocolo básico de Firma Electrónica Hash
• Conclusiones
Una firma digital es un método que permite garantizar la integridad de un
documento y se puede relacionar de manera única al firmante con su firma,
ya que realiza ésta con la llave privada y únicamente el firmante posee esa
llave, esto se traduce en que se verifica la autenticidad del firmante.
No es una firma digital:
– Una firma digitalizada (una firma manuscrita escaneada)
– Una contraseña o password
– Un sistema biométrico
– Un sistema de autenticación: este requisito solo no alcanza
– Una firma electrónica
– Un documento encriptado (solo se garantiza la confidencialidad)
Firma Electrónica
Un nuevo protocolo de firma electrónica utiliza funciones Hash que
brindan propiedades como no repudio, integridad y autenticación.
Las funciones hash son de gran utilidad a la hora de realizar una firma
digital, ya que gracias a ella se disminuyen y descartan cálculos que
retardarían la operación.
.
Firma Electrónica
Aritmética Modular
RSA (Rivest-Shamir-Adleman)
• Produce una firma digital mediante un
par de números primos grandes
ECC (Criptografía de Curva Elíptica)
• Problemas de curva elíptica de
logaritmos discretos
ElGamal
• Deriva de Diffie-Hellman y se basa en el
problema de Logaritmo Discreto
Algoritmos de Firma Digital con Aritmética Modular y Criptografía HASH
Firma Electrónica
Firma Electrónica
Las computadoras cuánticas son cripto analizadores de los algoritmos de aritmética modular
Criptografía HASH
OTP (OneTime Password)
• Contraseña instantánea. Se utilizan una
contraseña distinta cada vez que se
autentica
OTS (One Time Signature)
• Utiliza funciones de un solo sentido
(hash)
TOTP (Time-based One-Time Password)
• Combina una clave secreta con la fecha
y hora
OTS con Árboles de Merkle
• Permite firmar un largo número de
mensajes utilizando una única firma
convencional
Firma Electrónica
AlgoritmoTiempo de
ejecución (mseg)
192-AES encriptado/decriptado 0.008
192-AES CMAC 0.008
SHA-256 0.007
RSA 2048 firma 312.5
RSA 2048 verificación 9.1
DSA firma 91.7
DSA verificación 111.1
Estadísticas de tiempo de ejecución de algoritmos de seguridad utilizando un
microprocesador de 600 MHz
Tamaño de mensaje 42 bytes.
Firma Electrónica (comparación)
Es un proceso que permite a cada parte estar segura de que los mensajes
proceden de su interlocutor.
Token RSA
Autenticación
Una función hash puede definirse como
una función que recibe a su entrada un
conjunto de bits de longitud arbitraria, al
cual se le conoce como mensaje, y es capaz
de generar su representación en un
conjunto de bits de longitud preestablecida.
A esta representación se le llama código
hash o resumen del mensaje y se expresa
como f(x).
Mensaje o bloc de datos x (tamaño variable)
Valor Hash h
(tamaño fijo)
Función Hash, h=f(x)
Función Hash
Propiedades Descripción
Tamaño del mensaje de entrada
𝒇 puede ser aplicada a un bloque de datos
de cualquier tamaño.
Tamaño fijo de salida𝒇 produce una salida de longitud fija.
Eficiencia
Calcular 𝒇(𝒙) es relativamente fácil para
cualquier 𝒙 dado.
Propiedad de un solo sentido
Para cualquier valor hash dado 𝒉, es
computacionalmente imposible encontrar 𝒙tal que 𝒇 𝒙 = 𝒉
Resistencia a colisión simple
Para cualquier bloque dado 𝒙, es
computacionalmente imposible encontrar
𝒚 ≠ 𝒙 con 𝒇 𝒚 = 𝒇(𝒙)
Resistencia a colisión fuerte
Es computacionalmente imposible
encontrar cualquier par (𝒙, 𝒚) de tal
manera que 𝒇 𝒙 = 𝒇(𝒚)
Función Hash
MENSAJE HOLA
Bytes 48:4f:4c:41
MD5 C6f00988430dbc8e83a7bc7ab5256346
SHA-1 261c5ad45770cc14875c8f46eaa3eca42568104a
SHA-256 73c3de4175449987ef6047f6e0bea91c1036a8599b43113b3f990104ab294a47
SHA-384 11531a8812fbd738d15183de470db493260b3370beaeffcfaf6d2702a62c09375c7
e5afbd64daf3e7cc233f641f7b34f
SHA-512 5cf58927b41378bcc076b26b3b850a66ebcec3ace74f6b949da5405721dd39488a
238f5afff793b5125038bb1dd7184c1c11c47f4844d1ccbb310c9c75893b65
Algoritmos Hash
𝑥𝑖 =ℎ(𝑛11) ℎ(𝑛12) ℎ 𝑛13 …
ℎ(𝑛21) ℎ(𝑛22) ℎ 𝑛23 …
𝑦𝑖 =𝑛11 𝑛12 𝑛13 …𝑛21 𝑛22 𝑛23…
𝑛𝑖𝑗 : número aleatorio
𝑥𝑖 : llave pública
𝑦𝑖 : llave privada
𝑚 : mensaje (cadena de caracteres)
A B
𝑚
OneTime Signature
ℎ(𝑚)= 0 1 1…
A B
𝑚,𝑛11 − − …− 𝑛22 𝑛23…
A B
𝑥𝑖
𝑛11 − − …− 𝑛22 𝑛23…
→ℎ(𝑛11) − − …
− ℎ(𝑛22) ℎ 𝑛23 …
h(𝑚)= 0 1 1… →𝑛11 − − …− 𝑛22 𝑛23…
ℎ(𝑚)= 0 1 1…
𝑥𝑖 =ℎ(𝑛11) ℎ(𝑛12) ℎ 𝑛13 …
ℎ(𝑛21) ℎ(𝑛22) ℎ 𝑛23 …
OneTime Signature
1,1
2,1 2,2
3,1
3,2 3,33,4
ℎ(𝑥1) ℎ(𝑥2) ℎ(𝑥3) ℎ(𝑥4)
𝑦1 𝑦2 𝑦3 𝑦4
𝑥𝑖 =ℎ(𝑛11) ℎ(𝑛12) ℎ 𝑛13 …
ℎ(𝑛21) ℎ(𝑛22) ℎ 𝑛23 …
𝑦𝑖 =𝑛11 𝑛12 𝑛13…𝑛21 𝑛22 𝑛23…
A B
𝑠𝑖𝑔, 𝑥𝑖 , ℎ𝑖
𝑠𝑖𝑔 = 𝑚,𝑛11 − − …− 𝑛22 𝑛23…
𝑥𝑖 : llaves públicas
𝑦𝑖 : llaves privadas
𝑚 : mensaje
Llave Pública de Alice
OneTime Signature
Una cadena HASH es una secuencia de valores derivados
consecutivamente de una función hash y un valor inicial.
Debido a las propiedades de la función hash, es relativamente fácil
calcular sucesivamente valores encadenados (mineros de Bitcoin).
Cadena Hash
Algoritmo MD5
Cadena Hash
• Hacer que los passwords que viajan a través de la red en
texto claro sean inservibles para cualquier intruso.
OTP passwords de “una sola vez”.
S/Key Passwords de Una Sola Vez
Servidor Clientesemilla
texto claro
semilla ‘+’ password
MD4
8 bytes 8 bytes
8 bytes
8 bytes
password s
X-OR
La secuencia de N passwords desechables se genera de la siguiente manera:
p0 = f N(s)
p1 = f N - 1(s)
pi = f N - i (s)
S/Key Passwords de Una Sola Vez
Ejemplo, N = 5
p0 = f 5 (s) = f (p1)
p1 = f 4 (s) = f (p2)
p2 = f 3 (s) = f (p3)
p3 = f 2 (s) = f (p4)
p4 = f 1(s) = p4
pi = f (pi+1)
S/Key Passwords de Una Sola Vez
HMACmensaje
Clave
HASH
HMAC
HMAC“Hola Mundo”
c6f00988430dbc8e83a7bc7ab5256346
637bdadfd979dcc17a0b339f3302e738cbeaf578
HMAC
HMAC𝑚
𝑓𝑁𝐴−1(𝑋𝐴)
< 𝑚 >𝑓𝑁𝐴−1
Protocolo básico de Firma Electrónica
26
𝒇 : función Hash
𝑿: Semilla
𝑵: Longitud de la cadena Hash
𝒇𝑵(𝑿) : llave pública
𝒇𝑵−𝒋(𝑿) : llave privada
𝟏 ≤ 𝒋 ≤ 𝑵 − 𝟏
𝑿 𝒇𝟏(𝑿) 𝒇𝟐(𝑿) … 𝒇𝑵−𝒋(𝑿) 𝒇𝑵(𝑿)
Protocolo básico de Firma Electrónica
𝑋𝐴 , 𝑋𝐵 Números aleatorios (semillas)
𝑁𝐴 , 𝑁𝐵 Número de veces que se aplica la función hash
𝑓𝑁𝐴(𝑋𝐴) Llave pública de A
𝑓𝑁𝐴−1 𝑋𝐴 , 𝑓𝑁𝐴−2 𝑋𝐴 , … Llaves privadas de A
𝑓𝑁𝐵(𝑋𝐵) Llave pública de B
𝑓𝑁𝐵−1 𝑋𝐵 , 𝑓𝑁𝐵−2 𝑋𝐵 , … Llaves privadas de B
𝑓 función hash
𝑚 mensaje
< 𝑚 >𝑓𝑁𝐴−1 función HMAC
Protocolo básico de Firma Electrónica
Protocolo básico de Firma Electrónica
Protocolo básico de Firma Electrónica
Protocolo básico de Firma Electrónica
Protocolo básico de Firma Electrónica
Verificar archivos recibidos
Se busca el archivo y se verifica la firma.
El archivo recibido está firmado
La tecnología Hash es una herramienta criptográfica que puede ser usada
para implementar servicios de Firma Electrónica en dispositivos móviles.
El sistema no es dependiente de una función Hash pero hasta ahora es
computacionalmente difícil romper las funciones Hash.
Conclusiones
Gracias!!!