Outline
Firma digital RSA
Firma digital El Gamal
Firma digital en CE
Funciones de Hash
DSA - NIST
FIRMA DIGITAL
Juan Manuel Garc´ıa Garc´ıa
14 de octubre de 2010
Juan Manuel Garc´ıa Garc´ıa FIRMA DIGITAL
Outline
Firma digital RSA
Firma digital El Gamal
Firma digital en CE
Funciones de Hash
DSA - NIST
Firma digital RSA
Firma digital El Gamal
Firma digital en CE
Funciones de Hash
DSA - NIST
Juan Manuel Garc´ıa Garc´ıa FIRMA DIGITAL
Outline
Firma digital RSA
Firma digital El Gamal
Firma digital en CE
Funciones de Hash
DSA - NIST
Firma digital RSA
Supongamos que Alicia desea enviar un mensaje firmado
digitalmente a Bob. Para firmar el mensaje, Alicia hace lo
siguiente:
1. Alicia toma el mensaje M y calcula S = Mda (mod na).
2. Alicia env´ıa el mensaje M anex´andole la firma digital S.
Para verificar la firma digital, una vez que ha recibido el mensaje
(M, S), Bob realiza los siguientes pasos:
1. Obtiene la clave p´ublica de Alicia, (ea, na).
2. Calcula M′ = Sea (mod na).
3. Si M′ = M la firma es v´alida.
Juan Manuel Garc´ıa Garc´ıa FIRMA DIGITAL
Outline
Firma digital RSA
Firma digital El Gamal
Firma digital en CE
Funciones de Hash
DSA - NIST
Firma digital de ElGamal
El esquema de ElGamal para firmar digitalmente un mensaje es el
siguiente:
1. A genera un n´umero aleatorio h tal que MCD(h, φ(n)) = 1.
2. A calcula r ≡ αh (mod n).
3. A resuelve la congruencia m ≡ a · r + h · s (mod φ(n)).
La firma digital de A para el mensaje m es el par (r, s).
Para que B compruebe la firma de A tiene que realizar lo siguiente:
1. B calcula rs ≡ (αh)s (mod n) y (αa)r (mod n).
2. B calcula (αa)r (αh)s (mod n) y comprueba que es igual a
αm (mod n).
Juan Manuel Garc´ıa Garc´ıa FIRMA DIGITAL
Outline
Firma digital RSA
Firma digital El Gamal
Firma digital en CE
Funciones de Hash
DSA - NIST
Firma Digital en Curvas El´ıpticas
Supongamos que A desea firmar el mensaje M a enviar a B.
Entonces A debe realizar el siguiente procedimiento:
1. Usar un algoritmo de hash para calcular el valor de hash
e := H(M).
2. Seleccionar un entero aleatorio k tal que 1 ≤ k < n.
3. Calcular el punto (x1, y1) := kP y hacer r := x1 mod n.
4. Usar su clave privada para calcular s := k−1(e + rd) mod n.
5. A envia a B el mensaje M y su firma (r, s).
Juan Manuel Garc´ıa Garc´ıa FIRMA DIGITAL
Outline
Firma digital RSA
Firma digital El Gamal
Firma digital en CE
Funciones de Hash
DSA - NIST
Verificaci´on de la firma digital en CCE
Si el principal B desea verificar la firma (r, s) de A para el mensaje
M, debe realizar los siguientes pasos:
1. Obtener la clave p´ublica Q del principal A.
2. Si (r mod n) = 0 entonces rechazar la firma.
3. Calcular el valor de hash e := H(M).
4. Calcular s−1 mod n.
5. Calcular u := s−1e mod n y v := s−1r mod n.
6. Calcular al punto (x1, y1) := uP + vQ.
7. Aceptar la firma de A para el mensaje M si y solo si
(x1 mod n) = r.
Si r = 0 entonces la ecuaci´on de la firma s = k−1(e + rd) no
involucra la clave privada d, y de ah´ı la condici´on en el paso 4.
Juan Manuel Garc´ıa Garc´ıa FIRMA DIGITAL
Outline
Firma digital RSA
Firma digital El Gamal
Firma digital en CE
Funciones de Hash
DSA - NIST
Funciones de Hash
Una funci´on de hash es una funci´on que aplica a un mensaje m de
tama˜no variable, una representaci´on de tama˜no fijo del propio
mensaje, H(m), que es llamado su valor de hash. Si
H(m) = m′
entonces m′ es mucho menor que m. Por ejemplo, si m es de un
megabyte, m′ puede ser de 64 o 128 bytes.
Una funci´on de hash segura es una funci´on de hash H de modo
que para cualquier mensaje m′ es dif´ıcil encontrar una m tal que
H(m) = m′.
Las funciones de hash m´as utilizadas son las funciones MD2, MD4
y MD5, las cuales producen res´umenes de 128 bits.
Juan Manuel Garc´ıa Garc´ıa FIRMA DIGITAL
Outline
Firma digital RSA
Firma digital El Gamal
Firma digital en CE
Funciones de Hash
DSA - NIST
Firma Digital Est´andar del NIST
Digital Signature Standard, DSA
El DSA propuesto es una variante de la firma digital de ElGamal.
El protocolo es el siguiente:
Cada usuario determina los siguientes par´ametros:
1. p un n´umero primo con 2511 < p < 2512.
2. q un divisor primo de p − 1, con 2159 < q < 2160.
3. g un generador del ´unico subgrupo c´ıclico de Z∗
p de orden q.
4. Su clave privada, x, un entero tal que 0 < x < q.
5. Su clave p´ublica, y, donde y = gx (mod p).
Juan Manuel Garc´ıa Garc´ıa FIRMA DIGITAL
Outline
Firma digital RSA
Firma digital El Gamal
Firma digital en CE
Funciones de Hash
DSA - NIST
Firma Digital Est´andar del NIST
Se elabora una firma digital como sigue:
Sea H : M → Z una funci´on de hash segura, y supongamos que el
mensaje a firmar es m.
1. Se selecciona un entero aleatorio k con 0 < k < q.
2. Se calcula el valor de r := (gk(mod p))(mod q).
3. Se resuelve la congruencia H(m) ≡ −x · r + k · s (mod q)
para s.
La firma digital para el mensaje m es el par (r, s).
Juan Manuel Garc´ıa Garc´ıa FIRMA DIGITAL
Outline
Firma digital RSA
Firma digital El Gamal
Firma digital en CE
Funciones de Hash
DSA - NIST
Firma Digital Est´andar del NIST
Para verificar la firma se procede como sigue:
1. Se calcula w ≡ s−1(mod q).
2. Se calculan
u1 ≡ H(m) · w (mod q)
u2 ≡ r · w (mod q)
3. Se calcula v ≡ (gu1 yu2 (mod p))(mod q).
4. Se comprueba que v = r.
Juan Manuel Garc´ıa Garc´ıa FIRMA DIGITAL

