< Return to Video

La permutación de puerta falsa RSA (18 min)

  • 0:00 - 0:04
    En el segmento anterior vimos cómo construir encriptación
    públicamente con funciones de puerta falsa,
  • 0:04 - 0:08
    en este segmento vamos a construir una función de
    puerta falsa clásica llamada RSA.
  • 0:08 - 0:13
    Pero primero vamos a repasar rápidamente qué es una
    función de puerta falsa. Recordemos que una función
  • 0:13 - 0:17
    de puerta falsa está formada por tres funciones. Hay
    un algoritmo de generación de claves, la función
  • 0:17 - 0:21
    propiamente dicha y la inversa de la función.
    El algoritmo de generación de claves
  • 0:21 - 0:25
    genera una clave pública y una clave privada.
    Y en este caso, en esta lección, la clave pública
  • 0:25 - 0:30
    va a definir una función que relaciona el
    conjunto X consigo mismo.
  • 0:30 - 0:34
    Por esta razón llamo a estos objetos permutaciones de
    puerta falsa, en oposición a funciones de puerta falsa,
  • 0:34 - 0:38
    simplemente porque la función relaciona X consigo
    mismo, mientras que una función de puerta falsa
  • 0:38 - 0:43
    podría relacionar el conjunto X con cualquier conjunto
    arbitrario Y. Ahora, siendo conocida la clave pública,
  • 0:43 - 0:48
    la función, como indicamos, básicamente define esta
    función del conjunto X al conjunto X.
  • 0:48 - 0:53
    Y, conociendo la clave secreta, podemos
    invertir esta función. Por tanto,
  • 0:53 - 0:57
    esta función F evalúa la función en la dirección
    directa y esta función, F inversa,
  • 0:57 - 1:02
    que implica la clave secreta SK, calcula F
    en la dirección inversa. Ahora
  • 1:02 - 1:06
    decimos que la permutación de puerta falsa es
    segura si la función definida por la clave pública
  • 1:06 - 1:11
    es de hecho una función unidireccional, lo
    que significa que es fácil de evaluar,
  • 1:11 - 1:15
    pero sin la puerta falsa (la clave secreta),
    es difícil de invertir.
  • 1:15 - 1:20
    Antes de que veamos nuestro primer ejemplo de permutación
    de puerta falsa, quisiera hacer una revisión rápida
  • 1:20 - 1:24
    de algunos elementos de aritmética que vamos a
    necesitar. Y, en particular, vamos a
  • 1:24 - 1:29
    repasar algunos elementos de la aritmética modular
    con números compuestos. Así, aquí tenemos nuestro
  • 1:29 - 1:33
    módulo N, que es el producto de dos números primos,
    y vosotros deberíais estar imaginando que
  • 1:33 - 1:38
    P y Q son números de aproximadamente el mismo
    tamaño, puesto que P y Q particulares son ambos
  • 1:38 - 1:42
    aproximadamente del tamaño de la raíz cuadrada de N. Por
    tanto, ambos son de aproximadamente el mismo tamaño.
  • 1:42 - 1:47
    Recordemos que denotamos ZN al conjunto de enteros de
    cero a N menos 1 y ya dijimos que podemos
  • 1:47 - 1:51
    sumar y multiplicar módulo N. Denotamos como
    ZN estrella el conjunto de
  • 1:51 - 1:56
    elementos invertibles en ZN. O sea, todos los
    elementos que tienen un inverso modular.
  • 1:56 - 2:01
    Y dijimos que, de hecho, X es invertible si y sólo si
    X y N son primos entre sí (coprimos).
  • 2:01 - 2:06
    Además, también os dije que el número
    de elementos invertibles en ZN estrella
  • 2:06 - 2:11
    se denota mediante la función fi de N. Por tanto,
    fi de N es el número de elementos invertibles en
  • 2:11 - 2:16
    ZN estrella. Y os dije que cuando N es el producto
    de dos números primos diferentes, entonces, de hecho,
  • 2:16 - 2:21
    fi de N es igual a P menos uno por Q menos uno,
    y si lo desarrolláis, veréis que es
  • 2:21 - 2:26
    realmente igual a N menos P menos Q más uno.
    Ahora recordad que dije que P y Q son del orden
  • 2:26 - 2:31
    de la raíz cuadrada de N, lo que significa
    que P más Q es también del orden
  • 2:31 - 2:36
    de la raíz cuadrada de N. Lo cual significa
    que realmente fi de N es del orden de
  • 2:36 - 2:41
    N menos dos veces la raíz cuadrada de N. Así,
    en otras palabras, es muy, muy próxima a N.
  • 2:41 - 2:45
    Básicamente, al restar la raíz cuadrada de N de
    un número, N, que en nuestro caso va a ser
  • 2:45 - 2:49
    un número enorme, de unos 600 dígitos.
    Y así, al restar de un número de 600
  • 2:49 - 2:54
    dígitos la raíz cuadrada de ese número de
    600 dígitos, o sea un número de 300 dígitos,
  • 2:54 - 2:58
    apenas afecta al tamaño del número. Lo
    cual significa que fi de N es realmente, pero lo
  • 2:58 - 3:02
    que se dice realmente próxima a N y quiero
    que recordéis esto, ya que, de hecho,
  • 3:02 - 3:06
    lo utilizaremos una y otra vez. Y el hecho de que
    fi de N sea realmente próximo a N, significa que
  • 3:06 - 3:11
    si escogemos un elemento módulo N al azar es
    muy, muy probable que pertenezca a Z con estrella,
  • 3:11 - 3:16
    así que es muy improbable que al escoger un
    elemento aleatorio al final acabemos
  • 3:16 - 3:20
    escogiendo un elemento que no sea invertible.
    Bien. Por tanto recordad esto, que,
  • 3:20 - 3:25
    de hecho, casi todos los elementos de ZN son
    invertibles. Y, lo último que nos hará falta,
  • 3:25 - 3:31
    es el teorema de Euler, que vimos la semana
    pasada, que básicamente dice que
  • 3:31 - 3:36
    para todo elemento x en ZN con estrella, si elevo x a
    la potencia fi de N, obtengo 1 en ZN.
  • 3:36 - 3:43
    Así, en otras palabras, obtengo uno módulo N. Lo
    diré una vez más porque esto será
  • 3:43 - 3:47
    crítico para lo que viene. De nuevo, x elevado a
    fi de N es igual a uno módulo N.
  • 3:47 - 3:52
    Así, ahora que disponemos de los fundamentos
    necesarios, ya podemos describir la
  • 3:52 - 3:56
    permutación de puerta falsa RSA. Se trata de
    una construcción clásica, clásica, clásica en
  • 3:56 - 4:01
    criptografía que se publicó por primera vez en
    Scientific American en 1977; se trata de un
  • 4:01 - 4:06
    artículo muy conocido en criptografía. Y desde
    entonces, desde hace 35 años,
  • 4:06 - 4:10
    la permutación de puerta falsa RSA se ha utilizado
    profusamente en aplicaciones criptográficas.
  • 4:10 - 4:15
    Por ejemplo, SSL y TLS utilizan RSA tanto para
    certificados como para intercambio de claves.
  • 4:15 - 4:19
    Hay muchos sistemas de correo electrónico seguro
    y sistemas de archivos seguros que utilizan RSA para
  • 4:19 - 4:24
    encriptar correos electrónicos y archivos del sistema de
    archivos. Y hay muchas, muchas, muchas diferentes
  • 4:24 - 4:28
    aplicaciones de este sistema. Así, ésta es una
    construcción criptográfica muy, muy clásica
  • 4:28 - 4:33
    y voy a mostraros como funciona. Debería comentar
    que el nombre de RSA deriva de sus
  • 4:33 - 4:37
    inventores: Ron Rivest, Adi Shamir y Len Adleman,
    quienes estaban todos en el MIT cuando
  • 4:37 - 4:42
    hicieron este importante descubrimiento. Así,
    ahora estamos listos para describir la permutación de
  • 4:42 - 4:46
    puerta falsa RSA. Para ello, tengo que describir
    el algoritmo de generación de claves,
  • 4:46 - 4:50
    la función F y la función inversa de F. Así que veamos...
    La forma en que funciona el algoritmo de generación
  • 4:50 - 4:55
    de claves es la siguiente: lo que hacemos es
    generar dos números primos, P y Q,
  • 4:55 - 4:59
    cada uno de los cuales tendrá, digamos, del
    orden de 1000 bits, o sea, ya sabéis, unos
  • 4:59 - 5:04
    300 dígitos, y el módulo RSA simplemente va a ser
    el producto de ambos números primos.
  • 5:04 - 5:09
    Lo siguiente que haremos es escoger dos
    exponentes, e y d, tales que el producto de
  • 5:09 - 5:14
    e y d sea uno módulo fi de N. Lo que esto
    significa es que, primero,
  • 5:14 - 5:19
    E y D son coprimos de fi de N y, segundo, son
    mutuamente inversos modulares
  • 5:19 - 5:24
    módulo fi de N. Y entonces, generamos
    la clave pública como el par
  • 5:24 - 5:29
    N, coma, e y la clave secreta (privada), N, coma, d.
    Debo mencionar que el exponente e,
  • 5:29 - 5:35
    que al número "e" en ocasiones se le denomina
    exponente de encriptación y al exponente "d" en
  • 5:35 - 5:39
    ocasiones se le denomina exponente de desencriptado.
    Y veréis por qué me refiero continuamente a ellos
  • 5:39 - 5:43
    como exponentes en un momento. Ahora, la forma
    en que la función RSA se define
  • 5:43 - 5:47
    es realmente sencilla. Por simplicidad, voy
    a definirla como una función
  • 5:47 - 5:52
    de ZN estrella a ZN estrella. Y la forma en que
    se define la función es, simplemente, dado un
  • 5:52 - 5:57
    valor de entrada x, lo único que hacemos es elevarlo
    a la potencia e en ZN. Por tanto, nos limitamos a
  • 5:57 - 6:02
    calcular x elevado a e, módulo N. Eso es todo. Y
    para desencriptar, lo que hacemos es, simplemente,
  • 6:02 - 6:07
    dado un valor de entrada y, simplemente elevamos
    y a la potencia d, módulo N. Y eso es todo.
  • 6:07 - 6:12
    Así, ahora podéis ver por qué me refería a "e" y "d"
    como exponentes. Son los valores a los
  • 6:12 - 6:18
    que "x" e "y" se elevan. Así, vamos a verificar
    rápidamente que la inversa de F realmente
  • 6:18 - 6:23
    invierte la función F. Para eso vamos a ver qué ocurre
    cuando calculamos "y" elevado a "d". Así,
  • 6:23 - 6:28
    supongamos que "y" es el valor de la función RSA
    para cierto valor "x". En ese caso,
  • 6:28 - 6:33
    lo que es "y" elevado a "d", en realidad es RSA de
    x elevado a la potencia "d". RSA de x, por sí misma,
  • 6:33 - 6:39
    es simplemente "x" elevado a "e" módulo N. Y, por tanto,
    "y" elevado a "d" es simplemente "x" elevado a
  • 6:39 - 6:45
    "e" por "d" módulo N. De nuevo, simplemente usando
    las reglas de exponenciación, los exponentes se
  • 6:45 - 6:51
    multiplican y obtenemos "x" elevado a "e" por "d". Pero,
    ¿qué sabemos sobre "e" por "d"? "e" por "d" dijimos que
  • 6:51 - 6:57
    es uno módulo fi de N. Y lo que esto significa es que
    existe algún entero tal que "e" por "d" es
  • 6:57 - 7:04
    igual a k por fi de n más uno. Esto es lo que
    significa que "e" por "d" sea
  • 7:04 - 7:10
    uno módulo fi de N. Así, podemos simplemente reemplazar
    "e" por "d" con k por fi de n más uno. Y eso es
  • 7:10 - 7:14
    lo que escribí aquí. Así, tenemos x elevado a k por
    fi de n mas uno. Pero ahora, de nuevo
  • 7:14 - 7:20
    usando las reglas de exponenciación, podemos
    reescribir esto como x elevado a fi de N, elevado
  • 7:20 - 7:25
    a k, por x. Esto es realmente lo mismo que
    k por fi de N más 1 como exponente.
  • 7:25 - 7:30
    Me he limitado a separar el exponente en
    sus diferentes componentes.
  • 7:30 - 7:35
    Ahora, x elevado a fi de N por el teorema de Euler,
    sabemos que x elevado a fi de N es igual a uno. Así,
  • 7:35 - 7:41
    ¿a qué es igual todo este producto? Bien, puesto que
    x elevado a fi de N es igual a uno, uno
  • 7:41 - 7:46
    elevado a k es también igual a uno. Por tanto,
    todo este término de aquí es simplemente igual a uno.
  • 7:46 - 7:51
    Y lo que nos queda es x. Así, lo que hemos
    probado es que si tomamos la salida de la
  • 7:51 - 7:55
    función RSA y la elevamos a "d", obtenemos
    de nuevo x. Lo cual significa que
  • 7:55 - 8:00
    al elevar a "d" básicamente se invierte la
    función RSA, que es lo que
  • 8:00 - 8:05
    queríamos mostrar. Así, eso es todo. Esta es
    la descripción completa de la función. Hemos
  • 8:05 - 8:09
    descrito la generación de la clave, la propia
    función que consiste simplemente en elevar
  • 8:09 - 8:13
    a la potencia de "e" módulo N, y la función
    inversa, que consiste en elevar a la
  • 8:13 - 8:17
    potencia de "d", también módulo N. La siguiente
    pregunta es ¿por qué esta función es segura?
  • 8:17 - 8:22
    En otras palabras, ¿por qué esta función es unidireccional
    si todo lo que tengo es sólo una clave pública
  • 8:22 - 8:26
    pero no tengo la clave privada? Y para argumentar
    que esta función es unidireccional,
  • 8:26 - 8:31
    básicamente enunciamos el supuesto RSA, que
    básicamente dice que la función RSA es una
  • 8:31 - 8:37
    permutación unidireccional. Y, formalmente, la
    forma en que se enuncia es que, básicamente para todo
  • 8:37 - 8:41
    algoritmo eficiente A, si genero dos números
    primos p y q,
  • 8:41 - 8:46
    números primos aleatorios p y q, los multiplico
    para obtener el módulo N y luego escojo un
  • 8:46 - 8:51
    valor aleatorio y en ZN estrella y proporciono
    el módulo, el exponente y el valor y al
  • 8:51 - 8:56
    algoritmo A, la probabilidad de que obtenga el
    inverso de RSA en el punto y, esto es,
  • 8:56 - 9:00
    de que obtenga "y" elevado a uno partido "e" (esto
    es lo que el inverso realmente es), esta
  • 9:00 - 9:05
    probabilidad es negligible. Así, esta suposición
    se denomina supuesto RSA.
  • 9:05 - 9:09
    Básicamente enuncia que RSA es una permutación
    unidireccional cuando sólo se proporciona una clave pública.
  • 9:09 - 9:14
    Y, consecuentemente, es una permutación de puerta falsa
    porque tiene una puerta falsa, y esto la hace
    tiene
  • 9:14 - 9:20
    fácil de invertir para cualquiera que conozca la
    puerta falsa. Así, ahora que tenemos una permutación
  • 9:20 - 9:24
    de puerta falsa segura, podemos simplemente combinarla
    con nuestra construcción de encriptación pública
  • 9:24 - 9:28
    y tendremos nuestro primer sistema real de
    encriptación pública. Y así, lo que
  • 9:28 - 9:32
    haremos es simplemente insertar la permutación
    de puerta falsa RSA en la construcción estándar
  • 9:32 - 9:36
    ISO que vimos en el segmento anterior.
    Así, si os acordáis, dicha
  • 9:36 - 9:40
    construcción estaba basada en un sistema
    de encriptación simétrica que tenía que proporcionar
  • 9:40 - 9:44
    encriptación autentificada. Y estaba también basada
    en una función hash que relaciona,
  • 9:45 - 9:49
    bien, transfiriéndolo al mundo RSA,
    relaciona elementos en
  • 9:49 - 9:54
    ZN con claves secretas para el
    sistema de clave simétrica. Y ahora, la
  • 9:54 - 9:59
    forma en que el esquema de encripción funciona es
    realmente fácil de describir. Básicamente el algoritmo G
  • 9:59 - 10:04
    básicamente ejecuta el algoritmo de generación de
    claves RSA y genera una clave pública y una
  • 10:04 - 10:08
    clave privada, igual que antes. Fijaos en que la
    clave pública contiene el exponente de
  • 10:08 - 10:12
    encripción y la clave privada contiene el
    exponente de desencriptado. Y la forma en que
  • 10:12 - 10:16
    encriptamos es la siguiente. Bien, vamos a escoger
    un valor aleatorio de "x" en ZN, vamos a
  • 10:16 - 10:21
    aplicar la función RSA a esta "x", vamos a reducirla
    a una clave simétrica generando su "hash",
  • 10:21 - 10:26
    así que calcularemos H de "x" para obtener
    la clave "k", y entonces la salida será
  • 10:26 - 10:31
    "y" junto a la encriptación del mensaje
    usando la clave simétrica "k". Y, en la
  • 10:31 - 10:36
    práctica, la función "hash" H se implementaría
    mediante SHA-256 y
  • 10:36 - 10:41
    utilizaríais el operador SHA-256 para
    generar una clave simétrica que se pudiese
  • 10:41 - 10:46
    utilizar en el sistema de encriptación simétrica.
    Así es como encriptaríamos
  • 10:46 - 10:50
    y la forma en que desencriptariamos es
    básicamente como vimos en el segmento
  • 10:50 - 10:55
    anterior, pero lo primero que haríamos es
    utilizar la clave privada para invertir
  • 10:55 - 11:00
    la cabecera del texto cifrado. Así, calcularíamos
    la inversa RSA de "y", que nos proporcionaría
  • 11:00 - 11:05
    el valor de "x". A continuación aplicaríamos
    la función "hash" a "x" para obtener
  • 11:05 - 11:09
    la clave k. Y entonces ejecutaríamos el
    algoritmo de desencriptación del sistema
  • 11:09 - 11:15
    simétrico sobre el texto cifrado y esto produciría
    el mensaje original, "m".
  • 11:15 - 11:19
    Y en su momento enunciamos un teorema en el
    segmento anterior indicando que si la permutación
  • 11:19 - 11:23
    de puerta falsa RSA es segura, Es y Ds, el esquema de
    encriptación simétrica proporciona
  • 11:23 - 11:27
    encriptación segura y, como dijimos, H es un
    oráculo aleatorio, esto es,
  • 11:27 - 11:31
    ya sabéis, un tipo de función aleatoria de
    ZN al espacio de claves. Entonces, de hecho, este
  • 11:31 - 11:36
    sistema presenta seguridad de texto cifrado escogido y
    es un buen sistema de encriptación pública a usar.
  • 11:36 - 11:42
    Así, ahora que tenemos nuestro primer ejemplo de un buen
    sistema de encriptación pública, quisiera daros un
  • 11:42 - 11:47
    rápido aviso sobre cómo no utilizar RSA para
    encriptación. Y esto es algo, de nuevo, que
  • 11:47 - 11:51
    ya dijimos en el segmento anterior. Y voy a
    repetirlo aquí, salvo que voy a
  • 11:51 - 11:56
    hacerlo específico para RSA. Así, me gustaría
    llamarlo RSA "de libro",
  • 11:56 - 11:59
    que es lo primero que se le ocurre a
    uno cuando piensa en
  • 11:59 - 12:04
    encriptar usando RSA, a saber, la clave secreta
    y la clave privada serán como antes,
  • 12:04 - 12:08
    pero en lugar de utilizar una función
    "hash" para generar una clave simétrica, lo
  • 12:08 - 12:12
    que haremos es usar directamente RSA para
    encriptar el mensaje dado, "m". Y entonces,
  • 12:12 - 12:16
    utilizaremos directamente un exponente de desencriptado
    para desencriptar el texto cifrado y
  • 12:16 - 12:21
    obtener el texto llano, "m". Voy a llamar a esto
    "RSA de libro" porque hay muchos libros que
  • 12:21 - 12:25
    describen la encripción RSA de este
    modo. Y esto es completamente erróneo.
  • 12:25 - 12:29
    Así no es como funciona la encripción RSA. Se
    trata de un sistema inseguro. En particular,
  • 12:29 - 12:34
    se trata de encripción determinista y, por tanto,
    no es posible que sea semánticamente segura y,
  • 12:34 - 12:39
    de hecho, existen múltiples ataques y voy a
    mostraros un ataque en un minuto.
  • 12:39 - 12:43
    Pero el mensaje que quiero que quede
    claro aquí es que RSA es únicamente
  • 12:43 - 12:47
    una permutación de puerta falsa. Por si misma
    no es un sistema de encriptado. Tenéis que
  • 12:47 - 12:51
    integrarlo en el estándar ISO, por ejemplo,
    para convertirlo en un sistema de encriptado.
  • 12:51 - 12:56
    Por si mismo, no es más que una función.
    Así, vamos a ver cuál es el problema si
  • 12:56 - 13:00
    intentáis utilizar RSA "de libro", en otras palabras,
    si intentáis encriptar un mensaje
  • 13:00 - 13:05
    utilizando RSA directamente. Y os pondré un
    ejemplo de ataque del mundo de la web.
  • 13:05 - 13:10
    Imaginad que tenéis un servidor web. El servidor
    web tiene una clave RSA privada. Aquí la
  • 13:10 - 13:15
    denotaremos como N y "d". Y tenemos un navegador
    web que está intentando establecer una sesión
  • 13:15 - 13:19
    segura, una sesión segura SSL con el servidor web.
    La forma en que SSL funciona es que el
  • 13:19 - 13:23
    navegador web empieza enviando este
    mensaje "CLIENT HELLO" que significa, ¡eh, quiero
  • 13:23 - 13:28
    establecer una sesión segura contigo! El servidor
    web responde con un mensaje "SERVER HELLO"
  • 13:28 - 13:32
    que contiene la clave pública del servidor
    y entonces el navegador web continuará y
  • 13:32 - 13:37
    generará una clave aleatoria denominada clave
    secreta pre-máster, encriptará la clave
  • 13:37 - 13:41
    secreta pre-máster usando [RSA] (N.T. el original dice "k")
    y enviará el resultado cifrado al servidor web.
  • 13:41 - 13:45
    El servidor web lo desencriptará y entonces el
    servidor web también tendrá "k", por lo que
  • 13:45 - 13:49
    ahora ambos disponen de una clave compartida que
    pueden usar para establecer una sesión segura entre
  • 13:49 - 13:54
    ellos. Lo que quiero mostraros es qué va mal si
    utilizamos directamente la función RSA
  • 13:54 - 13:58
    para encriptar "k". En otras palabras, si directamente
    se encripta "k" usando "k" elevado a "e"
  • 13:58 - 14:03
    módulo N y pongamos por caso, supongamos,
    que "k" es una clave de 64 bits.
  • 14:03 - 14:08
    Vamos a tratar "k" como un entero en el rango
    de 0 a dos elevado a 64.
  • 14:08 - 14:13
    Más exactamente, dos elevado a 64 menos uno, y
    ahora lo que vamos a hacer es
  • 14:13 - 14:18
    lo siguiente. En primer lugar, supongamos que
    "k" se puede factorizar en un producto de
  • 14:18 - 14:24
    números de tamaños aproximadamente iguales. Así,
    podemos escribir "k" como k1 por k2, donde k1 y k2
  • 14:24 - 14:30
    son enteros y ambos son, digamos, menores que dos
    elevado a 34. Y resulta que esto sucede con una
  • 14:30 - 14:35
    probabilidad del 20%, o sea, una de cada
    cinco veces "k" se podrá
  • 14:35 - 14:40
    escribir en esta forma. Pero ahora, si introducimos esta "k",
    "k" igual a k1 por k2, si la introducimos en la
  • 14:40 - 14:45
    ecuación que define el texto cifrado, podéis ver
    que simplemente sustituimos con k1 por k2
  • 14:45 - 14:51
    y entonces podemos mover k1 al otro lado, por lo
    que acabamos obteniendo una ecuación,
  • 14:51 - 14:56
    a saber, C dividido por k1 elevado a "e" es igual a
    k2 elevado a "d". Daros cuenta que si multiplico ambos
  • 14:56 - 15:01
    lados por k1 elevado a "e", obtengo que C es
    igual a k1 por k2 elevado a "e"
  • 15:01 - 15:06
    que es precisamente esta ecuación de aquí. De acuerdo,
    así que lo único que he hecho ha sido reemplazar "k" con
  • 15:06 - 15:12
    k1 por k2 y dividir por k1 elevado a "e". Esto
    os debería ser ya familiar.
  • 15:12 - 15:16
    Así que ahora tenemos dos variables en esta
    ecuación. Por supuesto, c es conocido por el
  • 15:16 - 15:20
    atacante, "e" es conocido por el atacante y N
    es conocido por el atacante. Las dos
  • 15:20 - 15:25
    variables de esta ecuación son k1 y k2 y
    las hemos separado en
  • 15:25 - 15:29
    distintos lados de la ecuación y, como resultado,
    podemos realizar un ataque por "encuentro en
  • 15:29 - 15:33
    la mitad" contra esta ecuación. Así, vamos a
    realizar el ataque por "encuentro en la mitad". Lo que
  • 15:33 - 15:38
    haríamos es construir una tabla de todos los
    posibles valores de la parte izquierda. Así,
  • 15:38 - 15:43
    todos los posibles valores de C dividido entre k1 elevado
    a "e", de los que hay 2 elevado a 34. Y entonces,
  • 15:44 - 15:49
    para todos los valores posibles de la parte derecha,
    esto es, para todos los posibles valores
  • 15:49 - 15:54
    de k2 elevado a "e", vamos a comprobar si este
    valor se encuentra en la tabla que hemos
  • 15:54 - 15:59
    construido en el paso uno. Y si esto es así, entonces
    habremos encontrado una colisión y, básicamente,
  • 15:59 - 16:03
    tenemos una solución a esta ecuación. Por tanto, tan
    pronto como encontremos un elemento de la forma
  • 16:03 - 16:08
    k2 elevado a "e" que se encuentre en la tabla que hemos
    construido en el paso uno, habremos solucionado esta
  • 16:08 - 16:13
    ecuación y encontrado k1 y k2. Y, por
    supuesto, una vez encontrados k1 y k2,
  • 16:13 - 16:17
    podemos recuperar "k" fácilmente simplemente
    multiplicándolos. Así, multiplicamos
  • 16:17 - 16:21
    k1 y k2 y obtenemos la clave secreta "k". ¿De acuerdo?
    Por lo tanto, hemos roto, básicamente,
  • 16:21 - 16:26
    este sistema de encriptación. ¿Y cuántos nos llevó?
    Bien, por la fuerza bruta
  • 16:26 - 16:30
    lo podríamos haber roto en tiempo 2 a la 64,
    simplemente probando todas las posibles claves. Pero
  • 16:30 - 16:34
    este ataque, daros cuenta, llevó un tiempo 2 a la 34
    para el paso número uno. Bien, llevó
  • 16:34 - 16:38
    algo más de 2 a la 34 porque tuvimos que
    realizar esas exponenciales.
  • 16:39 - 16:43
    El paso dos llevó un tiempo 2 a la 34, de nuevo
    ligeramente más que 2 a la 34
  • 16:43 - 16:48
    a causa de las exponenciales. Así, digamos que
    el algoritmo en su conjunto llevó un tiempo
  • 16:48 - 16:52
    2 a la 40. La cuestión es que se trata de mucho,
    mucho menos tiempo que 2 a la 64. Así, aquí
  • 16:52 - 16:57
    tenéis un ejemplo en el que si encriptáis usando
    RSA directamente, dicho de otro modo, si
  • 16:57 - 17:01
    calculáis "k" elevado a "e" módulo N en lugar
    de seguir el estándar ISO,
  • 17:01 - 17:06
    por ejemplo, entonces tenéis un ataque que se realiza
    mucho más rápidamente que la búsqueda exhaustiva.
  • 17:06 - 17:11
    Tenéis un ataque que se ejecuta en tiempo 2 a la 40,
    en lugar de en tiempo 2 a la 64.
  • 17:11 - 17:15
    De acuerdo, así este es un buen ejemplo de cómo
    se pueden torcer las cosas si utilizáis la
  • 17:15 - 17:19
    permutación de puerta falsa RSA directamente
    para encriptar un mensaje. Así, la idea a
  • 17:19 - 17:24
    recordar aquí es nunca, nunca, nunca uséis
    RSA directamente para encriptar. Tenéis que
  • 17:24 - 17:28
    ir a través de un mecanismo de encriptación, por
    ejemplo el estándar ISO. Y, de hecho,
  • 17:28 - 17:32
    en el próximo segmento vamos a ver otras
    formas de utilizar RSA para construir
  • 17:32 - 17:34
    encriptación de clave pública.
Title:
La permutación de puerta falsa RSA (18 min)
Video Language:
English

Spanish subtitles

Revisions