26
Class4crypt Videoclases de criptografía aplicada Class4crypt c4c10.2 - © jorgeramio 2020 Profesor Dr. Jorge Ramió A. Clase c4c10.2 Intercambio de clave de Diffie y Hellman Madrid, martes 10 de marzo de 2020

Class4crypt Aula Virtual de Criptografía...Módulo 10. Criptografía asimétrica Lección 10.2. Intercambio de clave de Diffie y Hellman 1. Recordando el Problema del Logaritmo Discreto

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Class4crypt Aula Virtual de Criptografía...Módulo 10. Criptografía asimétrica Lección 10.2. Intercambio de clave de Diffie y Hellman 1. Recordando el Problema del Logaritmo Discreto

Class4cryptVideoclases de criptografía aplicada

Class4crypt c4c10.2 - © jorgeramio 2020

Profesor Dr. Jorge Ramió A.

Clase c4c10.2Intercambio de clave de

Diffie y HellmanMadrid, martes 10 de marzo de 2020

Page 2: Class4crypt Aula Virtual de Criptografía...Módulo 10. Criptografía asimétrica Lección 10.2. Intercambio de clave de Diffie y Hellman 1. Recordando el Problema del Logaritmo Discreto

Temario

Class4crypt c4c10.2 - © jorgeramio 2020 Lección 10.2 - página 2

• Módulo 1: Principios básicos de la seguridad

• Módulo 2: Matemáticas discretas en la criptografía

• Módulo 3: Complejidad algorítmica en la criptografía

• Módulo 4: Teoría de la información en la criptografía

• Módulo 5: Fundamentos de la criptografía clásica y moderna

• Módulo 6: Algoritmos de criptografía clásica

• Módulo 7: Cifra simétrica en flujo

• Módulo 8: Cifra simétrica en bloque

• Módulo 9: Funciones hash en la criptografía

• Módulo 10: Cifra asimétrica

• Módulo11: Otros temas relacionados

• Temario: http://www.criptored.upm.es/descarga/Class4cryptc4c0.1_Presentacion.pdf

Page 3: Class4crypt Aula Virtual de Criptografía...Módulo 10. Criptografía asimétrica Lección 10.2. Intercambio de clave de Diffie y Hellman 1. Recordando el Problema del Logaritmo Discreto

Class4crypt c4c10.2 - © jorgeramio 2020 Lección 10.2 - página 3

¡COMENZAMOS!

Page 4: Class4crypt Aula Virtual de Criptografía...Módulo 10. Criptografía asimétrica Lección 10.2. Intercambio de clave de Diffie y Hellman 1. Recordando el Problema del Logaritmo Discreto

Módulo 10. Criptografía asimétrica

Lección 10.2. Intercambio de clave de Diffie y Hellman

1. Recordando el Problema del Logaritmo Discreto y generadores en un cuerpo

2. Protocolo de intercambio de clave de Diffie y Hellman

3. Protocolo de intercambio de clave de Diffie y Hellman no simultáneo

4. Seguridad del protocolo de intercambio de clave de Diffie y Hellman

Class4crypt c4c10.2

Class4crypt c4c10.2 - © jorgeramio 2020 Lección 10.2 - página 4

Page 5: Class4crypt Aula Virtual de Criptografía...Módulo 10. Criptografía asimétrica Lección 10.2. Intercambio de clave de Diffie y Hellman 1. Recordando el Problema del Logaritmo Discreto

Pero antes… ¡muchas gracias!

• El congreso RootedCON, en su edición 2020, ha galardonado a Criptored con el premio Antonio Ropero, por su labor de difusión y formación gratuita en ciberseguridad en estas últimas dos décadas

Class4crypt c4c10.2 - © jorgeramio 2020 Lección 10.2 - página 5

Madrid, 6 de marzo de 2020

• Libros y software

• Conferencias TASSI

• CIBSI – TIBETS – DISI