Capítulo 7: Firma digital

  • 1.
    Outline Firma digital RSA Firmadigital El Gamal Firma digital en CE Funciones de Hash DSA - NIST FIRMA DIGITAL Juan Manuel Garc´ıa Garc´ıa 14 de octubre de 2010 Juan Manuel Garc´ıa Garc´ıa FIRMA DIGITAL
  • 2.
    Outline Firma digital RSA Firmadigital El Gamal Firma digital en CE Funciones de Hash DSA - NIST Firma digital RSA Firma digital El Gamal Firma digital en CE Funciones de Hash DSA - NIST Juan Manuel Garc´ıa Garc´ıa FIRMA DIGITAL
  • 3.
    Outline Firma digital RSA Firmadigital El Gamal Firma digital en CE Funciones de Hash DSA - NIST Firma digital RSA Supongamos que Alicia desea enviar un mensaje firmado digitalmente a Bob. Para firmar el mensaje, Alicia hace lo siguiente: 1. Alicia toma el mensaje M y calcula S = Mda (mod na). 2. Alicia env´ıa el mensaje M anex´andole la firma digital S. Para verificar la firma digital, una vez que ha recibido el mensaje (M, S), Bob realiza los siguientes pasos: 1. Obtiene la clave p´ublica de Alicia, (ea, na). 2. Calcula M′ = Sea (mod na). 3. Si M′ = M la firma es v´alida. Juan Manuel Garc´ıa Garc´ıa FIRMA DIGITAL
  • 4.
    Outline Firma digital RSA Firmadigital El Gamal Firma digital en CE Funciones de Hash DSA - NIST Firma digital de ElGamal El esquema de ElGamal para firmar digitalmente un mensaje es el siguiente: 1. A genera un n´umero aleatorio h tal que MCD(h, φ(n)) = 1. 2. A calcula r ≡ αh (mod n). 3. A resuelve la congruencia m ≡ a · r + h · s (mod φ(n)). La firma digital de A para el mensaje m es el par (r, s). Para que B compruebe la firma de A tiene que realizar lo siguiente: 1. B calcula rs ≡ (αh)s (mod n) y (αa)r (mod n). 2. B calcula (αa)r (αh)s (mod n) y comprueba que es igual a αm (mod n). Juan Manuel Garc´ıa Garc´ıa FIRMA DIGITAL
  • 5.
    Outline Firma digital RSA Firmadigital El Gamal Firma digital en CE Funciones de Hash DSA - NIST Firma Digital en Curvas El´ıpticas Supongamos que A desea firmar el mensaje M a enviar a B. Entonces A debe realizar el siguiente procedimiento: 1. Usar un algoritmo de hash para calcular el valor de hash e := H(M). 2. Seleccionar un entero aleatorio k tal que 1 ≤ k < n. 3. Calcular el punto (x1, y1) := kP y hacer r := x1 mod n. 4. Usar su clave privada para calcular s := k−1(e + rd) mod n. 5. A envia a B el mensaje M y su firma (r, s). Juan Manuel Garc´ıa Garc´ıa FIRMA DIGITAL
  • 6.
    Outline Firma digital RSA Firmadigital El Gamal Firma digital en CE Funciones de Hash DSA - NIST Verificaci´on de la firma digital en CCE Si el principal B desea verificar la firma (r, s) de A para el mensaje M, debe realizar los siguientes pasos: 1. Obtener la clave p´ublica Q del principal A. 2. Si (r mod n) = 0 entonces rechazar la firma. 3. Calcular el valor de hash e := H(M). 4. Calcular s−1 mod n. 5. Calcular u := s−1e mod n y v := s−1r mod n. 6. Calcular al punto (x1, y1) := uP + vQ. 7. Aceptar la firma de A para el mensaje M si y solo si (x1 mod n) = r. Si r = 0 entonces la ecuaci´on de la firma s = k−1(e + rd) no involucra la clave privada d, y de ah´ı la condici´on en el paso 4. Juan Manuel Garc´ıa Garc´ıa FIRMA DIGITAL
  • 7.
    Outline Firma digital RSA Firmadigital El Gamal Firma digital en CE Funciones de Hash DSA - NIST Funciones de Hash Una funci´on de hash es una funci´on que aplica a un mensaje m de tama˜no variable, una representaci´on de tama˜no fijo del propio mensaje, H(m), que es llamado su valor de hash. Si H(m) = m′ entonces m′ es mucho menor que m. Por ejemplo, si m es de un megabyte, m′ puede ser de 64 o 128 bytes. Una funci´on de hash segura es una funci´on de hash H de modo que para cualquier mensaje m′ es dif´ıcil encontrar una m tal que H(m) = m′. Las funciones de hash m´as utilizadas son las funciones MD2, MD4 y MD5, las cuales producen res´umenes de 128 bits. Juan Manuel Garc´ıa Garc´ıa FIRMA DIGITAL
  • 8.
    Outline Firma digital RSA Firmadigital El Gamal Firma digital en CE Funciones de Hash DSA - NIST Firma Digital Est´andar del NIST Digital Signature Standard, DSA El DSA propuesto es una variante de la firma digital de ElGamal. El protocolo es el siguiente: Cada usuario determina los siguientes par´ametros: 1. p un n´umero primo con 2511 < p < 2512. 2. q un divisor primo de p − 1, con 2159 < q < 2160. 3. g un generador del ´unico subgrupo c´ıclico de Z∗ p de orden q. 4. Su clave privada, x, un entero tal que 0 < x < q. 5. Su clave p´ublica, y, donde y = gx (mod p). Juan Manuel Garc´ıa Garc´ıa FIRMA DIGITAL
  • 9.
    Outline Firma digital RSA Firmadigital El Gamal Firma digital en CE Funciones de Hash DSA - NIST Firma Digital Est´andar del NIST Se elabora una firma digital como sigue: Sea H : M → Z una funci´on de hash segura, y supongamos que el mensaje a firmar es m. 1. Se selecciona un entero aleatorio k con 0 < k < q. 2. Se calcula el valor de r := (gk(mod p))(mod q). 3. Se resuelve la congruencia H(m) ≡ −x · r + k · s (mod q) para s. La firma digital para el mensaje m es el par (r, s). Juan Manuel Garc´ıa Garc´ıa FIRMA DIGITAL
  • 10.
    Outline Firma digital RSA Firmadigital El Gamal Firma digital en CE Funciones de Hash DSA - NIST Firma Digital Est´andar del NIST Para verificar la firma se procede como sigue: 1. Se calcula w ≡ s−1(mod q). 2. Se calculan u1 ≡ H(m) · w (mod q) u2 ≡ r · w (mod q) 3. Se calcula v ≡ (gu1 yu2 (mod p))(mod q). 4. Se comprueba que v = r. Juan Manuel Garc´ıa Garc´ıa FIRMA DIGITAL