Return to Video

Public-key encryption (11 min) - (English subtitles added)

  • 0:00 - 0:04
    En este módulo, quiero mostrar una nuevo sistema para intercambiar claves, basado en el
  • 0:04 - 0:08
    concepto de encriptación de clave pública. De nuevo, para recordar el escenario, tenemos
  • 0:08 - 0:12
    nuestros amigos Alice y Bob que van a intercambiar una clave secreta K.
  • 0:12 - 0:15
    El intruso consigue ver los mensajes que se intercambian, pero
  • 0:15 - 0:19
    aun así, no debería entender nada de la clave K que intercambian.
  • 0:19 - 0:23
    Y como es habitual, en este módulo, solo consideramos la seguridad ante
  • 0:23 - 0:27
    intrusos. Es decir, no permitimos al atacante modificar los datos, o ninguna
  • 0:27 - 0:31
    otra forma de ataque activo. Así que, solo para recordarlo, anteriormente en este módulo hemos
  • 0:31 - 0:35
    visto un mecanismo ineficiente basado en bloques cifrados genéricos. En el segmento previo
  • 0:35 - 0:38
    vimos el mecanismo de intercambio de claves Diffie-Hellman, que tiene un
  • 0:38 - 0:42
    margen exponencial entre el trabajo que los participantes tienen que realizar y el trabajo
  • 0:42 - 0:46
    del atacante. Y de hecho el protocolo Diffie-Hellman es usado muy
  • 0:46 - 0:50
    frecuentemente por toda la web. En este segmento, quiero mostrar un sistema
  • 0:50 - 0:54
    diferente basado en encriptación de clave pública. ¿Qué es encriptación de clave pública? Igual que en
  • 0:54 - 0:59
    el caso de encripación simétrica, hay un algoritmo de encriptación y un
  • 0:59 - 1:03
    algoritmo de desencriptación. Sin embargo, aquí el algoritmo de encriptación tiene una clave, a la
  • 1:03 - 1:08
    que llamaremos clave pública. La llamaremos clave pública que pertenece
  • 1:08 - 1:12
    a Bob. Y el algoritmo de desecriptación tiene una llave distinta, a la
  • 1:12 - 1:17
    que llamamos clave secreta. Que también pertenece a Bob. Así que estas 2 claves son llamadas
  • 1:17 - 1:24
    a veces un par de claves. La mitad del par es la clave pública, y la otra mitad del par
  • 1:24 - 1:29
    es la clave secreta. El modo en que encriptamos es el habitual, llega un mensaje,
  • 1:29 - 1:33
    el algoritmo de encriptación genera un texto cifrado, que es el
  • 1:33 - 1:38
    encriptado del mensaje usando la clave pública, Y entonces, cuando el texto cifrado
  • 1:38 - 1:43
    se presenta al algoritmo de desencriptación, el algoritmo básicamente genera
  • 1:43 - 1:48
    el mensaje correspondiente. Así que como dije, PK es llamada clave pública y SK es llamada
  • 1:48 - 1:52
    clave secreta. Mas exactamente, ¿qué es la encriptación de clave pública? Bien, la encriptación de
  • 1:52 - 1:57
    clave pública está formada por 3 algoritmos, G, E y D.
    El algoritmo G es lo que es llamado
  • 1:57 - 2:01
    un algoritmo de generación de claves. Cuando ejecutamos el algoritmo G, producirá 2 claves, la clave
  • 2:01 - 2:06
    pública y la clave privada. El algoritmo de encriptación básicamente, a partir de la clave
  • 2:06 - 2:10
    pública y el mensaje, producirá el correspondiente texto cifrado. Y el
  • 2:10 - 2:14
    algoritmo de desencriptación, a partir de la clave secreta y el texto cifrado, producirá el
  • 2:14 - 2:19
    mensaje, o 'bottom' si ocurrió algun error. Como es habitual, tenemos las
  • 2:19 - 2:24
    propiedades de consistencia, que dicen que para cualquier clave pública y clave secreta que pueden
  • 2:24 - 2:29
    haber sido generadas por el algoritmo de generación de claves, si encriptamos el mensaje usando
  • 2:29 - 2:34
    la clave pública, y desencriptamos usando la clave secreta, deberíamos obtener de nuevo el
  • 2:34 - 2:38
    mensaje original. Ahora bien, ¿que significa ser seguro para un sistema de clave pública? Bien, usamos
  • 2:38 - 2:43
    el mismo concepto de seguridad semántica que hemos usado anteriormente, excepto que el juego es
  • 2:43 - 2:47
    ahora algo distinto. Me explico, como definimos seguridad semántica en
  • 2:47 - 2:52
    un sistema de clave pública. Aquí, el retador ejecutará el algoritmo de generación
  • 2:52 - 2:56
    de claves para generar una clave pública y una clave secreta, y dará la clave pública
  • 2:56 - 3:00
    al adversario. El retador se queda con la clave secreta.
  • 3:00 - 3:05
    Lo que el adversario hará es producir dos mensajes de igual longitud M0 y M1,
  • 3:05 - 3:10
    y el retador responderá con la encriptación de M0 o M1. Como
  • 3:10 - 3:15
    es habitual, definimos 2 experimentos, el experimento 0 y el experimento 1. En el experimento 0
  • 3:15 - 3:20
    al adversario le damos la encriptación de M0. En el experimento 1 le damos la
  • 3:20 - 3:25
    encriptación de M1, y el objetivo del adversario es adivinar
  • 3:25 - 3:29
    que encriptación ha recibido. ¿Recibió la encriptación de M0? o ¿recibió
  • 3:29 - 3:35
    la encriptación de M1? Y nos referimos a ello como el resultado del experimento 0 o
  • 3:35 - 3:40
    del experimento 1. Algo que debo remarcar, es que en caso de encriptación
  • 3:40 - 3:45
    de clave pública, no es necesario dar al adversario la posibilidad de organizar un
  • 3:45 - 3:49
    ataque de "textos claros elegidos". ¿Por qué? En el caso de un sistema de clave simétrica, el
  • 3:49 - 3:54
    atacante debía pedir la encriptación de mensajes por él elegidos. En el caso de un sistema de clave pública,
  • 3:54 - 3:58
    el atacante tiene la clave pública, y por tanto puede
  • 3:58 - 4:02
    encriptar por si mismo cualquier mensaje que desee. No necesita que el retador le ayude a
  • 4:02 - 4:07
    encriptar los mensajes de su elección. Y como resultado
  • 4:07 - 4:11
    en un sistema de clave pública, el ataque de "texto claro escogido" es inherente. No hay razón
  • 4:11 - 4:16
    para dar al atacante un poder adicional para montar el ataque de "texto claro escogido" y este
  • 4:16 - 4:21
    es el motivo por el que no hablamos de consultas de "texto claro escogido" en el contexto
  • 4:21 - 4:25
    de la definición de seguridad semántica de sistemas de clave pública. Ahora que hemos definido el juego
  • 4:25 - 4:30
    diremos que un sistema de clave pública GED es semanticamente seguro si
  • 4:30 - 4:34
    básicamante el atacante no puede distinguir el experimento 0 del experimento 1. En otras
  • 4:34 - 4:39
    palabras, la probabilidad del adversario de obtener 1 en el experimento 0 es aproximandamente
  • 4:39 - 4:43
    la misma que la probabilidad de obtener 1 en el experimento 1.
    Asi que de nuevo,
  • 4:43 - 4:47
    el atacante no puede distiguir si el valor obtenido era M0 encriptado, o
  • 4:47 - 4:52
    M1 encriptado. Ahora que entendemos lo que es la encriptación de clave pública, vamos a ver
  • 4:52 - 4:56
    como usarla para estrablecer un secreto compartido. Aqui estan nuestros amigos Alice y Bob.
  • 4:56 - 5:01
    Alice inicia un par de claves pública y secreta para sí misma
  • 5:01 - 5:05
    usando el algoritmo de generación de claves. Y a continuación, mandará a Bob
  • 5:05 - 5:10
    la clave pública pk. Y también comunica, hey, este mensaje es de Alice. Lo que Bob hará,
  • 5:10 - 5:14
    Es generar un número aleatorio de 128 bits X y lo enviará de vuelta a Alice
  • 5:14 - 5:19
    diciendole que el mensaje es de Bob, y le mandará el valor X encriptado bajo la
  • 5:19 - 5:24
    clave pública de Alice. Alice recibirá el texto cifrado, lo desencriptará usando
  • 5:24 - 5:29
    su clave secreta y así, obtendrá el valor de X, y ahora este valor de X puede ser
  • 5:29 - 5:34
    usado básicamente como un secreto compartido entre ellos 2. Quiero destacar que
  • 5:34 - 5:39
    este protocolo, es muy diferente que el protocolo Diffie-Hellman que vimos en el
  • 5:39 - 5:43
    último segmento, en el sentido que aquí, las partes tienen que hacer su trabajo por turnos,
  • 5:43 - 5:48
    Bob no puede enviar su mensaje hasta después de haber recibido el mensaje de Alice.
  • 5:48 - 5:52
    En otras palabras, Bob no puede encriptar X con la clave pública de Alice hasta haberla recibido
  • 5:52 - 5:56
    de Alice. En el protocolo Diffie-Hellman, sin embargo las dos
  • 5:56 - 6:01
    partes podían enviar sus mensajes en tiempos arbitrarios, y no habia ningún orden
  • 6:01 - 6:05
    forzado para estos mensajes. Como resultado, teníamos esta bonita aplicación de
  • 6:05 - 6:09
    Diffie-Hellman, en la que todos podían enviar sus mensajes a Facebook, por
  • 6:09 - 6:13
    ejemplo. Por tanto, solo mirando el perfil de Facebook, cualquier pareja tenían yá
  • 6:13 - 6:17
    una clave compartida, sin la necesidad de comunicación adicional. Aquí, esto no es
  • 6:17 - 6:22
    cierto, incluso si todo el mundo cuelga su clave pública eb Facebook, sigue habiendo
  • 6:22 - 6:26
    la necesidad de enviar un mensaje antes que la clave compartida pueda ser establecida. Ahora
  • 6:26 - 6:31
    que entendemos el protocolo, la primera pregunta que debemos hacernos, es por qué es este
  • 6:31 - 6:36
    un protocolo seguro. Y como hacemos últimamente, solo consideramos intrusos observando la comunicación. Así
  • 6:36 - 6:40
    en este protocolo, el atacante vé la clave pública y el texto X cifrado con la
  • 6:40 - 6:45
    clave pública, y lo que quiere obtener es básicamente el valor de X. Ahora bien, sabemos
  • 6:45 - 6:50
    que el sistema de clave pública que usamos es semanticamente seguro, y esto
  • 6:50 - 6:54
    significa que el atacante no puede distinguir X encriptado de
  • 6:54 - 6:59
    algun texto aleatorio encriptado. En otras palabras, con solo X encriptado, el
  • 6:59 - 7:04
    atacante no puede distinguir si el texto es X o cualquier otro mensaje aleatorio elegido
  • 7:04 - 7:09
    de M. Y esto básicamante significa, que solo mirando
  • 7:09 - 7:14
    los mensajes en este protocolo, el valor de X no puede distinguirse, desde el punto de vista del atacante,
  • 7:14 - 7:19
    de un elemento aleatorio de M, y como resultado, X puede ser usado como clave de la sesión
  • 7:19 - 7:23
    entre las 2 partes. Es simplemente un valor aleatorio que el atacante no puede
  • 7:23 - 7:28
    adivinar, si no es probando todos los valores posibles de M. Debería decir que el hecho que estas 2
  • 7:28 - 7:32
    distribuciones no puedan distinguirse, es una consecuencia directa de
  • 7:32 - 7:36
    la seguridad semántica, y de hecho es un ejercicio simple mostrar que sí
  • 7:36 - 7:40
    el atacante pudiera distinguir una distribución de otra, entonces
  • 7:40 - 7:44
    el atacante podría también romper la seguridad semantica. Y como es habitual, aún siendo este
  • 7:44 - 7:49
    protocolo seguro contra intrusión, es completamente inseguro frente
  • 7:49 - 7:53
    ataques man-in-the-middle (MITM-intermediario). Veamos un simple ataque MITM. Bien, aqui
  • 7:53 - 7:58
    tenemos a Alice generando su par de claves pública y secreta. Al mismo tiempo, el
  • 7:58 - 8:03
    intermediario generará su propio par de claves pública y secreta.
  • 8:03 - 8:07
    Cuando Alice envía su clave pública a Bob, el intermediario
  • 8:07 - 8:12
    intercepta el mensaje, y dirá, este es el mensaje de Alice, pero
  • 8:12 - 8:16
    la clave pública de Alice es pk'. Bob recibe el mensaje, y cree
  • 8:16 - 8:20
    que tiene un mensaje de Alice, lo que enviará de vuelta es, bien, elegirá su número
  • 8:20 - 8:25
    aleatorio X y enviará de vuelta el valor de X encriptado bajo pk'. El intermediario
  • 8:25 - 8:29
    interceptará de nuevo el mensaje, y lo cambiará con
  • 8:29 - 8:33
    algo distinto. Su objetivo es asegurarse que el intercambio de claves prospera, en
  • 8:33 - 8:37
    otras palabras, Alice cree que tiene un mensaje de Bob, y aún así, el intermediario
  • 8:37 - 8:42
    quiere conocer exactamente cual es el secreto compartido. Así que, ¿qué debería el
  • 8:42 - 8:47
    intermediario enviar a Alice en este caso? Vamos a llamar al texto cifrado C, lo que
  • 8:47 - 8:52
    el intermediario hará es desencriptar C usando su propia clave
  • 8:52 - 8:56
    privada, lo que le revelará X. Y entonces, continuará,
  • 8:56 - 9:01
    encriptando X con la clave plica de Alice, y enviará el valor a Alice. Alice
  • 9:01 - 9:05
    obtendrá X, y en lo que a ella respecta, ha hecho un intercambio de claves
  • 9:05 - 9:10
    con Bob, y ambos han obtenido el valor de X, pero el problema, por supuesto, es que
  • 9:10 - 9:14
    el intermediario conoce también el valor de X. Así que este protocolo se convierte en absolutamente
  • 9:14 - 9:19
    inseguro cuando el intermediario puede modificar los mensajes de Alice a Bob, y de
  • 9:19 - 9:24
    Bob a Alice. De nuevo, algo tenemos que hacer con el protocolo, para hacerlo seguro,
  • 9:24 - 9:28
    y vamos a ver como hacerlo. De hecho dentro de 2 semanas, veremos las firmas
  • 9:28 - 9:33
    digitales. Ahora, he mostrado que la encriptación de clave pública implica
  • 9:33 - 9:37
    intercambio seguro de claves ante intrusos. La próxima pregunta és como construimos los sistemas
  • 9:37 - 9:41
    de clave pública. Y resulta que estas construcciones generalmente se apoyan
  • 9:41 - 9:45
    en teoría de números y en el álgebra, y igual que el protocolo Diffie-Hellman se apoya en el
  • 9:45 - 9:49
    álgebra. Así que antes de entrar en estos protocolos con más detalle, lo que me
  • 9:49 - 9:53
    gustaría hacer es tomar un pequeño desvio, En el próximo módulo, veremos los
  • 9:53 - 9:58
    fundamentos y la teoría de números relevantes. Veremos un modelo apropiado, y
  • 9:58 - 10:02
    volveremos para hablar de estos sistemas de clave pública, y de otros sistemas paraçç
  • 10:02 - 10:07
    intercambio de claves. Así que este es el final del módulo.
    Para lectura adicional, quería
  • 10:07 - 10:12
    señalar este documento que muestra que de hecho solo nos apoyamos en cifras
  • 10:12 - 10:16
    simétricas y funciones hash, entonces estas propuestas son óptimas para intercambio
  • 10:16 - 10:21
    de claves. Y de hecho no podemos conseguir más que el margen cuadrático mientras tratemos
  • 10:21 - 10:25
    las primitivas que nos vienen dadas como una caja negra. Asi que básicamente esto muestra
  • 10:25 - 10:29
    que el margen cuadrático es el mejor posible, y también quería señalar otro documento
  • 10:29 - 10:33
    que en cierto modo resume algunos de estos mecanismos de intercambio de los que hemos hablado,
  • 10:33 - 10:37
    intercambio de claves usando criptografia de clave pública e intercambio de claves usando [...] Podeis
  • 10:37 - 10:41
    dar un vistazo al documento y en cierto modo os dará un avance de lo que viene y
  • 10:41 - 10:46
    como hacer estos protocolos de intercambio de claves seguros contra intermediarios,
  • 10:46 - 10:50
    y no solo seguros ante intrusos. OK. Este es el final del módulo,
  • 10:50 - 10:54
    y en el próximo módulo daremos un pequeño rodeo, y haremos un breve repaso
  • 10:54 - 10:56
    al álgebra y teoría de números.
Title:
Public-key encryption (11 min) - (English subtitles added)
Video Language:
English

Spanish subtitles

Revisions