• Enciclopedia intypedia

• MOOC Crypt4you

• Píldoras Thoth

• Cuadernos CLCript

• Curso Class4crypt

Page 6: Class4crypt Aula Virtual de Criptografía...Módulo 10. Criptografía asimétrica Lección 10.2. Intercambio de clave de Diffie y Hellman 1. Recordando el Problema del Logaritmo Discreto

Recordando qué es el PLD

• El problema del logaritmo discreto PLD decía lo siguiente:

• Sean p un primo y un generador de ese primo, ambos números públicos• En una próxima transparencia recordaremos qué es un generador en un primo p

• Exponenciación modular

• Si x es un valor privado (secreto), entonces y = x mod p será un resultado que podría ser público. Será, además, de fácil y rápido cómputo, independientemente de los valores de , p y x

• Logaritmo discreto

• No obstante, conociendo (, p, y), encontrar ahora el valor privado xsignifica resolver la ecuación x = log y mod p, muy costosa en tiempo de cómputo, inabordable cuando p es un primo muy grande

Class4crypt c4c10.2 - © jorgeramio 2020 Lección 10.2 - página 6

Page 7: Class4crypt Aula Virtual de Criptografía...Módulo 10. Criptografía asimétrica Lección 10.2. Intercambio de clave de Diffie y Hellman 1. Recordando el Problema del Logaritmo Discreto

Gráfica del PLD

http://www.criptored.upm.es/descarga/CLCript_entrega_09_Matematicas_Discretas_Criptografia_SAMCript.pdf

Class4crypt c4c10.2 - © jorgeramio 2020 Lección 10.2 - página 7

Page 8: Class4crypt Aula Virtual de Criptografía...Módulo 10. Criptografía asimétrica Lección 10.2. Intercambio de clave de Diffie y Hellman 1. Recordando el Problema del Logaritmo Discreto

Recordando qué es un generador en p

• Un generador , o raíz primitiva, es un resto del primo p que será capaz de generar todo el cuerpo p, de forma que las operaciones 1 mod p, 2 mod p, 3 mod p, …, p-1 mod p, entregan todos los restos de p, desde 1 hasta p-1

• No se puede saber a priori los generadores de un primo p, pero es muy fácil encontrarlos (mediante cálculos de prueba y error) ya que la distribución de estos números entre los restos de p es bastante uniforme y existe más de un 30% de restos que son generadores de p

• Por ejemplo en el primo 29 son generadores los restos 2, 3, 8, 10, 11, 14, 15, 18, 19, 21, 26 y 27. Así, 111 mod 29, 112 mod 29, 113 mod 29 … 1128 mod 29 nos entregarán números distintos, “generando” todo el cuerpo p

• Y entonces para x mod p = y, habrá un único x que entregue ese valor y

Class4crypt c4c10.2 - © jorgeramio 2020 Lección 10.2 - página 8

Page 9: Class4crypt Aula Virtual de Criptografía...Módulo 10. Criptografía asimétrica Lección 10.2. Intercambio de clave de Diffie y Hellman 1. Recordando el Problema del Logaritmo Discreto

Buscando generadores en p con SAMCript

• p = 31, p = 47, p = 8103467492759792327149800361564410265219

Class4crypt c4c10.2 - © jorgeramio 2020 Lección 10.2 - página 9

Page 10: Class4crypt Aula Virtual de Criptografía...Módulo 10. Criptografía asimétrica Lección 10.2. Intercambio de clave de Diffie y Hellman 1. Recordando el Problema del Logaritmo Discreto

Whitfield Diffie y Martin Hellman

• En noviembre de 1976, los investigadores Whitfield Diffie y Martin Hellman de la Universidad de Stanford, proponen un algoritmo para un intercambio de clave computacionalmente seguro entre dos usuarios separados físicamente

