Publicado el 18 de Mayo del 2018
884 visualizaciones desde el 18 de Mayo del 2018
351,2 KB
24 paginas
Creado hace 11a (21/09/2012)
Autenticación y Firma Digital
(Tema 6)
Confidencialidad v/s integridad
• Confidencialidad
• Para lograrla se cifra el mensaje M obteniendo un
criptograma C.
• Integridad
• Para lograrla se firma un hash del mensaje h(M),
añadiendo una marca al mensaje o criptograma.
Si bien en ciertos escenarios es muy importante
mantener el secreto de la información, si ésta lo
requiere, en muchos casos tiene quizás más
trascendencia el poder certificar la autenticidad
entre cliente y servidor como ocurre en Internet.
© Jorge Ramió Aguirre Madrid (España) 2006
Primer escenario de integridad
Escenario de desconfianza
1ª Solución. Uso de una
tercera parte de confianza
activa. Un juez tendrá una
clave KA con la que se
comunica con A y una
clave KB con la que se
comunica con B.
Usará criptografía simétrica
© Jorge Ramió Aguirre Madrid (España) 2006
A envía un mensaje M a B:
A cifra M con la clave KA ⇒
EKA(M) y lo envía al juez.
Este comprueba la integridad
de A, lo descifra y envía a B,
cifrado con KB, el mensaje M,
la identidad de A y la firma
EKA(M): EKB{M, A, EKA(M)}.
Ambos confían en el juez y
ante cualquier duda éste puede
desvelar la identidad de A
descifrando EKA(M).
Segundo escenario de integridad
Escenario de desconfianza
2ª Solución. Uso de una
tercera parte de confianza
no siempre activa. Esta
parte sólo actúa cuando se
produce un conflicto entre
los interlocutores, quienes
se autentican a través de
ella que les certifica.
Usará criptografía asimétrica
© Jorge Ramió Aguirre Madrid (España) 2006
En este caso la
figura del juez se
conoce como una
Autoridad de
Certificación
Habrá una aceptación del
sistema de autenticación
por convencimiento
propio y la confianza en
los algoritmos.
Autenticación con sistemas asimétricos
Al existir una clave pública y otra privada que
son inversas, se autentica el mensaje y al emisor.
Permite la firma digital, única para cada mensaje
Problema:
Los sistemas de cifra asimétricos son muy lentos y el mensaje
podría tener miles o millones de bytes ...
Solución:
Se genera un resumen del mensaje, representativo del mismo, con
una función hash imposible de invertir. La función hash comprime
un mensaje de longitud variable a uno de longitud fija y pequeña.
© Jorge Ramió Aguirre Madrid (España) 2006
Características de una firma digital
Requisitos de la firma digital:
a) Debe ser fácil de generar.
b) Será irrevocable, no rechazable por su propietario.
c) Será única, sólo posible de generar por su propietario.
d) Será fácil de autenticar o reconocer por su propietario y los
usuarios receptores.
e) Debe depender del mensaje y del autor.
Son condiciones más fuertes
que la de una firma manuscrita.
© Jorge Ramió Aguirre Madrid (España) 2006
Esta última
propiedad es
muy importante
pues protege la
falsificación de
un mensaje
Firma digital RSA de A hacia B
Clave Pública (nA, eA) Clave Privada (dA)
Algoritmo:
Rúbrica: rAh(M) = h(M)dA mod nA
A envía el mensaje M en claro (o cifrado) al destinatario B
junto a la rúbrica: {M, rAh(M)}
Adela
El destinatario B tiene la clave pública eA,nA de A
y descifra rAh(M) ⇒ {(h(M)dA)eA mod nA}
obteniendo así h(M). Como recibe el mensaje M’,
calcula la función hash h(M’) y compara:
Si h(M’) = h(M) se acepta la firma.
Benito
© Jorge Ramió Aguirre Madrid (España) 2006
Valores y tamaños típicos de firmas
• En los siguientes ejemplos, por limitación del tamaño de los
primos elegidos, se firmarán sólo bloques de una cantidad
determinada de bits en función del cuerpo de trabajo.
• No obstante, en los sistemas reales esto no es así puesto que
las funciones hash ya vistas entregarán -por lo general-
resúmenes comprendidos entre 128 y 160 bits y, por otra
parte, el cuerpo de trabajo de la cifra asimétrica para la
firma digital será como mínimo de 512 bits (si bien en la
actualidad se recomienda al menos 1.024). Por lo tanto el
resumen que se firma es menor que el cuerpo de cifra o, lo
que es lo mismo, es parte del conjunto de restos del grupo.
© Jorge Ramió Aguirre Madrid (España) 2006
Ejemplo de firma digital RSA (B → A)
Hola. Te envío el documento. Saludos, Beni.
Benito
Sea h(M) = F3A9 (16 bits)
Adela
Claves Benito
nB = 65.669
eB = 35, dB = 53.771
216 < 65.669 < 217
Forzaremos firmar
bloques de 16 bits
Claves Adela
nA = 66.331
eA = 25, dA = 18.377
Firma
h (M) = F3A916 = 62.37710
rh(M) = h(M)dB mod nB
rh(M) = 62.37753.771 mod 65.669 = 24.622
Benito envía el par (M, r) = (M, 24.622)
Nota: los primos
que usa Benito
son 97, 677 y
Adela 113, 587
© Jorge Ramió Aguirre Madrid (España) 2006
Comprobación la firma RSA por A
Claves Benito
nB = 65.669
eB = 35, dB = 53.771
Claves Adela
nA = 66.331
eA = 25, dA = 18.377
Teníamos que: h (M) = F3A916 = 62.37710
Adela
Benito
rh(M) = h(M)dB mod nB rh(M) = 62.37753.771 mod 65.669 = 24.622
Benito había enviado el par (M, r) = (M, 24.622)
Adela recibe un mensaje M’ junto con una rúbrica r = 24.622:
• Calcula reB mod nB = 24.62235 mod 65.669 = 62.377.
• Calcula el resumen de M’ es decir h(M’) y lo compara con h(M).
• Si los mensajes M y M’ son iguales, entonces h(M) = h(M’) y se
acepta la firma como válida.
• NOTA: No obstante, h(M) = h(M’) no implica que M = M’.
© Jorge Ramió Aguirre Madrid (España) 2006
Firma digital ElGamal de A hacia B
ElGamal: El usuario A generaba un número
aleatorio a (clave privada) del cuerpo p. La
clave pública es αa mod p, con α generador.
Adela
Algoritmo de firma:
1º El usuario A genera un número aleatorio h, que será primo
Firma: (r, s)
relativo con φ(p): h / mcd {h, φ(p)} = 1
2º Calcula h-1 = inv {h, φ(p)}
3º Calcula r = αh mod p
4º Resuelve la siguiente congruencia:
M = a∗r + h∗s mod φ(p) ∴
s = (M - a∗r)∗inv[h,φ(p)] mod φ(p)
© Jorge Ramió Aguirre Madrid (España) 2006
Comprobación de firma ElGamal por B
rs mod p y (αa)r mod p
Algoritmo comprobación de firma:
1º El usuario B recibe el par (r, s) y calcula:
2º Calcula k = [(αa)r ∗ rs] mod p
3º Como M = (a∗r + h∗s) mod φ(p) y α es una raíz
Como r era igual a αh mod p entonces:
k = [(αar∗αhs] mod p = α(ar + hs) mod p = αβ mod p
Se acepta la firma
Benito
Conoce: p y (αa) mod p
primitiva de p se cumple que:
αβ = αγ ssi β = γ mod (p-1)
4º Comprueba que k = αM mod p
Si k = [(αa)r ∗ rs] mod p
es igual a αM mod p ...
© Jorge Ramió Aguirre Madrid (España) 2006
Ejemplo de firma ElGamal (B → A)
¡Hola otra vez! Soy Benito de nuevo. Saludos.
Benito
Firma
Sea h(M) = A69B (16 bits)
Claves Benito
pB = 79.903 α = 10
αb mod p = 3.631
b = 20, h = 31
216 < 79.903 < 217
Forzaremos firmar
bloques de 16 bits
Adela
1) h-1 = inv[h, φ(p)] = inv (31, 79.902) = 5.155
2) r = αh mod p = 1031 mod 79.903 = 11.755
3) s = [h(M) - b∗r]∗[inv(h,φ(p)] mod φ(p) h(M) = A69B16 = 42.65110
4) s = [42.651-20∗11.755]∗5.155 mod 79.902
5) s = 68.539
(r, s) = (11.755, 68.539)
Luego, la firma será
© Jorge Ramió Aguirre Madrid (España) 2006
Comprobación de firma ElGamal por A
Claves Benito
pB = 79.903 α = 10
αb mod p = 3.631
b = 20, h = 31
Benito
h(M) = A69B = 42.651
Adela
Adela recibe el par (r, s) = (11.755, 68.539)
Comprobación de la firma:
1) rs mod p = 11.75568.539 mod 79.903 = 66.404
2) (αb)r mod p = 3.63111.755 mod 79.903 = 12.023
3) (αb)r ∗ rs mod p = (12.023 ∗ 66.404) mod 79.903 = 64.419 = k
4) αh(M) mod p = 1042.651 mod 79.903 = 64.419
Como hay igualdad
se acepta la firma
© Jorge Ramió Aguirre Madrid (España) 2006
Importancia de α en la firma de ElGamal
Claves Benito
pB = 79.903 α = 10
αb mod p = 3.631
b = 20, h = 31
Benito
α = 10 es un generador
del cuerpo p = 79.903
puesto que:
1039.951 mod 79.903 = 79.902
1026.634 mod 79.903 = 71.324
103.474 mod 79.903 = 2.631
10414 mod 79.903 = 41.829
p-1 = 79.902 = 2∗32∗23∗193
q1 = 2; q2 = 3; q3 = 23; q4 = 193
y se cumple 10(p-1)/qi mod p ≠ 1
Si se elige α = 11 que no es raíz, para el exponente 39.951 se
obtiene el valor 1. No nos servirá para la firma porque será
imposible comprobarla mediante la ecuación k = αM mod p.
© Jorge Ramió Aguirre Madrid (España) 2006
Estándares de firma digital
El peor inconveniente de la firma propuesta por ElGamal es que
duplica el tamaño del mensaje M al enviar un par (r, s) en Zp y φ(p).
No obstante, se solucionará con el algoritmo denominado DSS.
1991: National Institute of Standards and Technology (NIST)
propone el DSA, Digital Signature Algorithm, una
variante de los algoritmos de ElGamal y Schnoor.
1994: Se establece como estándar el DSA y se conoce como
DSS, Digital Signature Standard.
1996: La administración de los Estados Unidos permite la
exportación de Clipper 3.11 en donde viene inmerso el
DSS, que usa una función hash de tipo SHS, Secure
Hash Standard.
© Jorge Ramió Aguirre Madrid (España) 2006
Digital Signature Standard DSS
Parámetros públicos de la firma:
• Un número primo p (512 bits < p < 1024 bits)
• Un número primo q (160 bits) divisor de p-1
• Un generador α “de orden q” del grupo p
¿y eso qué es?
Generador de orden q es aquella raíz α en el cuerpo Zp de
forma que q es el entero más pequeño que verifica:
αq mod p = 1 Así, para todo t: αt = αt (mod q) mod p
Elección de parámetros: primero se busca el primo p, luego un
primo q que sea divisor de (p-1) y luego un valor h en p, de
forma que si α = h(p-1)/q mod q ≠ 1, éste será el generador.
© Jorge Ramió Aguirre Madrid (España) 2006
Elección de parámetros en DSS
• Elegir un número primo 2159 bits < q < 2160 bits.
• Elegir 0 ≤ t ≤ 8 y enc
Comentarios de: Autenticacion y Firma Digital (0)
No hay comentarios