• Computacionalmente seguro quiere decir que para resolver el problema asociado a la seguridad de dicho intercambio de clave, se necesitará una cantidad de tiempo, de cómputo, costes y consumo de energía tan exagerado, que no es abordable actualmente

Class4crypt c4c10.2 - © jorgeramio 2020 Lección 10.2 - página 10

Ralph Merkle, Martin Hellman, Whitfield Diffie

Page 11: Class4crypt Aula Virtual de Criptografía...Módulo 10. Criptografía asimétrica Lección 10.2. Intercambio de clave de Diffie y Hellman 1. Recordando el Problema del Logaritmo Discreto

Algoritmo de Diffie y Hellman entre A y B

• El algoritmo de DH se utiliza para el intercambio seguro de una clave entre dos interlocutores A (Alicia) y B (Bernardo).

• Ambos seleccionan un número primo p y un generador de p, valores que son públicos, realizando los siguientes pasos:

Protocolo

A genera un número aleatorio a y envía a B a mod p = xA

B genera un número aleatorio b y envía a A b mod p = xB

B usa su clave secreta b y calcula xAb mod p = ab mod p

A usa su clave secreta a y calcula xBa mod p = ba mod p

El secreto compartido es K = ab mod p = ba mod p

Class4crypt c4c10.2 - © jorgeramio 2020 Lección 10.2 - página 11

AliciaBernardo

Page 12: Class4crypt Aula Virtual de Criptografía...Módulo 10. Criptografía asimétrica Lección 10.2. Intercambio de clave de Diffie y Hellman 1. Recordando el Problema del Logaritmo Discreto

Algoritmo DH entre varios usuarios: A, B, C

• A, B y C seleccionan un cuerpo p y un generador • A genera un número aleatorio a y envía (a mod p) a B• B genera un número aleatorio b y envía (b mod p) a C• C genera un número aleatorio c y envía (c mod p) a A• A recibe (c mod p), calcula [(c)a mod p] y se lo envía a B• B recibe (a mod p), calcula [(a)b mod p] y se lo envía a C• C recibe (b mod p), calcula [(b)c mod p] y se lo envía a A• A recibe (bc mod p) y calcula [(bc)a mod p] = bca mod p• B recibe (ca mod p) y calcula [(ca)b mod p] = cab mod p• C recibe (ab mod p) y calcula [(ab)c mod p] = abc mod p• El secreto compartido por A, B y C es el valor abc mod p

Class4crypt c4c10.2 - © jorgeramio 2020 Lección 10.2 - página 12

Page 13: Class4crypt Aula Virtual de Criptografía...Módulo 10. Criptografía asimétrica Lección 10.2. Intercambio de clave de Diffie y Hellman 1. Recordando el Problema del Logaritmo Discreto

Ejemplo de intercambio de clave de DH

• Alicia (A) y Bernardo (B) van a intercambiar una clave de sesión dentro del cuerpo p = 5.981, siendo el generador = 3

• Alicia elegirá el valor secreto a = 1.655

• Bernardo elegirá el valor secreto b = 3.904

1. A calcula a mod p = 31.655 mod 5.981 = 2.177 y se lo envía a B

2. B calcula b mod p = 33.904 mod 5.981 = 2.272 y se lo envía a A

3. B recibe 2.177 y calcula 2.1773.904 mod 5.981 = 216

4. A recibe 2.272 y calcula 2.2721.655 mod 5.981 = 216

5. La clave compartida es ab mod p = 31.6553.904 mod 5.981 = 36.461.120 mod 5.981 = 216

• El inconveniente de este protocolo es que el secreto compartido se conoce a posteriori, una vez terminado el protocolo y ambos deben realizarlo simultáneamente (adecuado Internet)

• Como veremos a continuación, algunas variaciones del algoritmo de DH permitirán usar este protocolo para enviar un número secreto previamente conocido, es decir enviar al receptor una clave de sesión K generada y conocida antes por el emisor

Class4crypt c4c10.2 - © jorgeramio 2020 Lección 10.2 - página 13

Page 14: Class4crypt Aula Virtual de Criptografía...Módulo 10. Criptografía asimétrica Lección 10.2. Intercambio de clave de Diffie y Hellman 1. Recordando el Problema del Logaritmo Discreto

Comprobación con SAMCript

• Alicia (A) y Bernardo (B) eligen p = 5.981, siendo el generador = 3

• Alicia elegirá el valor secreto a = 1.655, Bernardo elegirá el valor secreto b = 3.904

• La clave compartida será K = 216

Class4crypt c4c10.2 - © jorgeramio 2020 Lección 10.2 - página 14

Page 15: Class4crypt Aula Virtual de Criptografía...Módulo 10. Criptografía asimétrica Lección 10.2. Intercambio de clave de Diffie y Hellman 1. Recordando el Problema del Logaritmo Discreto

Intercambio de clave DH no simultáneo (1)

• Fase previa

• Claves de Alicia• Usa un primo pA con un generador αA

• Ha elegido su clave privada a

• Ha calculado su clave pública CpúbA = αAa mod pA

• Alicia hace público: pA, αA, CpúbA

• Claves de Bernardo:• Usa un primo pB con un generador αB

• Ha elegido su clave privada b

• Ha calculado su clave pública CpúbB = αBb mod pB

• Bernardo hace público: pB, αB, CpúbB

Class4crypt c4c10.2 - © jorgeramio 2020 Lección 10.2 - página 15

Page 16: Class4crypt Aula Virtual de Criptografía...Módulo 10. Criptografía asimétrica Lección 10.2. Intercambio de clave de Diffie y Hellman 1. Recordando el Problema del Logaritmo Discreto

Intercambio de clave DH no simultáneo (2)

Operaciones que debe hacer Alicia para enviar a Bernardo una clave K

1. Calcula una clave KAB = (CPúbB)a mod pB = (αBb mod pB)a mod pB

2. KAB = αBba mod pB

3. De ese valor KAB en el cuerpo pB (de al menos 1.024 bits), se eligen un conjunto de bits para una clave de cifra simétrica, por ejemplo los primeros 256 bits significativos (primer bit en 1, set) para el AES-256 como clave K (si faltasen bits, muy poco probable, se rellenaría)

4. Alicia cifra el mensaje con el algoritmo simétrico AES y la clave K

5. Alicia envía a Bernardo como criptograma ese mensaje cifrado

6. Además Alicia envía a Bernardo el siguiente valor K1 = αBa mod pB

Class4crypt c4c10.2 - © jorgeramio 2020 Lección 10.2 - página 16

Page 17: Class4crypt Aula Virtual de Criptografía...Módulo 10. Criptografía asimétrica Lección 10.2. Intercambio de clave de Diffie y Hellman 1. Recordando el Problema del Logaritmo Discreto

Intercambio de clave DH no simultáneo (3)

Operaciones que debe hacer Bernardo para recuperar esa clave K

1. El valor recibido K1 = αBa mod pB lo eleva a su clave privada b

2. K1b mod pB = (αB

a mod pB)b mod pB = αBab mod pB = αB

ba mod pB = KAB

3. Bernardo selecciona los mismos 256 bits que en origen y obtiene K

4. Con esa clave K y usando el algoritmo AES, Bernardo descifra el mensaje cifrado por Alicia y obtiene el texto en claro

Class4crypt c4c10.2 - © jorgeramio 2020 Lección 10.2 - página 17

Page 18: Class4crypt Aula Virtual de Criptografía...Módulo 10. Criptografía asimétrica Lección 10.2. Intercambio de clave de Diffie y Hellman 1. Recordando el Problema del Logaritmo Discreto

Ejemplo de intercambio DH no simultáneo

Alicia

pA = 311, A = 19, a = 188, CpúbA = 245

Usarán los primeros seis bits significativos de la clave encontrada (relleno si necesario)

Class4crypt c4c10.2 - © jorgeramio 2020 Lección 10.2 - página 18

Bernardo

pB = 409, B = 21, b = 258, CpúbB = 27

Usarán los primeros seis bits significativos de la clave encontrada (relleno si necesario)

Alicia calcula una clave de sesión K

KAB = (CPúbB)a mod pB = 27188 mod 409 = 180

Como 180 = 10110100

Elige los primeros 6 bits = 101101 = 45 = K

Cifra el mensaje con K = 45 y se lo envía a B

Y envía K1 = αBa mod pB = 21188 mod 409 = 20

Bernardo recupera la clave de sesión K

Bernardo recibe K1 = αBa mod pB = 20

Calcula K1b mod pB = 20258 mod 409 = 180

Como 180 = 10110100

Elige los primeros 6 bits = 101101 = 45 = K

Descifra el criptograma con la clave K = 45

Page 19: Class4crypt Aula Virtual de Criptografía...Módulo 10. Criptografía asimétrica Lección 10.2. Intercambio de clave de Diffie y Hellman 1. Recordando el Problema del Logaritmo Discreto

Seguridad del protocolo de DH (1)

• La seguridad reside en que si el primo p es un número muy grande (e.g. dos mil bits) y los valores secretos a y b de cada interlocutor no son demasiado pequeños, para que (a) y (b) sean mayores que el tamaño de p, entonces el atacante sólo podría conocer:

1. El valor del primo p que es público

2. El valor del generador que es público

3. El valor xA = (a mod p) que A envía a B, y que el atacante deberá capturar

4. El valor xB = (b mod p) que B envía a A, y que el atacante deberá capturar

Class4crypt c4c10.2 - © jorgeramio 2020 Lección 10.2 - página 19

Page 20: Class4crypt Aula Virtual de Criptografía...Módulo 10. Criptografía asimétrica Lección 10.2. Intercambio de clave de Diffie y Hellman 1. Recordando el Problema del Logaritmo Discreto

Seguridad del protocolo de DH (2)

• El atacante se enfrentará al PLD para números grandes

1. Calcular log XA mod p, para obtener el secreto a (muy difícil)

2. Calcular log XB mod p, para obtener el secreto b (muy difícil)

3. Y sólo después podría encontrar la clave ab mod p (muy fácil)

• Por ejemplo, p puede ser un primo de 2.048 bits y los valores secretos a y b el resultado de una función hash SHA256 de sendas frases de paso de Alicia y Bernardo

• Si no es un generador, el protocolo también funciona pero no habrá un único valor de clave secreta x, sino varios. Para primos p tan grandes, esto se puede obviar (OpenSSL usa = 2 y = 5)

Class4crypt c4c10.2 - © jorgeramio 2020 Lección 10.2 - página 20

Page 21: Class4crypt Aula Virtual de Criptografía...Módulo 10. Criptografía asimétrica Lección 10.2. Intercambio de clave de Diffie y Hellman 1. Recordando el Problema del Logaritmo Discreto

Refuerzo: píldora formativa Thoth nº 38

Class4crypt c4c10.2 - © jorgeramio 2020 Lección 10.2 - página 21

https://www.youtube.com/watch?v=TWhax2wQOrU

Errata en el minuto 0:38. Diffie y Hellman eran investigadores de la Universidad de Stanford. Por error aparece Harvard (disculpas)

Page 22: Class4crypt Aula Virtual de Criptografía...Módulo 10. Criptografía asimétrica Lección 10.2. Intercambio de clave de Diffie y Hellman 1. Recordando el Problema del Logaritmo Discreto

Conclusiones de la lección 10.2

• Recordamos qué es el PLD y qué son los generadores o raíces primitivas

• Establecemos que la seguridad del intercambio de clave de Diffie y Hellman reside en la dificultad de resolver el PLD para un primo p grande

• El protocolo de DH puede generalizarse para más de dos usuarios, aunque lo habitual es intercambiar una clave entre dos usuarios o equipos

• Existe una variante del protocolo de DH que permite intercambiar una clave conocida de antemano por el emisor, sin necesidad de simultaneidad

• Al usar primos grandes en el protocolo de intercambio de clave de Diffie y Hellman, logramos que éste sea computacionalmente seguro. Es decir, su resolución implica una cantidad de tiempo, capacidad de cómputo, costes y consumo de energía no permitidos con el estado actual de la informática

Class4crypt c4c10.2 - © jorgeramio 2020 Lección 10.2 - página 22

Page 23: Class4crypt Aula Virtual de Criptografía...Módulo 10. Criptografía asimétrica Lección 10.2. Intercambio de clave de Diffie y Hellman 1. Recordando el Problema del Logaritmo Discreto

Antes de terminar, por favor colabora…

• Si, en general, te ha gustado el vídeo…

• Si has aprendido algo nuevo…

• Si has podido reforzar algún conocimiento que ya tenías…

• Entonces, por favor, ponle un “Me gusta” al vídeo

• Si deseas expresar alguna opinión sobre el contenido de esta clase o tienes alguna duda, hazlo aquí en YouTube. Todos los comentarios serán muy bien recibidos y las dudas contestadas a la mayor brevedad posible

• Muchas gracias

Class4crypt c4c10.2 - © jorgeramio 2020 Lección 10.2 - página 23

Page 24: Class4crypt Aula Virtual de Criptografía...Módulo 10. Criptografía asimétrica Lección 10.2. Intercambio de clave de Diffie y Hellman 1. Recordando el Problema del Logaritmo Discreto

Lectura extra recomendada

• New Directions in Cryptography (november 1976)• https://ee.stanford.edu/~hellman/publications/24.pdf

• Discrete logarithm• https://en.wikipedia.org/wiki/Discrete_logarithm

• On Generators of Diffie-Hellman-Groups• https://florianjw.de/en/insecure_generators.html

• What is the difference between Diffie Hellman generator 2 and 5?• https://security.stackexchange.com/questions/54359/what-is-the-difference-between-

diffie-hellman-generator-2-and-5

• DH_generate_parameters• https://www.openssl.org/docs/man1.0.2/man3/DH_generate_parameters.html

Class4crypt c4c10.2 - © jorgeramio 2020 Lección 10.2 - página 24

Fin de la lección

Page 25: Class4crypt Aula Virtual de Criptografía...Módulo 10. Criptografía asimétrica Lección 10.2. Intercambio de clave de Diffie y Hellman 1. Recordando el Problema del Logaritmo Discreto

Otras videoclases del proyecto Class4crypt

• https://www.youtube.com/user/jorgeramio

• Más información en canal Twitter• https://twitter.com/class4crypt

Class4crypt c4c10.2 - © jorgeramio 2020 Lección 10.2 - página 25

Page 26: Class4crypt Aula Virtual de Criptografía...Módulo 10. Criptografía asimétrica Lección 10.2. Intercambio de clave de Diffie y Hellman 1. Recordando el Problema del Logaritmo Discreto

Licencia y créditos

• Estas videoclases y la documentación utilizada en ellas, se encuentran bajo licencia CreativeCommons tipo CC BY-NC-ND 4.0

• Reconocimiento - No Comercial - Sin Obra Derivada

• Permite que otros puedan descargar esta obra y compartirla con otras personas, siempre que se reconozca su autoría, pero no se puede cambiar de ninguna manera su contenido ni se puede utilizar comercialmente

• Música:

• Enter_Blonde, Max Surla, Media Right Productions, YouTube Audio Library - Free Music https://www.youtube.com/audiolibrary/music?nv=1

Class4crypt c4c10.2 - © jorgeramio 2020 Lección 10.2 - página 26