diff --git a/01-conceptos.html b/01-conceptos.html index 7df345f..0ea169d 100644 --- a/01-conceptos.html +++ b/01-conceptos.html @@ -215,13 +215,12 @@ /* hide footer and pagination */display:none}div#\:\$p>svg>foreignObject>section.last-slide a,div#\:\$p>svg>foreignObject>section.last-slide p{color:#111} /* You can add custom style here. VSCode supports this. Other editor might need these custom code in - the YAML header: section: | */div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]{columns:initial!important;display:block!important;padding:0!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]:after,div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]:before,div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=content]:after,div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=content]:before{display:none!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]{all:initial;display:flex;flex-direction:row;height:100%;overflow:hidden;width:100%}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container][data-marpit-advanced-background-direction=vertical]{flex-direction:column}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background][data-marpit-advanced-background-split]>div[data-marpit-advanced-background-container]{width:var(--marpit-advanced-background-split,50%)}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background][data-marpit-advanced-background-split=right]>div[data-marpit-advanced-background-container]{margin-left:calc(100% - var(--marpit-advanced-background-split, 50%))}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]>figure{all:initial;background-position:center;background-repeat:no-repeat;background-size:cover;flex:auto;margin:0}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]>figure>figcaption{position:absolute;border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;white-space:nowrap;width:1px}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=content],div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=pseudo]{background:transparent!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=pseudo],div#\:\$p>svg[data-marpit-svg]>foreignObject[data-marpit-advanced-background=pseudo]{pointer-events:none!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background-split]{width:100%;height:100%}
+ the YAML header: section: | */div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]{columns:initial!important;display:block!important;padding:0!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]:after,div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]:before,div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=content]:after,div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=content]:before{display:none!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]{all:initial;display:flex;flex-direction:row;height:100%;overflow:hidden;width:100%}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container][data-marpit-advanced-background-direction=vertical]{flex-direction:column}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background][data-marpit-advanced-background-split]>div[data-marpit-advanced-background-container]{width:var(--marpit-advanced-background-split,50%)}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background][data-marpit-advanced-background-split=right]>div[data-marpit-advanced-background-container]{margin-left:calc(100% - var(--marpit-advanced-background-split, 50%))}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]>figure{all:initial;background-position:center;background-repeat:no-repeat;background-size:cover;flex:auto;margin:0}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]>figure>figcaption{position:absolute;border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;white-space:nowrap;width:1px}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=content],div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=pseudo]{background:transparent!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=pseudo],div#\:\$p>svg[data-marpit-svg]>foreignObject[data-marpit-advanced-background=pseudo]{pointer-events:none!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background-split]{width:100%;height:100%}

Conceptos básicos de la criptografía

Juan Vera del Campo - juan.vera@professor.universidadviu.com

-
-
+

Hoy hablamos de...

    @@ -229,16 +228,14 @@

    Hoy hablamos de...

  1. Estrategias de los sistemas seguros
  2. Resumen y referencias
-
-
+
Servicios criptográficos

Servicios criptográficos

¿Qué queremos proteger?

-
-
+
Servicios criptográficos

¿Qué es la criptografía?

Protección de la comunicaciones a través de medios desprotegidos entre un emisor y uno o varios destinatarios

@@ -247,9 +244,8 @@

¿Qué es la criptografía?

Fondo: (c) cottonbro. Free to use

-
-
+
Servicios criptográficos

¿Qué queremos proteger?

@@ -278,9 +274,8 @@

¿Qué queremos proteger?

-
-
+
Servicios criptográficos

¿Contra quién nos queremos proteger?

@@ -311,9 +306,8 @@

¿Contra quién nos quere
  • Complejidad en los procesos
  • Decidir, evaluar y asumir el riesgo de ataques contra los que no nos podemos proteger

    - -
    +
    Servicios criptográficos

    El problema que queremos resolver

    Firma digital de un contrato entre dos empresas

    @@ -323,9 +317,8 @@

    El problema que queremos resolver

    Ninguna de las dos empresas puede cambiar unilateralmente el contrato
  • Ninguna de las empresas debe poder decir que no firmó el contrato
  • -
    -
    +
    Servicios criptográficos

    Principales servicios de seguridad

    New Directions in Cryptography (Whitfield Diffie y Martin Hellman, 1976) exploraba qué se necesitaba para que dos empresas pudiesen firmar un contrato mercantil:

    @@ -339,9 +332,8 @@

    Principales servicios de seguridad

    Estándar: NIST Special Publication 800-57 Part 1, Section 3

    -

    -
    +
    Servicios criptográficos

    Otros servicios de seguridad

      @@ -352,24 +344,21 @@

      Otros servicios de seguridad

    • Anonimato: el emisor quiere ocultar su identidad
    • etcétera
    -
    -
    +
    Servicios criptográficos

    center

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

    -
    -
    +
    Estrategias de seguridad

    Estrategias de los sistemas seguros

    The thing is secure if its outputs look like random junk

    -
    -
    +
    Estrategias de seguridad

    Modelo de sistema criptográfico

    @@ -381,9 +370,8 @@

    Modelo de sistema criptográfico y : clave criptográfica de cifrado o descifrado: parte secreta de los algoritmos de cifrado y descifrado
  • Objetivo:
  • -

    -
    +
    Estrategias de seguridad

    Principios de Kerckhoffs

    @@ -397,9 +385,8 @@

    Principios de Kerckhoffs

  • El sistema debe ser operable por una única persona
  • El sistema debe ser fácil de utilizar.
  • -
    -
    +
    Estrategias de seguridad

    Máxima de Shannon

    @@ -410,9 +397,8 @@

    Máxima de Shannon

    Communication Theory of Secrecy Systems, Claude E. Shannon, Bell System Technical Journal, vol.28-4, page 656--715, Oct. 1949.
    Hablaremos más de Shanon en el tema 3

    -
    -
    +
    Estrategias de seguridad

    Gestión de claves

    @@ -422,14 +408,12 @@

    Gestión de claves

  • Contraseña: palabra que utilizamos para entrar en un sistema. "Sesamo"
  • Clave criptográfica: conjunto de números que dan seguridad a un sistema: "82198329382371291821201"
  • -
    -
    +
    Estrategias de seguridad

    -
    -
    +
    Estrategias de seguridad

    Primitivas: hash

    Calcula un resumen sobre un mensaje. Para validar el resumen, se vuelve a calcular y se compara

    @@ -439,9 +423,8 @@

    Primitivas: hash

    Hablaremos del hash en el tema 6

    -
    -
    +
    Estrategias de seguridad

    Primitivas: clave simétrica

    @@ -457,9 +440,8 @@

    Primitivas: clave simétrica

    Hablaremos del cifrado simétrico en el tema 3

    AVISO: pasar el password como argumento no es buena práctica. Solo se presenta aquí como ejemplo

    -
    -
    +
    Estrategias de seguridad

    Primitivas: clave asimétrica

      @@ -479,9 +461,8 @@

      Primitivas: clave asimétrica

      Hablaremos del cifrado asimétrico en el tema 5

      -
    -
    +
    Estrategias de seguridad

    Servicios de seguridad a primitivas

    @@ -514,9 +495,8 @@

    Servicios de seguridad a primitivas

    -
    -
    +
    Estrategias de seguridad

    Protocolos criptográficos

    If A is a secure thingamajig, then B is a secure doohickey

    @@ -527,9 +507,8 @@

    Protocolos criptográficos

  • Composición de algoritmos que crean protocolos de seguridad.
  • La composición es compleja y todo debe funcionar como un reloj.

    -
    -
    +
    Estrategias de seguridad

    Seguridad del protocolo de seguridad.

    La fortaleza (o debilidad) de la criptografía depende de todos los eslabones de la cadena:

    @@ -540,9 +519,8 @@

    Seguridad del protocolo de segurid
  • implementación (condiciones de uso, abuso de buffers, abuso de la máquina de estados)
  • gestión (PKI, gestión de certificados...)
  • -

    -
    +
    Estrategias de seguridad

    Composición de algoritmos

    Habitualmente no usamos una única primitiva/función criptográfica:

    @@ -552,38 +530,32 @@

    Composición de algoritmos

  • robustez: muchas primitivas (individuales) no devuelven error en caso de que algo vaya mal (una firma asimétrica simplemente devuelve un mensaje firmado distinto)
  • secuencias de mensajes: nos interesa proteger secuencias de mensajes o diálogos para que no llegen mensajes repetidos o desordenados.
  • -
    -
    +

    Resumen y referencias

    -
    -
    +
    • Diseña el sistema pensando que el atacante lo conoce.
    • Servicios básicos de seguridad: confidencialidad, integridad, autenticación, no repudio.
    • Técnicas para ofrecer estos servicios: criptografía simétrica, criptografía asimétrica, intercambio de claves, firma digital, funciones de hash, protocolos (composisión de técnicas)
    • La seguridad del sistema depende de que todos los engranajes encajen totalmente: algoritmos escogidos, sus parámetros de configuración, los protocolos utilizados...
    -
    -
    +

    Referencias

    -
    -
    +

    Continúa en: Criptografía clásica

    Es muy recomendable tener a mano el glosario para recordar los conceptos fundamentales

    -
    -
    +

    ¡Gracias!

    -

    Tradicionalmente hemos entendido la criptogafía como las técnicas para mantener un mensaje confidencial y que solo pueda leerlo la persona para la que está destinado. diff --git a/02-historia.html b/02-historia.html index 163ea74..bd7d257 100644 --- a/02-historia.html +++ b/02-historia.html @@ -215,46 +215,41 @@ /* hide footer and pagination */display:none}div#\:\$p>svg>foreignObject>section.last-slide a,div#\:\$p>svg>foreignObject>section.last-slide p{color:#111} /* You can add custom style here. VSCode supports this. Other editor might need these custom code in - the YAML header: section: | */div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]{columns:initial!important;display:block!important;padding:0!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]:after,div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]:before,div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=content]:after,div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=content]:before{display:none!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]{all:initial;display:flex;flex-direction:row;height:100%;overflow:hidden;width:100%}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container][data-marpit-advanced-background-direction=vertical]{flex-direction:column}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background][data-marpit-advanced-background-split]>div[data-marpit-advanced-background-container]{width:var(--marpit-advanced-background-split,50%)}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background][data-marpit-advanced-background-split=right]>div[data-marpit-advanced-background-container]{margin-left:calc(100% - var(--marpit-advanced-background-split, 50%))}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]>figure{all:initial;background-position:center;background-repeat:no-repeat;background-size:cover;flex:auto;margin:0}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]>figure>figcaption{position:absolute;border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;white-space:nowrap;width:1px}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=content],div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=pseudo]{background:transparent!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=pseudo],div#\:\$p>svg[data-marpit-svg]>foreignObject[data-marpit-advanced-background=pseudo]{pointer-events:none!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background-split]{width:100%;height:100%}

    + the YAML header: section: | */div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]{columns:initial!important;display:block!important;padding:0!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]:after,div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]:before,div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=content]:after,div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=content]:before{display:none!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]{all:initial;display:flex;flex-direction:row;height:100%;overflow:hidden;width:100%}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container][data-marpit-advanced-background-direction=vertical]{flex-direction:column}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background][data-marpit-advanced-background-split]>div[data-marpit-advanced-background-container]{width:var(--marpit-advanced-background-split,50%)}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background][data-marpit-advanced-background-split=right]>div[data-marpit-advanced-background-container]{margin-left:calc(100% - var(--marpit-advanced-background-split, 50%))}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]>figure{all:initial;background-position:center;background-repeat:no-repeat;background-size:cover;flex:auto;margin:0}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]>figure>figcaption{position:absolute;border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;white-space:nowrap;width:1px}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=content],div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=pseudo]{background:transparent!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=pseudo],div#\:\$p>svg[data-marpit-svg]>foreignObject[data-marpit-advanced-background=pseudo]{pointer-events:none!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background-split]{width:100%;height:100%}

    Historia de la criptografía

    Juan Vera del Campo - juan.vera@professor.universidadviu.com

    -
    -
    +

    Años 40: Alemania controla Europa y amenaza al resto del mundo

    Sus comunicaciones radio están protegidas con "la cifra indescifrable"

    ¿Por qué pensaban que era indescifrable?

    ¿Cómo se descifró?

    ¿Qué hemos aprendido desde entonces?

    -
    -
    +

    Hoy hablamos de...

    1. Criptografía clásica
    2. Cifrado César
    3. -
    4. Mejoras al cifrado César: sistemas polialfabéticos
    5. -
    6. Confidencialidad perfecta
    7. -
    8. Resumen y referencias
    9. +
    10. Mejoras al cifrado César: sistemas polialfabéticos
    11. +
    12. Confidencialidad perfecta
    13. +
    14. Resumen y referencias
    -
    -
    +
    Criptografía clásica

    Criptografía clásica

    -
    -
    +
    Criptografía clásica

    Criptografía = cifrado

    Hasta los años 70 del siglo XX, la criptografía se usaba solo en el ámbito militar y solo ofrecía confidencialidad:

    El enemigo no puede saber nuestros planes

    El resultado debería ser un mensaje igual que el original

    -
    -
    +
    Criptografía clásica

    Mecanismos clásicos de cifrado

      @@ -266,9 +261,8 @@

      Mecanismos clásicos de cifrado

    • Cifrados por transposición: mover letras de sitio.
    -
    -
    +
    Criptografía clásica

    Transposición: escítala griega

    @@ -277,9 +271,8 @@

    Transposición: escítala grieg
  • Envío: se enrolla una cinta de forma espiral a uno de los bastones y se escribía el mensaje longitudinalmente.
  • Recepción: se enrollaba la cinta en la vara gemela para leer el mensaje original.
  • -

    -
    +
    Criptografía clásica

    Sustitución: cifrado César

    @@ -287,16 +280,14 @@

    Sustitución: cifrado César

  • Es un cifrado monoalfabético: "sustituimos una letra por otra que viene posiciones detrás"
  • Es más antiguo que los romanos: incluso la Biblia hebrea incluye palabras con cifrado de sustitución y evitar así escribir la palabra real.
  • -
    -
    +
    César y la fortaleza

    Cifrado César

    Fuerza bruta, análisis frecuencial y fortaleza de un algoritmo

    -
    -
    +
    César y la fortaleza

    Historia

      @@ -304,9 +295,8 @@

      Historia

    • Como todos los cifrados de sustitución monalfabética, se descifra con facilidad y en la práctica no ofrece apenas seguridad en la comunicación.

    El cifrado César forma parte de sistemas más complejos de codificación, como el cifrado Vigenère, e incluso tiene aplicación en el sistema ROT13, y su estudio sirve para entender por qué los cifrados fallan.

    -
    -
    +
    César y la fortaleza

    Cifrado

    @@ -315,24 +305,21 @@

    Cifrado

    Si necesitas repasar la aritmética modular, consulta el glosario

    -
    -
    +
    César y la fortaleza

    Descifrado

    Giramos la tabla. Fíjate: para , el descifrado es equivalente a cifrar con :

    -

    -
    -
    +

    +
    César y la fortaleza

    Seguridad del cifrado del César: fuerza bruta

    HOLAMUNDO
    ELIXJRKAL

    ¿qué podemos hacer si solo tenemos el texto cifrado ELIXJRKAL?

    , así que podemos probar las 26 claves una a una: ataque de fuerza bruta

    -
    -
    +
    César y la fortaleza

    Ataque de fuerza bruta

    Un ataque de fuerza bruta implica probar sobre el mensaje cifrado todas las posibles claves hasta que encontremos la "buena":

    @@ -340,9 +327,8 @@

    Ataque de fuerza bruta

  • descifrar con la clave
  • y validar si es válido. Es decir, si
  • -
    -
    +
    César y la fortaleza

    Descifrada una carta encriptada de las guerras carlistas escrita en Bizkaia

    @@ -350,9 +336,8 @@

    Ataque de fuerza bruta

    https://www.elcorreo.com/culturas/descifra-carta-encriptada-20211108081121-nt.html

    -
    -
    +
    César y la fortaleza

    Pero no siempre es posible saber si un mensaje se ha descifrado correctamente:

    @@ -360,17 +345,15 @@

    Ataque de fuerza bruta

  • El manuscrito Voynich aún no ha sido descifrado. Suponiendo que use César, no se sabe en qué lengua está escrito originalmente.
  • Imagina que solo está cifrada la hora "atacamos a las X"... Si una clave descifra "a las 5" y otra "a las 7" ¿cómo validamos qué hora es correcta?
  • -
    -
    +
    César y la fortaleza

    Contramedidas

    ¿Cómo podemos proteger estos sistemas contra la fuerza bruta?

    -
    -
    +
    César y la fortaleza

    La defensa contra los ataques de fuerza bruta son:

      @@ -379,9 +362,8 @@

      Contramedidas

    Que el descifrado sea costoso tiene el problema de que también le costará al receptor, que descifra legítimamente. Actualmente no se recomienda

    Queda por tanto "que el adversario tenga que hacer muchas operaciones de descifrado". Es decir: que el atacante tenga que probar muchas claves.

    -
    -
    +
    César y la fortaleza

    Fuerza bruta

      @@ -393,28 +375,40 @@

      Fuerza bruta

    • es decir claves/€/h

    Si tenemos capacidad de diseñar/fabricar en hardware (ASIC) los costes bajan después de un periodo de amortización

    -
    -
    +
    César y la fortaleza
    -

    Alquilando equipos en la nube por segundos, con un euro cada segundo podemos probar claves

    Si estimamos que nuestro "secreto" vale 1000 €:

    Nos hacen falta un sistema criptográfico que permita escoger entre claves diferentes () para guardar el secreto durante una hora.

    Este sistema tendría fortaleza 48 bits: un atacante tiene que probar claves si quiere romperlo por fuerza bruta

    -

    Observa: aumentando el número de bits de la clave aumentamos exponencialmente el tiempo necesario para romper el sistema. Con 128 bits... necesitaríamos miles de años.

    -

    La fortaleza o seguridad de un algoritmo es el tamaño en bits de su espacio de claves. Es decir, el número de claves diferentes posibles. Normalmente se expresa en bits.

    - +

    Observa: aumentando el número de bits de la clave aumentamos exponencialmente el tiempo necesario para romper el sistema. Con 128 bits... necesitaríamos miles de años

    +
    +
    +
    César y la fortaleza
    +

    Fortaleza de un algoritmo

    + +

    ¿Qué es más seguro, DES, AES o RSA? Para comparar la seguridad de los algoritmos usamos el concepto de fortaleza

    +

    En los algoritmos bien diseñados, su fortaleza depende solo del tamaño de la clave: claves más largas tienen una fortaleza mayor

    +

    La fortaleza o seguridad de un algoritmo es el número de claves que tienen que probar un atacante por fuerza bruta para romper un algoritmo. Normalmente se expresa en bits.

    -
    +
    +
    César y la fortaleza
    +

    Ejemplos:

    +
      +
    • Si el atacante tiene que romper César por fuerza bruta, tiene que probar 28 contraseñas diferentes: entre 4 y 5 bits de fortaleza
    • +
    • Si el atacante tiene que probar claves para romper un algoritmo, este algoritmo tiene fortaleza 48 bits
    • +
    +

    Los algoritmos actuales tienen fortalezas de 128 ó 256 bits, pero ya veremos esto con más detalles en sesiones posteriores

    +
    +
    César y la fortaleza

    Aumentando el espacio de claves en César: mapeo aleatorio

    Hemos visto que el César original tiene como máximo 26 claves, aproximadamente , es decir, entre 4 y 5 bits de fortaleza.

    Podemos mejorarlo permitiendo cualquier mapeo aleatorio:

    Ahora tenemos posibles claves, , 88 bits de fortaleza.

    -
    -
    +
    César y la fortaleza

    ¿Cuánto tiempo necesitamos guardar un secreto?

      @@ -424,9 +418,8 @@

      ¿Cuánto tiemp

    Piensa: en 10 años la tecnología ha avanzado mucho: lo que ahora cuesta 100 años, ¡en 10 años podría ser automático!

    Más sobre esto en el tema 3

    -
    -
    +
    César y la fortaleza

    Mejorando la fuerza bruta

    ¿Podemos encontrar un método más rápido que probar las claves una a una?

    @@ -437,31 +430,28 @@

    Mejorando la fuerza bruta

    uhhpsodcdgd sru rwud ohwud

    https://www.dcode.fr/caesar-cipher

    Si el mensaje es suficientemente largo, podemos analizar la frecuencia de aparición de los carácteres

    -
    -
    +
    César y la fortaleza

    Análisis de frecuencias

    ¡La estadística se mantiene igual (pero movida) después del cifrado César!

    -
    -
    +
    César y la fortaleza

    Rotura de algoritmos criptográficos

    El cifrado César, incluso con mapeos aleatorios, lleva roto como mínimo desde el siglo IX, cuando Al-Kindi describió por primera vez el análisis de frecuencia contra el cifrado César

    +

    Es decir: no es necesario probar todas las claves ciegamente. Por ejemplo, podemos descartar todas aquellas que darían un texto con un número imposible de Z

    Un algoritmo está roto desde el punto de vista criptográfico cuando se conoce un ataque más eficiente que la fuerza bruta.

    -
    -
    +
    Vigenère y Enigma

    Mejoras al cifrado César: sistemas polialfabéticos

    Vigenère y Enigma

    -
    -
    +
    Vigenère y Enigma

    Transponer y sustituir

    @@ -472,17 +462,15 @@

    Transponer y sustituir

    XZCTEROSIULKWNGYQFHDJVMAPB

    Todo esto aumenta el espacio de claves, pero sigue siendo vulnerable a análisis de frecuencia.

    -
    -
    +
    Vigenère y Enigma

    Tabula recta

    Johannes Trithemius en 1508, con el primer libro conocido dedicado a la criptografía, inició el sistema de cifrados polialfabéticos...

    ...al principio sin clave.

    -
    -
    +
    Vigenère y Enigma

    Cifrado de Vigenère

    Cifrado polialfabético de Giovan Battista Bellaso en 1553, pero atribuido a Vigenère

    @@ -492,9 +480,8 @@

    Cifrado de Vigenère

    Es decir: la primera letra se desplaza 23 posiciones, la segunda 8, la tercera 3, luego 23 otra vez, luego 8, luego 3...

    Habitualmente se escriben las letras que cifran el texto "AAA":

    -
    -
    +
    Vigenère y Enigma

    @@ -507,23 +494,20 @@

    Cifrado de Vigenère

    ||| ||| ||| EWO XUX KLR -
    -
    +
    Vigenère y Enigma

    "Le chiffre indéchiffrable" se utilizó desde el siglo XVI hasta bien entrado el siglo XX.

    ...aunque ya había expertos en romperlo en el siglo XIX.

    -
    -
    +
    Vigenère y Enigma

    Ejemplo

    Wr urutlsyrmjae, wl omxvsda Gwwsr, feefaez ggrgcuhg ggma gajjaps hsj dqwhpszmqaifta, gghaga hw Gwsmv g hwsbpsdsmuifxg dq Gwwsr, qw mrs dq psw leoragss pi umxrmhg qss emetdee c eek ueevek. Ee yf xapa hw gafdevs hod wmwlifyumgn qr wp iuq yfe defvs if ex xwblo avakanmp ww jeqqhpszmhs tgr axje defvs

    https://www.dcode.fr/vigenere-cipher

    -
    -
    +
    Vigenère y Enigma

    Seguridad de Vigenére

    Ahora el espacio de claves es (clave de 3 carácteres):

    @@ -534,9 +518,8 @@

    Seguridad de Vigenére

  • Si , existen claves diferentes. Coste de fuerza bruta: 0,5 €
  • Si , existen claves diferentes. Coste: 100 mil millones de €
  • -
    -
    +
    Vigenère y Enigma

    Vulnerabilidad: la repetición de la clave, que además es de longitud adivinable y normalmente corta.

    @@ -546,9 +529,8 @@

    Seguridad de Vigenére

    Vigenère está también roto. Su análisis es más laborioso que César, pero no es necesaria la fuerza bruta sobre todo el espacio de claves.

    Un espacio de claves grande no es suficiente
    No se debe cifrar dos trozos del mensaje con la misma clave

    -
    -
    +
    Vigenère y Enigma

    Máquina Enigma

      @@ -557,15 +539,13 @@

      Máquina Enigma

    • Finalmente "vencida" por Alan Turing.
    • Ejemplo de uso
    -
    -
    +
    Vigenère y Enigma

    -
    -
    +
    Vigenère y Enigma

    Máquina Enigma: seguridad

    -
    +
    Vigenère y Enigma

    Protocolo alemán de uso:

    @@ -587,9 +566,8 @@

    Máquina Enigma: seguridad

  • Parte de la clave la escogían los operadores de radio y se enviaba por las ondas al inicio
  • El texto era natural
  • -
    -
    +
    Vigenère y Enigma

    Se rompió más "por mal protocolo" que porque el sistema fuese defectuoso

    @@ -603,25 +581,22 @@

    Máquina Enigma: seguridad

  • El texto era natural: nada que reportar, hitler, meteorología... aparecían con mucha frecuencia
  • -
    -
    +
    Vigenère y Enigma

    Una vez reducido el espacio de clave, identificados qué textos es probable que apareciesen y otros atajos...

    ...el cifrado del día se podía romper por fuerza bruta en 20 minutos, cada mañana, utilizando una batería de máquinas llamada "Bombe"

    La "Bombe" fue una de las primeras máquinas de procesado binario.

    El descifrado de Enigma fue una de las claves que permitió a los aliados ganar la Segunda Guerra Mundial

    -
    -
    +
    Confidencialidad perfecta

    Confidencialidad perfecta

    One-time-pad (cifrado Vernam)

    -
    -
    +
    Confidencialidad perfecta

    Confidencialidad perfecta

    @@ -633,15 +608,13 @@

    Confidencialidad perfecta

    Communication Theory of Secrecy Systems, Claude E. Shannon, Bell System Technical Journal, vol.28-4, page 656--715, Oct. 1949.

    -
    -
    +
    Confidencialidad perfecta

    Definición exacta:

    Confidencialidad perfecta (perfect secrecy): un sistema es perfectamente seguro si y solo si para cualquier distribución de probabilidad sobre el espacio de mensajes en claro , y para todos los mensajes en claro y para todos los textos cifrados posibles , la probabilidad condicionada de dada y la probabilidad de coinciden

    -

    -
    -
    +

    +
    Confidencialidad perfecta

    Si un cifado perfecto teórico cifra como XHAJSJXXNFHFDOIOJUMNFNNNF:

    @@ -651,9 +624,8 @@

    Confidencialidad perfecta

  • un atacante no sabe qué mensaje es el que realmente se cifró, así que nosabe si ha acertado la clave
  • Un cifrado perfecto no puede descifrarse ni siquiera por fuerza bruta porque un atacante no puede distinguir el mensaje real de todos los mensajes falsos posibles

    -
    -
    +
    Confidencialidad perfecta

    ¿A qué hora atacamos?

    @@ -666,9 +638,8 @@

    ¿A qué hora atacamos?

    El enemigo captura este mensaje: "Atacamos a las F horas"

    ¿Tiene alguna forma el enemigo de conocer a qué hora le atacarán?

    -
    -
    +
    Confidencialidad perfecta
      @@ -684,9 +655,8 @@

      ¿A qué hora atacamos?

    • Fíjate: el mapeo tiene que ser de números completos. Si no y el enemigo intercepta un mensaje HK, sabe que H es 1 ó 2 porque no hay "hora 37": el mapeo tiene que ser completo (es decir: clave tan larga como el mensaje)
    • Hay que volver a enviar una nueva clave cada vez que queramos enviar un mensaje nuevo, con el riesgo de que el enemigo intercepte el mensaje de envío de clave
    -
    -
    +
    Confidencialidad perfecta

    Convirtiendo Vigènere en cifrado perfecto: cifrado Vernam

    El cifrado de Vigenère sufría un problema similar al del César (aunque camuflado): manifestaba la estadística del mensaje en claro en el mensaje cifrado

    @@ -697,9 +667,8 @@

    Convirtie
  • no conocida por el atacante. Es decir: totalmente aleatoria
  • la clave no se usa nunca más
  • -

    -
    +
    Confidencialidad perfecta

    Vernam patentó el one-time-pad de una manera similar pero equivalente:

    @@ -712,17 +681,15 @@

    Convirtie

    Si lo necesitas, mira la operación XOR en el glosario

    -

    -
    +
    Confidencialidad perfecta

    El teléfono rojo entre Washington y Moscú fue en realidad un teletipo que usaba cifrado de bloque de un solo uso

    La clave se intercambiaba por valija diplomática en cinta perforada que se entregaba en ambos sentidos. Mientras no hacía falta, se guardaba protegida y se destruía después de ser usada

    Además, el one-time-pad permitía trabajar de forma segura sin intercambiar ningún algoritmo secreto que diera ventaja técnica al enemigo

    Para poder usar un one-time-pad, la clave se prepara por adelantado para cuando haga falta enviar algún mensaje inmediatamente.

    -
    -
    +
    Confidencialidad perfecta

    Vulnerabilidades

    Ninguna. Ni siquiera por fuerza bruta: si pruebas claves, puedes "descifrar" el texto cifrado y conseguir cualquier mensaje que se te ocurra...

    @@ -733,35 +700,30 @@

    Vulnerabilidades

  • aleatoria (i.e. uniformemente distribuida)
  • Los humanos somos muy malos para distinguir qué es y qué no es aleatorio

    -
    -
    +
    Confidencialidad perfecta

    Pero el principal problema es que la longitud en bytes de es igual a la longitud en bytes de .

    Cuesta tanto enviar de forma segura como enviar directamente en claro por el mismo canal seguro

    Más ejemplos: https://www.cryptomuseum.com/covert/conceal/index.htm

    -
    -
    +
    Confidencialidad perfecta
    • Al final de la segunda guerra mundial, EEUU descifró el one-time-pad usado por los diplomáticos alemanes porque utilizaban contraseñas no totalmente aleatorias y podían adivinarse.
    • 1944: EEUU descifró mensajes de la URSS a Australia... porque utilizaban el mismo one-time-pad que la URSS usaba con EEUU.
    • 1962 (ataque canal lateral): las máquinas usadas para cifrar eran eléctricas y emitían un campo magnético, que Japón podría haber aprovechado para captar qué cifraba la embajada de EEUU: TEMPEST
    -
    -
    +

    Resumen y referencias

    -
    -
    +

    center

    -
    -
    +
    • La información de contexto puede ayudar a descifrar un mensaje
    • Definimos la fortaleza de un algoritmo como el tamaño de la clave en bits, si no se puede romper más que por fuerza bruta
    • @@ -776,15 +738,13 @@

      Resumen y referencias

    • Hasta los '70 la criptografía o era "insegura" (cifrados César, Vigenere, Enigma) o no era "práctica" (one-time-pad)
    -
    -
    +

    1976, el año que empezó todo...

    La NSA selecciona un algoritmo de cifrado simétrico de IBM para comunicaciones de la administración: DES (Data Encryption Standard), que es "casi" perfecto.

    Whitfield Diffie y Martin Hellman generan el primer algoritmo práctico de criptografía asimétrica, que permite distribuir fácilmente claves seguras.

    -
    -
    +

    Referencias

    -
    -
    +

    Ejercicios opcionales pero muy recomendables:

    Continúa en: Criptografía simétrica

    -
    -
    +

    ¡Gracias!

    -

    ¿Recordáis la máxima de Shanon y los principios de Kerckhoffs? "El adversario conoce el sistema". Es decir: los único que debe ser secreto (a parte del mensaje, claro) es la clave de cifrado/descifrado. Se tiene que asumir que el adversario conoce las funciones e() y d() @@ -849,25 +806,25 @@

    ¡Gracias!

    Images: free for commercial use: - https://pixabay.com/photos/money-cards-business-credit-card-256319/ -- https://pixabay.com/photos/lock-combination-security-safety-1929089/

    Estos cálculos están desactualizados y son más rápidos cada año. En cualquier caso sirven para hacernos una idea de lo rápido que pueden hacer fuerza bruta los ordenadores actuales

    No recuerdo qué cifré aquí, ni con que clave, pero no parece difícil descubrirlo. +- https://pixabay.com/photos/lock-combination-security-safety-1929089/

    Estos cálculos están desactualizados y son más rápidos cada año. En cualquier caso sirven para hacernos una idea de lo rápido que pueden hacer fuerza bruta los ordenadores actuales

    No recuerdo qué cifré aquí, ni con que clave, pero no parece difícil descubrirlo. - Hay letras solas, que en castellano solo pueden ser a, y, o. También e, u, pero es muy improbable. Cualquier otra letra será aún más improbable. Por eso la criptografía clásica en realidad nunca ha usado espacios: da mucha información al adversario - Haciendo análisis de frecuencias, la h aparece muchas veces: es muy probable que sea a ó e - Los dígrafos hv gh (varias veces...) podrían ser es, el, me, le ó se -**La información de contexto nos ayuda a descifrar (espacios, lenguaje...)**. Eso también pasa en una web actual: ¿qué es lo que tiene un mensaje cifrado a un banco inmediatamente después de visitar una tienda?

    En vez de usar un movimiento en el alfabeto, podemos cambiar totalmente el alfabeto. Eso aumenta espectacularmente el espacio de claves, hasta el punto de que no es posible para un humano hacer fuerza bruta... +**La información de contexto nos ayuda a descifrar (espacios, lenguaje...)**. Eso también pasa en una web actual: ¿qué es lo que tiene un mensaje cifrado a un banco inmediatamente después de visitar una tienda?

    En vez de usar un movimiento en el alfabeto, podemos cambiar totalmente el alfabeto. Eso aumenta espectacularmente el espacio de claves, hasta el punto de que no es posible para un humano hacer fuerza bruta... ... pero no impide hacer análisis frecuencial. Cualquiera de estas propuestas está tan rota como el cifrado César. -Imagen: https://i1.wp.com/nozdr.ru/_media/games/quest/for/cipher/marshrut.png

    La primetra letra del mensaje se cifra con la primera columna, la segunda con la segunda... y así. ¡El texto ya no es analizable por frecuencias! +Imagen: https://i1.wp.com/nozdr.ru/_media/games/quest/for/cipher/marshrut.png

    La primetra letra del mensaje se cifra con la primera columna, la segunda con la segunda... y así. ¡El texto ya no es analizable por frecuencias! Pero no comple la máxima de Shanon: el sistema es seguro solo mientras que la table se mantenga en secreto. -La tabula recta abrió el camino de los cifrados polialfabéticos. Solo unos 20 años después, Battista Bellaso añadió una clave al sistema

    Fíjate: el "tabula recta" es un Vigenère con una clave fija que se se puede cambiar $k=ABCD...WXYZ$

    Images: https://people.duke.edu/~ng46/collections/crypto-disk-us-ww1-front.jp

    clave: SESAME +La tabula recta abrió el camino de los cifrados polialfabéticos. Solo unos 20 años después, Battista Bellaso añadió una clave al sistema

    Fíjate: el "tabula recta" es un Vigenère con una clave fija que se se puede cambiar $k=ABCD...WXYZ$

    Images: https://people.duke.edu/~ng46/collections/crypto-disk-us-ww1-front.jp

    clave: SESAME Ahora el análisis frecuencil es mucho más complejo... ¡pero podemos agrupar los textos en grupos de 6 y aplicar frecuencias a cada columna! -¿Por qué 6? No lo sabemos. Podemos probar, o buscar ciclos (que son comunes) y estimar la longitud de la clabe. En ejemplo, la w está muchas veces en grupos de palabras solos: ¿quizá es la E cifrada con una de esas S de la clave?

    Entreguerras, guerra civil española, ejército alemán. En la guerra civil española, el bando sublevado utilizaba la versión comercial (que los ingleses sabían leer) +¿Por qué 6? No lo sabemos. Podemos probar, o buscar ciclos (que son comunes) y estimar la longitud de la clabe. En ejemplo, la w está muchas veces en grupos de palabras solos: ¿quizá es la E cifrada con una de esas S de la clave?

    Entreguerras, guerra civil española, ejército alemán. En la guerra civil española, el bando sublevado utilizaba la versión comercial (que los ingleses sabían leer) Fijate: @@ -877,15 +834,15 @@

    ¡Gracias!

    La clave era: posición de los rotores, letras iniciales en los rotores, posición de los cables. Todo esto cambiaba cada día. -Además, para evitar que todos los alemanes usasen cada día la misma clave en todos sus mensajes, había al inicio un pequeño paso adicional de anuncio de "clave de sesión".

    https://res.cloudinary.com/practicaldev/image/fetch/s--2qwhwBZd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/maxime1992/my-dev.to/master/blog-posts/enigma-part-1/assets/enigma-schema.jpg +Además, para evitar que todos los alemanes usasen cada día la misma clave en todos sus mensajes, había al inicio un pequeño paso adicional de anuncio de "clave de sesión".

    https://res.cloudinary.com/practicaldev/image/fetch/s--2qwhwBZd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/maxime1992/my-dev.to/master/blog-posts/enigma-part-1/assets/enigma-schema.jpg El ejemplo de la derecha solo muestra la versión comercial sin el panel frontal de cables. -Los aliados tenían copias de la versión comercial pero no la versión militar. No sabían, entre otros detalles, cómo estaban cableados los rotores por dentro. Además, la versión militar tenía 5 rotores disponibles, de los que cada día se usaban tres.

    excepto la longitud... y el momento de enviarlo, ...y el número de mensajes

    Desde que los matemáticos entraron en la criptografía, existe definiciones de todos los términos tan exactas y formales como incomprensibles para un profano +Los aliados tenían copias de la versión comercial pero no la versión militar. No sabían, entre otros detalles, cómo estaban cableados los rotores por dentro. Además, la versión militar tenía 5 rotores disponibles, de los que cada día se usaban tres.

    excepto la longitud... y el momento de enviarlo, ...y el número de mensajes

    Desde que los matemáticos entraron en la criptografía, existe definiciones de todos los términos tan exactas y formales como incomprensibles para un profano Cosas que implica: - Lo que dijimos antes: dado un texto cifrado, no conocemos nada de su texto en claro -- Dado un texto cifrado, el mensaje en claro podría ser cualquiera:

    Un sistema tan sencillo como este se utilizó en la realidad: los espías tenían "libros de claves" de un colo uso que tenían que llevar escondidos.

    En realidad esto ya se sabía antes de que Vernan inventase su máquina. Pero el invento de Vernan permitió usar este tipo de cifrado, y además Shannon acabó formalizando la teoría matemática que empezó la criptografía moderna

    La criptografía actual empezó en 1976: se escogió un algoritmo de cifrado simétrico que es casi perfecto y además práctico, y se +- Dado un texto cifrado, el mensaje en claro podría ser cualquiera:

    Un sistema tan sencillo como este se utilizó en la realidad: los espías tenían "libros de claves" de un colo uso que tenían que llevar escondidos.

    En realidad esto ya se sabía antes de que Vernan inventase su máquina. Pero el invento de Vernan permitió usar este tipo de cifrado, y además Shannon acabó formalizando la teoría matemática que empezó la criptografía moderna

    La criptografía actual empezó en 1976: se escogió un algoritmo de cifrado simétrico que es casi perfecto y además práctico, y se descubrió la criptogradía asimétrica que permitía publicar parte de la clave.

    \ No newline at end of file diff --git a/03-simetrica.html b/03-simetrica.html index a21bf63..d96ffba 100644 --- a/03-simetrica.html +++ b/03-simetrica.html @@ -217,14 +217,13 @@ Other editor might need these custom code in the YAML header: section: | */ /* section header { display: none; } */ -/* section footer { display: none; } */div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]{columns:initial!important;display:block!important;padding:0!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]:after,div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]:before,div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=content]:after,div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=content]:before{display:none!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]{all:initial;display:flex;flex-direction:row;height:100%;overflow:hidden;width:100%}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container][data-marpit-advanced-background-direction=vertical]{flex-direction:column}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background][data-marpit-advanced-background-split]>div[data-marpit-advanced-background-container]{width:var(--marpit-advanced-background-split,50%)}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background][data-marpit-advanced-background-split=right]>div[data-marpit-advanced-background-container]{margin-left:calc(100% - var(--marpit-advanced-background-split, 50%))}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]>figure{all:initial;background-position:center;background-repeat:no-repeat;background-size:cover;flex:auto;margin:0}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]>figure>figcaption{position:absolute;border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;white-space:nowrap;width:1px}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=content],div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=pseudo]{background:transparent!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=pseudo],div#\:\$p>svg[data-marpit-svg]>foreignObject[data-marpit-advanced-background=pseudo]{pointer-events:none!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background-split]{width:100%;height:100%}
    +/* section footer { display: none; } */div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]{columns:initial!important;display:block!important;padding:0!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]:after,div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]:before,div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=content]:after,div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=content]:before{display:none!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]{all:initial;display:flex;flex-direction:row;height:100%;overflow:hidden;width:100%}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container][data-marpit-advanced-background-direction=vertical]{flex-direction:column}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background][data-marpit-advanced-background-split]>div[data-marpit-advanced-background-container]{width:var(--marpit-advanced-background-split,50%)}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background][data-marpit-advanced-background-split=right]>div[data-marpit-advanced-background-container]{margin-left:calc(100% - var(--marpit-advanced-background-split, 50%))}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]>figure{all:initial;background-position:center;background-repeat:no-repeat;background-size:cover;flex:auto;margin:0}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]>figure>figcaption{position:absolute;border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;white-space:nowrap;width:1px}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=content],div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=pseudo]{background:transparent!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=pseudo],div#\:\$p>svg[data-marpit-svg]>foreignObject[data-marpit-advanced-background=pseudo]{pointer-events:none!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background-split]{width:100%;height:100%}

    Cifrado simétrico o de clave privada

    AES y ChaCha

    Juan Vera del Campo - juan.vera@professor.universidadviu.com

    -
    -
    +

    Como decíamos ayer...

    Sabemos conseguir confidencialidad perfecta que nadie puede descifrar (tema 2)

    Pero implica claves de un solo uso tan grandes como el mensaje:

    @@ -236,9 +235,8 @@

    Como decíamos ayer...

    Más ejemplos: https://www.cryptomuseum.com/covert/conceal/index.htm

    -
    -
    +

    Hoy hablamos de...

      @@ -249,14 +247,12 @@

      Hoy hablamos de...

    1. Cifrado AES
    2. Resumen
    -
    -
    +
    Confidencialidad computacional

    Confidencialidad computacional

    -
    -
    +
    Confidencialidad computacional

    Relajando la perfección

      @@ -267,9 +263,8 @@

      Relajando la perfección

      Imagen: Nitin Jain, Birgit Stiller, Imran Khan, Dominique Elser, Christoph Marquardt & Gerd Leuchs (2016) "Attacks on practical quantum key distribution systems (and how to prevent them)". DOI: 10.1080/00107514.2016.1148333

      -
    -
    +
    Confidencialidad computacional

    Confidencialidad perfecta (perfect secrecy): un sistema es perfectamente seguro si y solo si para cualquier distribución de probabilidad sobre el espacio de mensajes en claro, y para todos los mensajes en claro y para todos los textos cifrados posibles, la probabilidad condicionada de dado y la probabilidad de coinciden:

    @@ -280,9 +275,8 @@

    Relajando la perfección

  • Que la clave se use solo una vez, y después se descarte
  • La confidencialidad prerfecta no es práctica

    -
    -
    +
    Confidencialidad computacional

    Seguridad computacional: un sistema es seguro computacionalmente si cualquier algoritmo probabilístico en tiempo polinomial solo puede romper el algoritmo con probabilidad negligible en

    Informalmente: un atacante no puede descifrar el mensaje:

    @@ -292,9 +286,8 @@

    Relajando la perfección

  • ...probablemente
  • Con la seguridad computacional hay que definir el objetivo: "quiero un sistema criptográfico que mantenga este mensaje secreto durante los próximos 100 años"

    -
    -
    +
    Confidencialidad computacional

    Ataques de fuerza bruta

    @@ -304,9 +297,8 @@

    Ataques de fuerza bruta

  • Pero si es muy pequeña, es posible hacer fuerza bruta
  • Hay que usar un espacio de claves lo suficientemente grande como para que no sea posible hacer fuerza bruta hoy en día, y lo suficientemente pequeño como para que sea práctico

    -
    -
    +
    Confidencialidad computacional
      @@ -321,14 +313,12 @@

      Ataques de fuerza bruta

      Con hardware ad-hoc podemos llegar a multiplicar por ó veces
      ( ó veces). Ejemplo: Bitcoin

      Fortaleza de un sistema criptográfico: número de claves que hay que probar por fuerza bruta (en bits)

      -
    -
    +
    Confidencialidad computacional

    center

    -
    -
    +
    Confidencialidad computacional

    Tamaños recomendados de clave

    @@ -341,34 +331,30 @@

    Tamaños recomendados de clave

    Otras recomendaciones: https://www.keylength.com/en/compare/

    -
    -
    +
    Confidencialidad computacional

    NIST: The most important approach is to be flexible; the use of implementations and applications that can most easily be adapted to the cryptographic security offerings and a plan for transitioning to them offer the best solution

    center

    La amenaza conocida que puede modificar el calendario es la computación cuántica

    -
    -
    +
    Confidencialidad computacional

    Rompiendo algoritmos

    Recuerda: definimos un que un algoritmo está criptográficamente roto si se conoce un ataque más eficiente que la fuerza bruta

    Para la criptografía simétrica, buscaremos algoritmos computacionalmente seguros y que no estén rotos

    Cuando la comunidad criptográfica rompe un algoritmo, se sustituye por otro

    ... pero es mejor prevenir: los algoritmos caducan y se cambian antes de que estén rotos

    -
    -
    +
    Confidencialidad computacional

    Criptografía simétrica: tipos

    • Cifrado de flujo. Heredero de "la idea" one-time-pad: el mensaje llega como un flujo de bytes que se cifra según va llegando.
    • Cifrado de bloque. Heredero de "la tradición" Vigenère: el mensaje se divide en bloques que se cifran por separado
    -
    -
    +
    Confidencialidad computacional
    @@ -397,22 +383,19 @@

    Criptografía simétrica: tipos<

    -
    -
    +
    Cifrado de flujo

    Cifrado de flujo

    -
    -
    +
    Cifrado de flujo

    Es una implementación práctica de los bloques de una solo uso (one-time-pad)

    Recuerda: con one-time-pad necesitábamos una clave tan larga como el mensaje

    Para después hacer:

    -

    -
    -
    +

    +
    Cifrado de flujo

    En cifrado de flujo lo que haremos es generar una

    @@ -421,30 +404,26 @@

    Cifrado de flujo

    para después hacer:

    -
    -
    +
    Cifrado de flujo

    Cifrado de flujo: algoritmo

    center

    -
    -
    +
    Cifrado de flujo

    Generadores de números aleatorios

    La función PRNG (Pseudo Random Number Generator) es un generador de bits que tiene como entrada una semilla (que será la clave de cifrado ) y tiene como salida el flujo de bits que aplicaremos sobre el mensaje para cifrarlo con XOR

    La velocidad del cifrado depende totalmente de la velocidad del PRNG, porque el XOR es instantáneo

    -
    -
    +
    Cifrado de flujo

    Un PRNG es un algoritmo determinista que extiende una semilla realmente aleatoria, resultando en una secuencia que parece ser uniformemente aleatoria.

    Definición formal:

    PRNG: Dado , un algoritmo determinista en tiempo polinomial que toma una semilla y da como salida una cadena , donde es un polinomio y para todo . es un PRGN si su salida no puede distinguirse de una función aleatoria uniforme en tiempo polinomial.

    -
    -
    +
    Cifrado de flujo

    PRNG: seguridad

    @@ -455,34 +434,30 @@

    PRNG: seguridad

    Información adicional: https://www.incibe-cert.es/blog/comprobando-aleatoriedad

    -
    -
    +
    Cifrado de flujo
    • Distribución uniforme: debe tender a tener el mismo número de 1's que de 0's, tender al mismo número de 00's, que de 01's, 10's...
    • Despúes de un atacante no debe poder predecir el

    Con la semilla (la clave), la secuencia queda determinada en su totalidad, que es lo que nos interesa.

    -
    -
    +
    Cifrado de flujo

    La seguridad del cifrado depende del generador PRNG utilizado...

    ...y de que nunca se envíen dos mensajes cifrados con la misma clave

    (vamos a repetir esto muchas veces en el curso)

    Lorenz SZ fue una máquina alemana de cifrado de flujo, rota porque un operador envió dos mensajes diferentes seguidos sin cambiar la clave.

    -
    -
    +
    Cifrado de flujo

    Cifrado de flujo: algoritmo

    center

    En las próximas transparencias, exploraremos cómo podemos diseñar un cifrado de flujo a partir de un PRNG, y cómo la solución más obvia... no funciona

    -
    -
    +
    Cifrado de flujo

    Intento 1

    @@ -493,16 +468,14 @@

    Intento 1

    Información adicional: Chosen plaintext attacks

    -
    -
    +
    Cifrado de flujo

    Intento 2

    Cambiamos la clave (la semilla del PRNG) en cada transmisión

    Esto es correcto pero costoso, y volvemos a los problemas de la confidencilidad perfecta: cómo distribuimos una clave diferente para cada mensaje

    -
    -
    +
    Cifrado de flujo

    Intento 3

    Generar variaciones de las claves en cada transmisión

    @@ -510,17 +483,15 @@

    Intento 3

    Y lo enviamos con cada transmisión:

    Ahora la semilla "es diferente" con cada tranmisión

    Pero tenemos que asumir que un atacante conoce porque monitoriza nuestras comunicaciones

    -
    -
    +
    Cifrado de flujo

    Nonce: number used only once

    Curiosamente: ¡esto es correcto!: reservar algunos bits de la clave para un contador:

    SESAMO_1, SESAMO_2, SESAMO_3...

    Este elemento se conoce como nonce y forma parte de muchos algoritmos criptográficos

    -
    -
    +
    Cifrado de flujo

    Seguridad de los algoritmos de flujo

    Debemos generar un (nonce) diferente para cada mensaje

    @@ -530,9 +501,8 @@

    Seguridad de los algoritmos de flu
  • o bien generar una clave diferente para cada sentido
  • o ambas, que es lo mejor
  • -

    -
    +
    Cifrado de flujo

    El cifrado de flujo es tan seguro como:

      @@ -545,9 +515,8 @@

      Seguridad de los algoritmos de flu

    -
    -
    +
    Cifrado de flujo

    Ejemplos

    @@ -562,9 +531,8 @@

    Ejemplos

    ChaCha es el algoritmo de cifrado simétrico de flujo más usado

    -
    -
    +
    Cifrado de flujo

    Un comentario rápido sobre RC4/ARC4/RCFOUR:

      @@ -575,14 +543,12 @@

      Ejemplos

    • Claves de 40 a 2048 bits
    • Hoy en día considerado roto y no se recomienda su uso.
    -
    -
    +
    ChaCha20

    ChaCha20

    -
    -
    +
    ChaCha20

    ChaCha20: características

    Basado en Salsa20 (2017), de Daniel J. Bernstein

    @@ -594,9 +560,8 @@

    ChaCha20: características

  • El /dev/urandom de Linux
  • Varias VPNs
  • -
    -
    +
    ChaCha20

    Cifrado con Python

    import json
    @@ -618,9 +583,8 @@ 

    Cifrado con Python

    # Mensaje {"nonce": "IZScZh28fDo=", "ciphertext": "ZatgU1f30WDHriaN8ts="}
    -
    -
    +
    ChaCha20

    (inciso: Base64 no es un cifrado)

    Base64 se utiliza para representar información binaria como cadena imprimible

    @@ -637,9 +601,8 @@

    (inciso: Base64 no es un cifrado)

  • Encontrar Base64 no significa que algo esté cifrado
  • Pero es común cifrar algo y después enviarlo codificado como Base64
  • -
    -
    +
    ChaCha20

    Descifrado con Python

    # La clave key se ontiene por canal seguro
    @@ -651,15 +614,13 @@ 

    Descifrado con Python

    plaintext = cipher.decrypt(ciphertext) print("The message was " + plaintext)
    -
    -
    +
    ChaCha20

    Diagrama de flujo

    center

    -
    -
    +
    ChaCha20

    Estado inicial

    @@ -706,9 +667,8 @@

    Estado inicial

  • Nonce: valor aleatorio de 64 bits (en la RFC, 96 bits)
  • "expand 32-byte k" = 0x657870616e642033322d62797465206b es un número "no llevo nada en la manga"
  • -
    -
    +
    ChaCha20

    Función quarter round QR

    @@ -720,9 +680,8 @@

    Función quarter round QR

    c += d; b ^= c; b <<<= 7;

    Solo tiene sumas, rotaciones y XOR: es una función ARX, que impide ataques de canal lateral por timing.

    -
    -
    +
    ChaCha20
    #define ROTL(a,b) (((a) << (b)) | ((a) >> (32 - (b))))
     #define QR(a, b, c, d) (			\
    @@ -759,9 +718,8 @@ 

    Función quarter round QR

    Fuente: Wikipedia)

    -
    -
    +
    ChaCha20

    Variantes

    ... la comunidad aún no está segura de cómo usarlo ...

    @@ -798,20 +756,17 @@

    Variantes

    The Salsa20 family of stream ciphers, Daniel J. Bernstein, 2007

    -
    -
    +
    ChaCha20

    Vulnerabilidades

    Ninguna conocida, siempre que se cumplan las condiciones de uso: no se puede repetir clave y nonce.

    -
    -
    +
    Cifrado de bloque

    Cifrado de bloque

    -
    -
    +
    Cifrado de bloque

    El cifrado de bloque es lo que hacía el cifrado Vignère: cortar el texto en claro en bloques de la misma longitud de la clave y cifrar cada uno de los bloques

    @@ -820,46 +775,40 @@

    Cifrado de bloque

    El cifrado de bloque es el más utilizado con el cifrado simétrico: es rápido y no necesita exigentes o lentos algoritmos PRNG.

    El cifrado de bloque se suele definir como una serie de permutaciones.

    -
    -
    +
    Cifrado de bloque

    Permutaciones (P)

    center

    Una permutación es una función biyectiva de un conjunto sobre sí mismo

    -

    -
    -
    +

    +
    Cifrado de bloque

    Podemos representar el cifrado de bloque de tamaño con una permutación , que es la clave de cifrado.

    Donde es el conjunto de posibles bloques tanto de texto en claro como de texto cifrado

    La función de descifrado como su inversa

    Es decir:

    -

    -
    -
    +

    +
    Cifrado de bloque

    Permutación aleatoria (RP)

    La permutación se puede ver como una tabla de entradas, con el tamaño de bloque

    Estas entradas de longitud las deberemos escoger de forma aleatoria de forma que no podremos conocer sin conocer la tabla

    -
    -
    +
    Cifrado de bloque

    En realidad para que el cifrado sea seguro necesitaremos una "familia" de funciones equivalentes pero diferentes. Las indexaremos en función de la clave,

    O también, podemos redefinir y añadirle como parámetro:

    donde es el espacio de claves , es decir, el conjunto de claves

    -
    -
    +
    Cifrado de bloque

    Por ejemplo, para DES que tiene un tamaño de bloque de bits

    hace falta guardar:

    ... para cada una de las posibles claves

    Obviamente no es factible implementar los cifrados modernos directamente con una tabla indexada.

    -
    -
    +
    Cifrado de bloque

    Permutación pseudoaleatoria (PRP)

    Igual que para el cifrado de flujo nos hacía falta un flujo de bits aparentemente aleatorio para quien no tuviera la semilla (la clave )...

    @@ -867,9 +816,8 @@

    Permutación pseudoaleatoria (PRP)

    Esto nos permitirá realizar cifrados de bloque factibles, intercambiando una cantidad inmensa de memoria por una computación abordable

    Como en el caso de PRNG, hace falta que las PRP sean indistinguibles de las RP

    Además, hace falta que tanto como se puedan calcular de forma eficiente

    -

    -
    +
    Cifrado de bloque

    Construcción de cifrados de bloque

    Hay dos clases de cifrado de bloque. Es decir, dos maneras de implementar PRP:

    @@ -880,9 +828,8 @@

    Construcción de cifrados de bl

    Fijate: igual que los cifrados clásicos.

    Por si solas, las 2 clases básicas de cifrado de bloque son inseguras pero combinándolas podemos obtener seguridad creciente.

    A partir de ahora utilizaremos y en lugar de las y utilizadas hasta ahora

    -

    -
    +
    Cifrado de bloque

    Sustitución polialfabética

    @@ -914,9 +861,8 @@

    Sustitución polialfabética

    Igual que en Vigenère, podríamos recuperar el texto con análisis frecuencial

    -
    -
    +
    Cifrado de bloque

    Transposición

    Para un bloque de longitud elementos, intercambiamos los elementos entre sí.

    @@ -947,16 +893,14 @@

    Transposición

    No solo la frecuencia de los símbolos de entrada se mantiene, si no que los propios símbolos se mantiene (aunque en posiciones diferentes)

    -
    -
    +
    Cifrado de bloque

    Composición

    Si componemos el cifrado total como una serie de cifrados de bloque, podemos escribir:

    Cada clave podría ser independiente, pero habitalmente se genera mediante un proceso llamado expansión de clave

    -

    -
    -
    +

    +
    Cifrado de bloque
    • Substitución: da confusión, que permite dificultar la obtención de la clave a partir del texto cifrado.
    • @@ -964,9 +908,8 @@

      Composición

    Etapas o rounds: los cifrados de sustitución y transposición se agrupan en parejas y se aplican varias veces (con diferentes claves) hasta obtener un cifrado seguro

    El objetivo de la criptografía moderna es maximizar la difusión y la confusión (según Shannon)

    -
    -
    +
    Cifrado de bloque

    Cifrado TES / 3DES

    @@ -980,14 +923,12 @@

    Cifrado TES / 3DES

  • Claves más cortas, y por tanto más débil que AES
  • Se usa poder aprovechar todo el hardware DES que ya existía desde 1976
  • -
    -
    +
    AES

    Cifrado AES

    -
    -
    +
    AES

    Advanced Encryption Standard (AES)

    Desarrollado por Vincent Rijmen y Joan Daemen (aka: Rijndael), que ganaron el concurso celebrado por el NIST para sustituir a DES en 2001.

    @@ -1000,9 +941,8 @@

    Advanced Encryption Standard (AES)

    background: https://whatsupcourtney.com/wp-content/uploads/2017/10/Things-to-do-in-Leuven-52-e1560945504897.jpeg

    -
    -
    +
    AES

    Algoritmo

    Parte de una matriz de estado que se va modificando durante 10, 12 o 14 rondas según sea el tamaño de clave. Inicialmente: la matriz de estado es el texto en claro.

    @@ -1018,80 +958,69 @@

    Algoritmo

    -
    -
    +
    AES

    center

    -
    -
    +
    AES

    SubBytes

    center Wikipedia

    "sustitución de bytes en función de una tabla fija de 256 entradas"

    -
    -
    +
    AES

    ShiftRows

    center Wikipedia

    "transposición de bytes fija"

    -
    -
    +
    AES

    MixColumns

    center Wikipedia

    "4 multiplicaciones modulares de 4 Byte, valores fijos"

    -
    -
    +
    AES

    AddRoundKey

    center Wikipedia

    " (subclave )"

    -
    -
    +
    AES

    Expansión de clave

    Cada una de las etapas (rounds) utiliza una subclave diferente

    Cada una de les subclaves se deriva de la clave

    Nota 1: las subclaves se aplican () "alrededor" de las etapas por tanto hace falta una subclave más que etapas hay (11|13|15)

    Nota 2: hacen falta más etapas en los AES de clave larga para "aplicar" el mayor espacio de claves sobre el mensaje en claro

    -
    -
    +
    AES

    center

    -
    -
    +
    AES

    Vulnerabilidades

    La estadística del mensaje en claro aparece en el texto cifrado.

    Ahora los bloques son de 16 B, no de 1 B por tanto la estadística es menos importante
    (|bloque|=), pero en secuencias constantes (por ejemplo, como las de un gráfico) se pueden dar bloques enteros idénticos

    center

    -
    -
    +
    AES

    Un cifrado debe parecerse a esto:

    center

    -
    -
    +
    AES

    Modos de operación

    Esta "vulnerabilidad" es una propiedad de todos los cifrados de bloque

    La contramedida es la misma para todos: no cifrar nunca bloque a bloque, sino cifrar parte del bloque anterior en el bloque actual.

    Este encadenamiento se denomina modo de operación y no es opcional

    -
    -
    +
    AES

    Si acumulamos estado durante el cifrado, podemos utilizar este estado sobre el cifrado del siguiente bloque:

      @@ -1116,42 +1045,36 @@

      Modos de operación

    -
    -
    +
    AES

    ECB: Electronic Code-Book

    center Wikipedia

    -
    -
    +
    AES

    Fallo obvio: está usando la misma clave para cifrar mensajes diferentes.

    Eso nunca se puede hacer.

    No se puede usar AES en modo ECB

    -
    -
    +
    AES

    CBC: Cipher Block Chaining

    center Wikipedia

    -
    -
    +
    AES

    OFB: Output Feedback

    center Wikipedia

    -
    -
    +
    AES

    CTR: Counter

    center Wikipedia

    -
    -
    +
    AES

    Vector de Inicialización (IV)

    Los distintos encadenados requieren de una semilla inicial para empezar el encadenado: vector de inicialización (IV), que cumple la misma función que un nonce.

    @@ -1162,9 +1085,8 @@

    Vector de Inicialización (IV)

  • IV en CTR: es el valor inicial del contador que se cifra ECB, y se aplica sobre los bloques en claro (con )
  • AES_128_CTR es efectivamente un cifrado de flujo, siendo la semilla, y el IV el nonce

    -
    -
    +
    AES

    Otros modos

    AES puede usarse también con "modos autenticados":

    @@ -1176,9 +1098,8 @@

    Otros modos

    Información adicional, de la librería que usamos en los ejercicios: https://pycryptodome.readthedocs.io/en/latest/src/cipher/aes.html

    -
    -
    +
    AES

    Vulnerabilidades

    Hay distintos ataques que permiten realizar búsquedas de forma más rápida que un ataque de fuerza bruta

    @@ -1188,9 +1109,8 @@

    Vulnerabilidades

  • el bloque de 128b limita el uso del cifrado hasta bloques (268 B) a causa de la paradoja del cumpleaños. Contramedida: cambiar la clave cuando se haya usado para cifrar bytes
  • AES ha perdido fortaleza pero aún está aguantando.

    -
    -
    +
    AES

    Rendimiento

      @@ -1203,9 +1123,8 @@

      Rendimiento

    • DES: 250 Mbps (seguridad 56 bit)
    • 3DES: 100 Mbps (seguridad 112 bit)
    -
    -
    +
    AES

    Computación cuántica

    @@ -1215,13 +1134,11 @@

    Computación cuántica

  • Se conoce un algoritmo óptimo para compuración cuántica (Grover) que permite romper el cifrado simétrico, pero para ser robustos a este algoritmo sólo hemos de doblar la longitud de claves. Por ejemplo pasar a AES-256 daría una fortaleza equivalente de 128 bits
  • Se considera que la criptografía simétrica es robusta ante la computación cuántica

    -
    -
    +

    Resumen

    -
    -
    +

    Conclusiones

      @@ -1246,9 +1163,8 @@

      Conclusiones

    • Es necesario evitar cifrar dos mensajes diferentes con la misma clave
    -
    -
    +

    Referencias

    -
    -
    +

    Ejercicios de profesor:

    Alternativamente, podéis hacer los ejercicios de AES de https://www.cryptohack.org

    -
    -
    +

    Continúa en: Teoría complejidad y acuerdo D-H

    -
    -
    +

    ¡Gracias!

    -

    La confidencialidad es perfecta en cifrados tipo Vernam si la clave: diff --git a/04-complejidad.html b/04-complejidad.html index 70a9e5f..adfd370 100644 --- a/04-complejidad.html +++ b/04-complejidad.html @@ -217,43 +217,38 @@ Other editor might need these custom code in the YAML header: section: | */ /* section header { display: none; } */ -/* section footer { display: none; } */div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]{columns:initial!important;display:block!important;padding:0!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]:after,div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]:before,div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=content]:after,div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=content]:before{display:none!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]{all:initial;display:flex;flex-direction:row;height:100%;overflow:hidden;width:100%}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container][data-marpit-advanced-background-direction=vertical]{flex-direction:column}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background][data-marpit-advanced-background-split]>div[data-marpit-advanced-background-container]{width:var(--marpit-advanced-background-split,50%)}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background][data-marpit-advanced-background-split=right]>div[data-marpit-advanced-background-container]{margin-left:calc(100% - var(--marpit-advanced-background-split, 50%))}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]>figure{all:initial;background-position:center;background-repeat:no-repeat;background-size:cover;flex:auto;margin:0}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]>figure>figcaption{position:absolute;border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;white-space:nowrap;width:1px}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=content],div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=pseudo]{background:transparent!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=pseudo],div#\:\$p>svg[data-marpit-svg]>foreignObject[data-marpit-advanced-background=pseudo]{pointer-events:none!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background-split]{width:100%;height:100%}

    +/* section footer { display: none; } */div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]{columns:initial!important;display:block!important;padding:0!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]:after,div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]:before,div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=content]:after,div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=content]:before{display:none!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]{all:initial;display:flex;flex-direction:row;height:100%;overflow:hidden;width:100%}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container][data-marpit-advanced-background-direction=vertical]{flex-direction:column}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background][data-marpit-advanced-background-split]>div[data-marpit-advanced-background-container]{width:var(--marpit-advanced-background-split,50%)}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background][data-marpit-advanced-background-split=right]>div[data-marpit-advanced-background-container]{margin-left:calc(100% - var(--marpit-advanced-background-split, 50%))}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]>figure{all:initial;background-position:center;background-repeat:no-repeat;background-size:cover;flex:auto;margin:0}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]>figure>figcaption{position:absolute;border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;white-space:nowrap;width:1px}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=content],div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=pseudo]{background:transparent!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=pseudo],div#\:\$p>svg[data-marpit-svg]>foreignObject[data-marpit-advanced-background=pseudo]{pointer-events:none!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background-split]{width:100%;height:100%}

    Teoría de la complejidad y acuerdo Diffie-Hellman

    Juan Vera del Campo - juan.vera@professor.universidadviu.com

    -
    -
    +

    Como decíamos ayer...

    center

    El cifrados de flujo y de bloque permiten enviar mensajes computacionalmente seguros

    Solo necesitamos que las dos partes tenga una clave secreta en común

    ¿Cómo conseguimos que las dos personas que no se han visto nunca tengan una clave secreta común?

    -
    -
    +

    Hoy hablamos de...

    1. Teoría de la complejidad
    2. Acuerdo de clave Diffie-Hellman
    3. -
    4. Conclusiones
    5. +
    6. Conclusiones
    -
    -
    +

    Teoría de la complejidad

    -
    -
    +

    Teoría de la complejidad

    Ciencia que estudia cuánto tiempo le llevaría al algoritmo más rápido computacional posible para resolver un problema

    Ojo: la teoría de la complejidad no dice cuál es ese algoritmo más rápido posible, simplemente calcula cuánto tiempo mínimo lleva resolver un problema

    Aplicación en criptografía: dado un mensaje cifrado con cierto algoritmo ¿existe un algoritmo más rápido que con fuerza bruta... aunque aún no sepamos cuál?

    -
    -
    +

    ¿Cuánto tiempo tardarías en resolver este sodoku?

    center

    @@ -266,9 +261,8 @@

    ¿Cuán
  • ¿Cuánto tiempo le llevará a un algoritmo que sea el más rápido posible?
  • "It might have a unique solution but it's not gonna be findable by a human being"

    -

    -
    +

    Mucho tiempo para resolver

    Hacer un algoritmo de fuerza bruta para un Sudoku es "sencillo": vamos comprobando números y, si funcionan, los dejamos

    @@ -276,27 +270,23 @@

    Mucho tiempo para resolver

    Pero estamos interesados en conocer el tiempo teórico que le llevará al algoritmo más rápido posible

    10 veces más casillas... ¿necesita 10 veces más tiempo? ¿ó 100 veces más tiempo? ¿ó 1000 veces más tiempo? ¿podremos acaso solucionarlo?

    Si al aumentar el tamaño de un problema el tiempo necesario para resolverlo sigue siendo "razonable", decimos que es un "problema P"

    -
    -
    +

    ¿Cuánto tiempo tardarías en comprobar si ésta es la solución?

    center

    -
    -
    +

    Mucho tiempo para resolver, poco para comprobar

    Existen algunos problemas que si aumenta el tamaño ya no podremos solucionarlos en un tiempo razonable

    Pero si nos dan una solución, es muy rápido decidir si la solución correcta

    Si lleva poco tiempo decidir si una solución es válida para un problema, decimos que es "un problema NP"

    -
    -
    +

    ¿Cuánto tiempo tardas en colorear este mapa con 9 colores diferentes?

    center

    -
    -
    +

    Transformación de problemas

    @@ -306,9 +296,8 @@

    Transformación de problemas

  • Si podemos pasar rápidamente de un problema a otro y tenemos un algoritmo rápido para resolver uno, podemos resolver también el otro rápidamente
  • Si un problema NP se puede transformar en otro problema NP, entonces es un "problema NP-Completo"

    -
    -
    +

    Seguridad basada en problemas NP

    A partir de ahora vamos a basar la seguridad en problemas:

    -
    +

    P = NP

    -
    +

    Ejemplos de problemas NP

    -
    +

    "Mucho tiempo": una definición

    Hemos hablado de "tiempos razonables", "rápidamente" y "mucho tiempo"

    ... ¿podemos formalizarlo?

    -
    -
    +

    Cota superior asintótica: notación "big-O"

    Escribimos que un algoritmo es de complejidad si el tiempo que lleva ejecutarlo cuando es como máximo

    Fíjate que también puede tender a infinito...

    @@ -371,33 +356,29 @@

    Cota superior asintó

    Fuente: https://en.wikipedia.org/wiki/Big_O_notation

    -

    -
    +

    center

    Fuente: https://laptrinhx.com/time-complexity-and-big-o-529699432/

    -
    -
    +

    big-O en criptografía

    En criptografía, es el tamaño de la clave en bits

    Queremos algoritmos que el atacante necesite realizar operaciones de fuerza bruta

    Pero también queremos que, conociendo la clave, el descifrado solo necesite operaciones

    Un algoritmo está roto si el atacante necesita muchas menos de operaciones

    -
    -
    +

    Ejemplo: si queremos aumentar la seguridad de un algoritmo, pasamos de una clave de 128 a 256 bits

    • Cifrado : ahora costará el doble descifrar con la nueva clave
    • Mejor ataque posible : al atacante le costará veces más encontrar la nueva clave

    Nota que no necesitamos conocer el ataque: si se demuestra que el mejor ataque es de orden , entonces el sistema es seguro aunque no conozcamos cómo es el ataque

    -
    -
    +

    Nota: las clases de problemas P, NP, NP-completo... en realidad se definen con notación big-O:

    • P: problemas resolubles en tiempo exponencial
    • @@ -406,31 +387,27 @@

      big-O en criptografía

      Recuerda: un sistema es seguro computacionalmente si cualquier algoritmo probabilístico en tiempo polinomial solo puede romper el algoritmo con probabilidad negligible en

      Es decir: un cifrado es seguro computacionalmente si el mejor ataque posible tiene complejidad , para cualquier

      (falta definir eso de "probabilidad negligible", pero no lo haremos en este curso)

      -
    -
    +

    Problemas útiles en criptografía

    • Factorización en números primos
    • Logaritmo discreto
    • Curvas elípticas: las veremos en el tema 5
    -
    -
    +

    Ejemplo: factorización en números primos

    Es un problema NP y probablemente ni P ni NP-Completo

    El algoritno conocido más rápido es GNFS:

    -

    -
    -
    +

    +

    Logaritmo discreto

    Problema NP y probablemente no es NP-completo

    Si conoces , y ...

    Problema: encuentra

    -
    -
    center
    +
    center

    p=17 g=5 c=4 m=?

    @@ -517,9 +494,8 @@

    p=17 g=5 c=4 m=?

    -
    -
    +

    Gupo cíclico

    La transparencia anterior muestra un ejemplo de grupo cíclico:

    @@ -533,32 +509,28 @@

    Gupo cíclico

    https://en.wikipedia.org/wiki/Cyclic_group

    -
    -
    +
    D-H

    Acuerdo de clave Diffie-Hellman

    -
    -
    +
    D-H

    center

    El cifrados de flujo y de bloque permiten enviar mensajes computacionalmente seguros

    Solo necesitamos que las dos partes tenga una clave secreta en común

    ¿Cómo conseguimos que las dos personas que no se han visto nunca tengan una clave secreta común?

    -
    -
    +
    D-H

    Diffie-Hellman

    Método de acuerdo de clave simétrica (RFC2631, 1999)

    New Directions in Cryptography, Whitfield Diffie y Martin Hellman en 1976

    Primer algoritmo de criptografía asimétrica conocido y base de muchos de ellos

    Lo estamos utilizando constantemente

    -
    -
    +
    D-H

    Hipótesis DDH (Decisional D-H)

    @@ -568,9 +540,8 @@

    Hipótesis DDH (Decisional D-H(Recuerda que )

    Pero si nos diesen ó : y es muy fácil de calcular

    Que nos den ó se conoce como "trampa" o "trapdoor". Sin conocer la trampa, el problema se considera muy difícil computacionalmente

    -

    -
    +
    D-H

    Vamos a diseñar un protocolo entre Alice y Bob para que usen la clave :

    @@ -582,9 +553,8 @@

    Hipótesis DDH (Decisional D-H

    Si lo necesitas, consulta la definición de Alice y Bob en el glosario

    -

    -
    +
    D-H

    Protocolo

    @@ -606,24 +576,21 @@

    Protocolo

  • Y usan como clave de cifrado un algoritmo simétrico
  • -
    -
    +
    D-H

    center

    https://stackoverflow.com/questions/10471009/how-does-the-man-in-the-middle-attack-work-in-diffie-hellman

    -
    -
    +
    D-H

    Ejemplo sencillo:

    center

    Aunque un atacante conozca , , y , no podría calcular más que por fuerza bruta. En cambio, Alice y Bob han podido calcular muy fácilmente

    -
    -
    +
    D-H

    Claves secretas y claves públicas

      @@ -633,9 +600,8 @@

      Claves secretas y claves públic

    Dado que el atacante (o cualquiera) conoce , , y , esta información es pública

    y es información privada y solo conocida por Alice y Bob, respectivamente

    -
    -
    +
    D-H
    @@ -676,9 +642,8 @@

    Claves secretas y claves públic

    Recuerda hipótesis DDH: solo se puede calcular fácilmente si conoces o bien o bien , pero no se puede calcular fácilmente si conoces solo y

    Alice y Bob, que no se habían visto nunca antes, puede utilizar como clave de un cifrado simétrico de flujo o bloque como ChaCha20 ó AES

    -
    -
    +
    D-H

    Llamamos:

      @@ -697,9 +662,8 @@

      Claves secretas y claves públic

    Después del D-H ya no necesitan más estas claves y puede borrarlas...

    ... pero quedaos con el concepto, que lo usaremos dentro de poco

    -
    -
    +
    D-H

    Selección de parámetros

    D-H tiene cuatro parámetros: los secretos , y los públicos ,

    @@ -712,9 +676,8 @@

    Selección de parámetros

  • tiene que ser generador de
  • ¡Estas son muchas condiciones! ¿Cómo podemos escoger y bien?

    -
    -
    +
    D-H

    Afortunadamente no tenemos que escogerlos:

    @@ -740,9 +703,8 @@

    Selección de parámetros

    Fuente: https://github.com/amiralis/pyDH/blob/master/pyDH/pyDH.py

    -
    -
    +
    D-H

    D-H efímero / DH Ephemeral

      @@ -762,18 +724,16 @@

      D-H efímero / DH Ephemeral

      Desventaja: no podemos autenticar a la otra persona

    -
    -
    +
    D-H

    Debilidades

    ¿Qué sucede si Malloy se pone en medio de un D-H?

    center

    Alice y Bob están hablando en secreto... con el atacante

    -
    -
    +
    D-H

    D-H necesita claves mucho más largas que AES: tiene que ser primo, y los primos están separados entre sí

    @@ -803,9 +763,21 @@

    Debilidades

    https://blog.cloudflare.com/why-are-some-keys-small/
    https://www.keylength.com/en/3/

    -
    -
    +
    +
    D-H
    +

    Uso de la clave D-H con AES o Chacha: Función derivación de clave KDF

    + +

    El número secreto generado por el intercambio Diffie-Hellman no debe utilizarse como clave en protocolos de cifrado simétrico AES ni en cifrados de flujo como ChaCha20: no existen requisitos de seguridad para este número, como que sean perfectamente uniformes

    +

    Por esto, se utiliza una transformación KDF (Key Derivation Function). ​ Las KDF se pueden utilizar para extender claves en otras más largas o para obtener claves en un cierto formato. Las funciones de hash pueden usarse como KDF, aunque suelen incluir también inputs adicionales

    +

    Más información aquí:

    + +
    +
    D-H

    Composición de elementos criptográficos

    Acamos de ver una composición de elementos criptográficos: D-H y AES

    @@ -813,15 +785,13 @@

    Composición de eleme
  • Alice y Bob acuerdan una clave AES-256 utilizando DH-4096
  • Alice y Bob utilizan esa clave para comunicaciones seguras con AES.
  • -

    Esto es una introducción a TLS. En la última parte de la asignatura veremos este protocolo con mucho más detalle.

    - +

    Esto es solo una presentación de TLS. En la última parte de la asignatura veremos este protocolo con mucho más detalle.

    -
    +
    Hash

    Conclusiones

    -
    -
    +
    Hash

    Resumen

      @@ -831,26 +801,23 @@

      Resumen

    • D-H (en realidad, su actualizació para curvas elípticas "ECDH" que veremos en el tema 5) se utiliza para acordar una clave simétrica al inicio de una comunicación entre dos personas que no se conocen previamente
    • Ahora tenemos claves divididas en dos partes: una parte es pública, la otra es privada
    -
    -
    +
    Hash

    Referencias

    • New Directions in Cryptography, Whitfield Diffie y Martin E. Hellman, 1976. El paper describe parte de la teoría de la complejidad que hemos estudiado aquí y describe el intercambio de claves Diffie-Hellman
    • +
    • NP-Hardness, capítulo 12 del libro Algorithms de Jeff Erickson. Aunque no está enfocado a la criptografía, es una buena explicación de los problemas P y NP.
    -
    -
    +
    Hash

    Ejercicios: https://colab.research.google.com/github/Juanvvc/crypto/blob/master/ejercicios/04/T4 - Acuerdo de claves D-H.ipynb

    Continúa en: Criptografía asimétrica

    -
    -
    +
    Hash

    ¡Gracias!

    -

    Parecería que con lo que conocemos ya hemos resuelto el problema de comunicar dos personas de forma secreta diff --git a/05-asimetrica.html b/05-asimetrica.html index 812d297..7531cd1 100644 --- a/05-asimetrica.html +++ b/05-asimetrica.html @@ -215,22 +215,20 @@ /* hide footer and pagination */display:none}div#\:\$p>svg>foreignObject>section.last-slide a,div#\:\$p>svg>foreignObject>section.last-slide p{color:#111} /* You can add custom style here. VSCode supports this. Other editor might need these custom code in - the YAML header: section: | */div#\:\$p>svg>foreignObject>section.a-story ul li{list-style-type:none;text-align:center}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]{columns:initial!important;display:block!important;padding:0!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]:after,div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]:before,div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=content]:after,div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=content]:before{display:none!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]{all:initial;display:flex;flex-direction:row;height:100%;overflow:hidden;width:100%}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container][data-marpit-advanced-background-direction=vertical]{flex-direction:column}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background][data-marpit-advanced-background-split]>div[data-marpit-advanced-background-container]{width:var(--marpit-advanced-background-split,50%)}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background][data-marpit-advanced-background-split=right]>div[data-marpit-advanced-background-container]{margin-left:calc(100% - var(--marpit-advanced-background-split, 50%))}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]>figure{all:initial;background-position:center;background-repeat:no-repeat;background-size:cover;flex:auto;margin:0}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]>figure>figcaption{position:absolute;border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;white-space:nowrap;width:1px}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=content],div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=pseudo]{background:transparent!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=pseudo],div#\:\$p>svg[data-marpit-svg]>foreignObject[data-marpit-advanced-background=pseudo]{pointer-events:none!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background-split]{width:100%;height:100%}

    + the YAML header: section: | */div#\:\$p>svg>foreignObject>section.a-story ul li{list-style-type:none;text-align:center}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]{columns:initial!important;display:block!important;padding:0!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]:after,div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]:before,div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=content]:after,div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=content]:before{display:none!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]{all:initial;display:flex;flex-direction:row;height:100%;overflow:hidden;width:100%}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container][data-marpit-advanced-background-direction=vertical]{flex-direction:column}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background][data-marpit-advanced-background-split]>div[data-marpit-advanced-background-container]{width:var(--marpit-advanced-background-split,50%)}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background][data-marpit-advanced-background-split=right]>div[data-marpit-advanced-background-container]{margin-left:calc(100% - var(--marpit-advanced-background-split, 50%))}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]>figure{all:initial;background-position:center;background-repeat:no-repeat;background-size:cover;flex:auto;margin:0}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]>figure>figcaption{position:absolute;border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;white-space:nowrap;width:1px}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=content],div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=pseudo]{background:transparent!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=pseudo],div#\:\$p>svg[data-marpit-svg]>foreignObject[data-marpit-advanced-background=pseudo]{pointer-events:none!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background-split]{width:100%;height:100%}

    Cifrado asimétrico o de clave pública

    RSA y curvas elípticas

    Juan Vera del Campo - juan.vera@professor.universidadviu.com

    -
    -
    +

    Como decíamos ayer...

    center

    El cifrados de flujo (ej. ChaCha) y de bloque (ej. AES) permiten enviar mensajes computacionalmente seguros

    Solo necesitamos que las dos partes tenga una clave secreta en común

    ¿Cómo conseguimos que las dos personas que no se han visto nunca tengan una clave secreta común?

    -
    -
    +

    El protocolo de intercambio de claves Diffie-Hellman permitió por primera vez en la historia que dos personas cualquiera que no se conocían mantuviesen una conversación confidencial por medios dgitales...

    ...pero su artículo no se llamó "Solución al problema de intercambio de claves". Tenía un título mucho más ambicioso: Nuevas direcciones en la criptografía

    ¿Qué direcciones eran esas?

    @@ -238,9 +236,8 @@

    Como decíamos ayer...

    Foto: https://www.publicdomainpictures.net/en/view-image.php?image=363738&picture=signpost-giving-directions (CC0)

    -
    -
    +

    Hoy hablamos de...

      @@ -250,13 +247,11 @@

      Hoy hablamos de...

    1. Los límites de la criptografía asimétrica
    2. Conclusiones
    -
    -
    +

    Criptografía asimétrica

    -
    -
    +

    Firmado digital de contratos

    New Directions in Cryptography (Whitfield Diffie y Martin Hellman, 1976) exploraba qué se necesitaba para que dos empresas pudiesen firmar un contrato mercantil:

      @@ -266,16 +261,14 @@

      Firmado digital de contratos

    1. No repudio del contrato por ninguna de las partes

    Es la lista que conocemos como "los servicios básicos de seguridad" (tema 1)

    -
    -
    +

    El primer punto, "confidencialidad", se resolvía con los cifrados que estaban apareciendo ese mismo año (DES)...

    ...pero se necesitaba intercambiar primero una clave simétrica

    Propuesta: protocolo de intercambio de claves

    Y se dieron cuenta: se puede extender la misma idea para solucionar todo lo demás

    -
    -
    +

    Criptografía asimétrica o de clave pública

    También conocida como criptografía de clave pública

    Cada persona tiene dos claves:

    @@ -288,36 +281,32 @@

    Criptografía

    Compara con criptografía simétrica: misma clave para cifrar y descifrar, Bob y Alice tienen que manetenarla en secreto

    -

    -
    +

    La criptografía de clave pública nos permite hacer dos cosas:

    • cifrar mensajes --> servicio de confidencialidad
    • firmar digitalmente mensajes --> servicio de autenticación

    La criptografía simétrica también nos permitía cifrar, pero no firmar

    -
    -
    +

    Esquema de cifrado

    center

    • Todos conocen la clave de Bob, solo Bob conoce la clave
    • Cualquier puede cifrar un mensaje para Bob, solo Bob puede descifrarlo: confidencialidad
    -
    -
    +

    Esquema de firma electrónica

    center

    • Solo Bob puede cifrar con su clave y cualquier puede descifrar con
    • Pero si pueden descifrar el mensaje, todos saben que el mensaje solo puede haberlo enviado Bob: autenticación
    -
    -
    +

    Trap door functions, funciones trampa

    Las matemáticas de la criptografía asimétrica utilizan funciones trampa:

    @@ -326,16 +315,14 @@

    Trap door functions, func
  • Si conoces , entonces calcular es muy difícil (problema NP, tiempo exponencial)
  • No encontramos una función trampa hasta 1976

    -

    -
    +

    Vimos en teoría de la complejidad que los problemas NP (pero probablemente no P, no NP-Completos) son buenos candidatos para funciones trampa

    La mayor parte de problemas NP solo son difíciles en el caso general. Es decir: tenemos algoritmos eficientes que funcionan casi siempre. Ejemplo: sudoku

    Pero necesitamos que calcular sea muy difícil siempre

    La dificultad ha sido encontrar esos problemas matemáticos que fuesen difíciles siempre

    -
    -
    +

    Problema del Logaritmo Discreto, revisitado

    Resuelve la :

    @@ -353,9 +340,8 @@

    Problema del Logaritmo Discr

    Para más detalles de este problema, consulta tema 4

    -

    -
    +

    Resuelve la :

    • @@ -368,32 +354,28 @@

      Problema del Logaritmo Discr
    • El DLP es una trap door function
    • ...probablemente. Recuerda tema 4: no sabemos si P=NP
    -
    -
    +

    La dificultad está en la aritmética modular: partiendo del resultado, no es fácil saber cuántas vueltas ha dado a la rueda

    Ejemplo: ¿cuánto vale x? Recuerda que

    center

    https://miro.medium.com/max/2400/1*YZieEVE_LsNK4i94KNnZqg.png

    -
    -
    +

    Problema: resuelve dado , y en la ecuación

    Si probamos con , que no es primo, el problema:

    Tiene todas estas soluciones (compruébalo):

    Pero:

    no tiene solución para ningún número entero

    -
    -
    +

    Problema: resuelve dado , y en la ecuación

    Si el módulo es primo, la solución de siempre existe y es única, que es lo que interesa para poder cifrar y descifrar:

    también tiene restricciones, aunque normalmente ó

    -
    -
    +

    Protocolo Diffie-Hellman, revisitado

    Dos usuarios y que no se han visto nunca:

    @@ -416,9 +398,8 @@

    Protocolo Diffie-Hellman, revisitad

    Observa: para que un atacante que solo conoce , , y (claves públicas) pueda calcular , tiene que resolver , que se supone difícil

    -

    -
    +

    Claves secretas y claves públicas

    • Alice y Bob acuerdan y primos entre sí por canales que no son seguros. El atacante conoce y
    • @@ -427,9 +408,8 @@

      Claves secretas y claves públic

    Dado que el atacante (o cualquiera) conoce , , y , esta información es pública

    y es información privada y solo conocida por Alice y Bob, respectivamente

    -
    -
    +
    @@ -468,41 +448,36 @@

    Claves secretas y claves públic

    Recuerda hipótesis DDH: solo se puede calcular fácilmente si conoces o bien o bien , pero no se puede calcular fácilmente si conoces solo y

    Alice y Bob, que no se habían visto nunca antes, puede utilizar como clave de un cifrado simétrico de flujo o bloque como ChaCha20 ó AES

    -
    -
    +

    Problemas de Diffie Hellman: Man in the middle

    center

    Diffie-Hellman no protege contra MitM porque no permite autenticar mensajes.Necesitamos otras tecnologías.

    -
    -
    +

    Usos de Diffie-Hellman

    • Acuerdo inicial de una clave que luego puede usarse para cifrar las comunicaciones usando criptografía simétrica: es la etapa inicial de HTTPS
    • Pero no permite autenticar a la otra parte
    • Tampoco permite cifrar mensajes
    -
    -
    +

    Nuevas direcciones

    El DLP, en la versión D-H de 1976, no una solución completa: permite hacer acuerdo de claves, pero no cifrado, ni firma, ni autenticado

    En pocos años aparecieron nuevas funciones basadas en las mismas ideas que D-H, pero que permitían hacerlo todo: RSA, ElGammal, DSA, Pailier...

    Luego, las soluciones se refinaron con curvas elípticas: ECDH (Elliptic Curves Diffie-Hellman), ECDSA (Elliptic Curves DSA)...

    -
    -
    +

    Lo que no era público en 1976 es que en realidad la "non-secret encryption" ya se había descubierto antes, en 1969, por James H. Ellis, y en 1973 Clifford Cocks ya había desarrollado una trap door function completa que permitía el cifrado ...

    ... pero se protegió como secreto militar británico, y no se desprotegió hasta 1996

    Fuente: https://en.wikipedia.org/wiki/Clifford_Cocks

    -
    -
    +

    Cifrado y firmado

    @@ -541,13 +516,11 @@

    Cifrado y firmado

    Técnicamente, los sistemas propuestos sirven o bien para firmar, o bien para cifrar o distribuir claves. Los algoritmos son ligeramente diferentes si se usan para firmar o para cifrar, pero no estudiaremos las diferencias

    -
    -
    +

    RSA

    -
    -
    +

    RSA

    A method for obtaining digital signatures and public-key cryptosystems, Ron Rivest, Adi Shamir, Leonard Adleman, 1978

    @@ -555,47 +528,41 @@

    RSA

    Background: https://hsto.org/getpro/habr/post_images/453/10e/602/45310e602d784a489301bf1996edef68.jpg

    -
    -
    +

    El problema RSA (RSAP)

    Calcula :

    Pista: es producto de dos primos que no conoces

    Es decir, dado , y , calcula :

    para recuperar (descifrar) el mensaje original a partir de hace falta invertir:

    -

    -
    -
    +

    +

    Si no es primo el cálculo de

    Es computacionalmente difícil para valores de con factores desconocidos

    Hemos cifrado un mensaje pero no hay manera de descifrar el resultado ... sin conocer "la trampa" (trap function)

    -
    -
    +

    La "trampa" usa el teorema de Euler: si los factores de son conocidos, entonces:

    es la función indicatriz de Euler, "totient function", la trap door function de RSA

    El mensaje se puede descifrar fácil si conoces

    se puede calcular fácil si conoces los factores primos de . Es decir, si puedes factorizar

    No conocemos ningún algoritmo eficiente para factorizar un número. Este es el problema computacionalmente difícil de RSA

    -
    -
    +

    Teniendo en cuenta eso, para calcular a partir de , tomando un atajo dando la vuelta "por el otro lado", exponenciando suficientemente para llegar otra vez hasta :

    Hace falta encontrar una tal que:

    Es decir, tiene que ser el inverso de en el anillo cíclico

    solo existe si y no tienen factores en común (son coprimos)

    -
    -
    +

    ¿Cuál es el inverso de un número en un anillo? El que multiplicado por el número da . Ejemplo: es el inverso de en los números reales:

    ¿Qué pasa con los enteros? Que no tienen inverso dentro de los propios enteros: no hay ningún entero que multiplicado por .

    Cuando añadimos aritmética modular a los enteros, sí que pueden haber inversos:

    3 es el inverso de 7 en el anillo cíclico , 9 es inverso de sí mismo en el anillo cíclico

    6 no tiene inverso en el anillo cíclico . Esto es porque 6 y 10 tienen factores comunes (no son coprimos)

    Existen algoritmos eficientes para calcular el inverso de un número en un anillo cíclico . Es decir, el cálculo de dado y es posible y eficiente

    -
    -
    +

    El protocolo RSA: generación de par de claves

      @@ -617,15 +584,13 @@

      El protocolo RSA: gen
    1. Se descartan , ,
    -
    -
    +

    El protocolo: cifrado y descifrado

    Cifrado: Para enviar un mensaje a Alice, obtengo su clave pública y calculo:

    Descifrado: Alice utiliza su clave privada

    -

    -
    -
    +

    +

    Ejemplo (lo veremos con ejercicios)

    Claves:

    @@ -647,9 +612,8 @@

    Ejemplo (lo veremos con ejercicios)
  • -

    -
    +

    Velocidad de proceso

    Para crear el par de claves hay que buscar:

      @@ -660,9 +624,8 @@

      Velocidad de proceso

      Es decir: la elección de un par de claves es un proceso muy lento. Segundos, minutos, horas si las claves son grandes

      A cambio: el cifrado y descifrado son relativamente rápidos comparados con otros sistemas de cifrado asimétrico

      En cualquier caso, es muy lento comparado con cualquier proceso de cifrado simétrico

      -
    -
    +

    Tamaño de claves

    Hemos visto que tanto Diffie-Hellman como RSA necesitan números primos

    @@ -674,9 +637,8 @@

    Tamaño de claves

    Fuente: https://en.wikipedia.org/wiki/Prime_number_theorem
    Gráfico: https://en.wikipedia.org/wiki/Ulam_spiral

    -
    -
    +
    @@ -710,67 +672,57 @@

    Tamaño de claves

    Es decir: para intercambiar una clave AES-256 aprovechando todos sus bits, necesitamos claves RSA de 15360 bits

    Si usamos tamaños de clave RSA de 4096 bits (tamaño típico), podremos intercambiar una clave simétrica equivalente a AES-128

    -
    -
    +

    ¿Podemos encontrar trap door functions que no estén basadas en primos, y por tanto necesiten claves más cortas?

    -
    -
    +

    Curvas elípticas

    -
    -
    +

    Propuestas como trap door function en 1987 por Neal Koblitz y Victor S. Miller de forma independiente

    Necesitan claves más cortas que la criptografía asimétrica basadas en DLP o RSAP para ofrecer una seguridad equivalente

    • Ventaja: necesitan menos proceso y memoria, se pueden implementar en máquinas pequeñas: móviles, tarjetas inteligentes...
    • Problema: teoría matemática compleja
    -
    -
    +

    Curva elíptica

    Curva plana en un cuerpo finito que consiste en los puntos que satisfacen la ecuación:

    Los cuerpos finitos son estructuras mátemáticas creadas con polinomios y aritmética modular

    -
    -
    +

    Ejemplo:

    (por ahora simplificamos la explicación representando la curva los reales, sin módulos)

    center

    -
    -
    +

    Trap door function

    Dado un punto , definimos una operación "proyección" como:

    es "la proyección de recta que une y , reflejada al otro lado de la curva"

    center

    Usamos el símbolo "suma" por tradición, pero no es una "suma geométrica"

    -
    -
    +

    Y lo volvemos a aplicar, varias veces, desde el mismo origen

    center

    -
    -
    +

    En vez de empezar con dos puntos, podemos empezar con uno solo, y la recta inicial es la tangente a la cura. El resto sigue igual

    center

    Fuente: https://medium.com/@icostan/animated-elliptic-curves-cryptography-122fff8fcae

    -
    -
    +

    Esta es la trap door function:

    Es la aplicación de veces la proyección sobre el punto

    Dado y ... ¿cuánto vale ?

    Eso es el problema difícil de las curvas elípticas:

    No sabemos calcular a partir de y

    -
    -
    +

    Mapeando la curva en un campo finito

    En realidad en criptografía no trabajamos sobre los reales, sino que mapeamos en un grupo finito de los enteros.

    Es decir, con aritmética modular de un numero primo muy grande. El número de bits de este entero es "el tamaño de la clave"

    @@ -778,22 +730,19 @@

    Mapeando la curva en un campo fini

    Ejemplos de mapeado en campos finitos: https://graui.de/code/elliptic2/

    -

    -
    +

    Ejemplo (es solo un ejemplo, el primo tiene que ser mucho más grande):

    Fuente: https://www.youtube.com/watch?v=mFVKuFZ29Fc&list=PLN9KZDpNfsHMd7d7PX87JGesGY_Qzyb3V

    -
    -
    +

    Ejemplo de proyección sobre los enteros

    center

    -
    -
    +

    Tamaño de clave

    La gran ventaja de las curvas elípticas en criptografía (EEC) es que nos permiten utilizar criptografía asimétrica con una clave mucho más pequeña

    @@ -833,17 +782,15 @@

    Tamaño de clave

    Es decir, pone la criptografía asimétrica al alcance de pequeños dispositivos

    -
    -
    +

    center

    NOTA: RSA está basado en "factorización", DSA y D-H en "logaritmo discreto"

    https://www.keylength.com/en/compare/

    -
    -
    +

    Elección de la curva

    No se suele escoger "cualquier curva elíptica", sino alguna de las ya existentes. Cada una tiene propiedades ligeramente diferentes, algunas están patentadas y otras provocan dudas (parte de las revelaciones de Snowden, 2013)

    La Curve25519, propuesta por Daniel J. Bernstein en 2005, se considera segura:

    @@ -854,9 +801,8 @@

    Elección de la curva

  • FIPS 186-5, 2019 (aún borrador)
  • TLS Protocol Version 1.3 (RFC8446, 2018)
  • -
    -
    +

    Elliptic Curve Diffie-Hellman: ECDH

    Protocolo:

      @@ -871,16 +817,14 @@

      Elliptic Curve Diffie-Hellman: ECDH<
    1. Escogen como secreto

    Nota que un atacante no podría calcular a partir de ó : Tiene que calcular o bien o bien , y eso es difícil

    -
    -
    +

    Elliptic Curve DSA: ECDSA

    DSA es un algoritmo de firmado digital clásico, basado en ElGammal (1985). Es similar a RSA pero basado en el problema del logaritmo discreto

    Ha sido estándar FIPS hasta hace poco, pero probablemente será retirado en el futuro próximo

    Existe una adaptación de DSA a curvas elípticas: ECDSA, que es la implementación que probablemente se estandarizará: FIPS 186-5 (2019, aún borrador)

    -
    -
    +

    ¿Y RSA?

    El protocolo RSA no se ha adaptado a criptografía de curva elíptica

    Pero RSA ha sido y aún es el sistema más utilizado para certificados digitales, y hay millones de estos certificados activos

    @@ -891,13 +835,11 @@

    ¿Y RSA?

  • Comparing ECC vs RSA, Ott S. 2018
  • RSA and ECC: A Comparative Analysis D. Mahto y D. K. Yadav, 2017
  • -
    -
    +

    Los límites de la criptografía asimétrica

    -
    -
    +

    Limitaciones

    • @@ -913,9 +855,8 @@

      Limitaciones

      En realidad suele usarse un cifrado mixto: con asimétrica se cifra la clave simétrica que es la que realmente se usa para cifrar

    -
    -
    +

    PKCS#1

    PKCS#1 (RFC8017): recomendaciones para utilizar correctamente RSA, y es obligatorio que las librerías que uses las implementen. Por ejemplo:

      @@ -923,9 +864,8 @@

      PKCS#1

    • Diferencias de implementación de RSA en esquemas de cifrado y firmado
    • Cómo hacer correctamente la conversión entre mensajes (cadenas de bytes) y enteros (que es lo que cifra RSA)
    -
    -
    +

    Computación cuántica

    -
    +

    Conclusiones

    -
    -
    +

    Resumen

      @@ -968,9 +906,8 @@

      Resumen

    • Basar la seguridad en curvas elípticas (EC) permite claves mucho más pequeñas
    • Ejemplos modernos: ECDH, ECDSA, que son adaptaciones de D-H y DSA sobre curvas elípticas
    -
    -
    +

    Referencias

    -
    -
    +

    Ejercicios:

    Continúa en: Funciones de Hash y Blockchains

    -
    -
    +

    ¡Gracias!

    -

    Parecería que con lo que conocemos ya hemos resuelto el problema de comunicar dos personas de forma secreta diff --git a/06-hashes.html b/06-hashes.html index ba147fe..9831777 100644 --- a/06-hashes.html +++ b/06-hashes.html @@ -217,13 +217,12 @@ Other editor might need these custom code in the YAML header: section: | */ /* section header { display: none; } */ -/* section footer { display: none; } */div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]{columns:initial!important;display:block!important;padding:0!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]:after,div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]:before,div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=content]:after,div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=content]:before{display:none!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]{all:initial;display:flex;flex-direction:row;height:100%;overflow:hidden;width:100%}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container][data-marpit-advanced-background-direction=vertical]{flex-direction:column}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background][data-marpit-advanced-background-split]>div[data-marpit-advanced-background-container]{width:var(--marpit-advanced-background-split,50%)}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background][data-marpit-advanced-background-split=right]>div[data-marpit-advanced-background-container]{margin-left:calc(100% - var(--marpit-advanced-background-split, 50%))}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]>figure{all:initial;background-position:center;background-repeat:no-repeat;background-size:cover;flex:auto;margin:0}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]>figure>figcaption{position:absolute;border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;white-space:nowrap;width:1px}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=content],div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=pseudo]{background:transparent!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=pseudo],div#\:\$p>svg[data-marpit-svg]>foreignObject[data-marpit-advanced-background=pseudo]{pointer-events:none!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background-split]{width:100%;height:100%}

    +/* section footer { display: none; } */div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]{columns:initial!important;display:block!important;padding:0!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]:after,div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]:before,div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=content]:after,div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=content]:before{display:none!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]{all:initial;display:flex;flex-direction:row;height:100%;overflow:hidden;width:100%}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container][data-marpit-advanced-background-direction=vertical]{flex-direction:column}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background][data-marpit-advanced-background-split]>div[data-marpit-advanced-background-container]{width:var(--marpit-advanced-background-split,50%)}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background][data-marpit-advanced-background-split=right]>div[data-marpit-advanced-background-container]{margin-left:calc(100% - var(--marpit-advanced-background-split, 50%))}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]>figure{all:initial;background-position:center;background-repeat:no-repeat;background-size:cover;flex:auto;margin:0}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]>figure>figcaption{position:absolute;border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;white-space:nowrap;width:1px}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=content],div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=pseudo]{background:transparent!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=pseudo],div#\:\$p>svg[data-marpit-svg]>foreignObject[data-marpit-advanced-background=pseudo]{pointer-events:none!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background-split]{width:100%;height:100%}

    Funciones de Hash y Blockchain

    Juan Vera del Campo - juan.vera@professor.universidadviu.com

    -
    -
    +

    Como decíamos ayer...

    • Confidencialidad: AES/ChaCha20 + D-H
    • @@ -232,9 +231,8 @@

      Como decíamos ayer...

    • Integridad: firma digital

    Los hashes nos permiten calcular una firma digital

    -
    -
    +

    Hoy hablamos de...

      @@ -243,13 +241,11 @@

      Hoy hablamos de...

    1. Blockchain
    2. Resumen y referencias
    -
    -
    +

    Funciones de hash

    -
    -
    +

    Función de hash, digest o resumen

    Resume un mensaje de longitud arbitraria en un valor de tamaño fijo , sea cual sea la longitud del mensaje

    Ejemplos:

    @@ -258,9 +254,8 @@

    Función de hash, digest o resume
  • Resumir una imagen de 532KB en 32 bytes
  • Resumir una película de 4GB en 32 bytes
  • -

    -
    +

    Ejemplos no criptográficos

    -
    +

    Funciones de hash criptográficas

    Funciones hash criptográficas son aquellas que:

    -
    +

    Ejemplos de valores de hash

    center

    -
    -
    +

    Requisitos de una función de hash criptográfica

    -
    +

    ¿Cuántos hashes podemos calcular por segundo?

    Los hashes se usan mucho en minería bitcoin, así que podemos utilizar sus tablas para conocer velocidades:

      @@ -325,9 +316,8 @@

      ¿Cuántos hashe

      Más ejemplos: https://miningchamp.com/
      En la imagen, un Avalon 6, bloque especializado en calcular hashes

      -

    -
    +

    ¿Mensajes con el mismo resumen?

    Obvio: no puede existir una aplicación inyectiva entre un conjunto de elementos y otro de elementos si

    @@ -336,16 +326,14 @@

    ¿Mensajes con el mismo resumen?

    Principio del palomar

    -

    -
    +

    Por ejemplo:

    Si queremos resumir fotografías de 1MB en resúmenes de 256 bits (tamaño típico)

    úí

    Es decir, hay un número , que en la práctica es "casi infinito", de fotografías de 1MB que se resumen en el mismo número de 256 bits

    Queremos que no sea nada fácil (computacionalmente hablando) encontrar cualquiera de esas "casi infinitas" fotografías: la única forma debe de ser probar las fotografías una a una

    -
    -
    +

    Paradoja del cumpleaños

    En realidad hay un ataque a la resistencia a la colisión que deriva de la paradoja del cumpleaños:

    si tenemos un grupo de 23 personas, la probabilidad de tener un par con la misma fecha de cumpleaños es del 50%

    @@ -354,16 +342,14 @@

    Paradoja del cumpleaños

    Foto: nappy, free to use

    -
    -
    +

    Si tenemos un hash de tamaño la probabilidad de colisión será muy alta a medida que nos acercamos a las operaciones

    Para bits esto son unas operaciones

    Esto implica que para un hash hacen falta resúmenes el doble de largos de lo que hacía falta para las claves simétricas para obtener el mismo nivel de seguridad

    La security strength de una función de hash de longitud bits es

    -
    -
    +

    Ejemplos de funciones de hash

    Los hashes recomendados en la actualidad son el SHA-2 (cualquier de las dos variantes) y el SHA-3

    Fíjate: longitudes aproximadamente el doble que las longitudes de claves que las claves de AES (128, 192 y 256 bits) para una seguridad equivalente

    -
    -
    +

    Ejemplos de valores de hash MD5, SHA256 y SHA512 de esta presentación:

    > ms5sum 06-hashes.md
     c99fe5e1ec0f637d77dddb32b1679c21  06-hashes.md
    @@ -388,24 +373,21 @@ 

    Ejemplos de funciones de hash

    445a11c07206b7df599bcf3ec70475a6e89b4bbfe605c928c36494ff1a31311d 06-hashes.md

    Si calculas los valores de hash del archivo, verás que no coinciden. Eso es porque no se puede calcular el hash de un archivo, meter el hash en el propio archivo, volver a calcular el hash ¡y que dé lo mismo! Recuerda: cualquier cambio (como por ejemplo meter el hash) cambia totalmente el hash

    -
    -
    +

    Visual SHA-256

    center

    https://sha256algorithm.com/

    -
    -
    +

    ¿SHA-2 ó SHA-3?

    La familia SHA-2 está diseñada por la NSA, la familia SHA-3 fue escogida por el NIST después de organizar una competición para definir el siguiente hash a utilizar

    El SHA-3 se ha desarrollado teniendo en cuenta la eficiencia y como backup en caso de encontrar vulnerabilidades en el SHA-2 (diseños totalmente diferentes)

    El SHA-2 hasta ahora ha sido sometido a un trabajo de análisis muy superior al SHA-3 y no se han encontrado ninguna vulnerabilidad

    -
    -
    +

    Construcción

    Formas de construir una función de hash:

      @@ -414,9 +396,8 @@

      Construcción

    • SHA-3: utiliza función Keccak

    center

    -
    -
    +

    Ataque: rainbow table

    Tablas de consulta que ofrecen un compromiso para obtener claves en texto simple a partir del resultado de una función de hash.

    Son bases de datos:

    @@ -424,9 +405,8 @@

    Ataque: rainbow table

    https://project-rainbowcrack.com/table.htm

    -
    -
    +

    Ejemplo:

    $ echo -n sesame | sha256sum
     d0c04f4b1951e4aeaaec8223ed2039e542f3aae805a6fa7f6d794e5afff5d272  -
    @@ -439,9 +419,8 @@ 

    Ataque: rainbow table

    https://crackstation.net/

    center

    -
    -
    +

    En este curso no hacemos criptoanálisis, es decir, no rompemos cosas. Si estáis interesados, se puede intentar romper hashes:

    • Simplemente buscándolos en google
    • @@ -449,46 +428,40 @@

      Ataque: rainbow table

    • Usando diccionarios de "contraseñas probables"
    • Herramientas como John the Ripper o CrackHash aprovechan estas técnicas
    -
    -
    +

    Usos

    Árboles de Merkle, Integridad, Cadena de custodia...

    -
    -
    +

    Merkle Hash tree

    Si un archivo gran cambia a menudo y hay que calcular su hash cada vez, llevará mucho tiempo

    Solución: calcular hash solo de los bloques que cambien, y agruparlos en un árbol

    Permite firmar bases de datos, discos... de forma eficiente

    center

    -
    -
    +

    Almacenamiento de contraseñas

    El sistema operativo no debe guardar las contraseñas de los usuarios: si alguien consigue entrar, ¡obtiene la contraseña del usuario!

    Podemos guardar simplemente su hash: ñ

    Pero esto tiene un problema: muchos usuarios usan palabras, nombres, etc. limitados. Las palabras, nombres conocidos són del orden de ≈100.000

    Un atacante realizar un "diccionario" con el hash de todas las palabras, nombres, etc. (ataque de diccionario y rainbow table)

    -
    -
    +

    Almacenamiento de contraseñas: salt y bcrypt

    1. Añadir un valor aleatorio o y tamibén lo guardamos: ñ
    2. Hashear varias veces o implementar un hash "costoso":

    ñ

    -
    -
    +

    Integridad de mensajes

    Se puede usar un hash para asegurar la integridad de un mensaje: HMAC

    -

    -
    -
    +

    +
    -
    +

    Encrypt-then-MAC (EtM)

    center

    @@ -509,9 +481,8 @@

    Encrypt-then-MAC (EtM)

  • Usado en IPSec
  • Necesita dos claves: una para cifrar y otra para el MAC
  • -
    -
    +

    Encrypt-and-MAC (E&M)

    center

    @@ -519,9 +490,8 @@

    Encrypt-and-MAC (E&M)

  • Usado en SSH
  • Puede reutilizar clave para cifrar y calcular MAC
  • -
    -
    +

    MAC-then-Encrypt (MtE)

    MAC-then-Encrypt

    @@ -529,33 +499,28 @@

    MAC-then-Encrypt (MtE)

  • Usado en TLS
  • Vulnerable algún ataques de padding: Padding Oracle, pentesterlab
  • -
    -
    +

    Cadena de custodia

    Cuando se investiga un crimen... ¿cómo se protegen las evidencias digitales contra modificaciones?

    Inicio de cadena de custodia publicando sus hashes

    center

    -
    -
    +

    Firma digital

    Cifrando el hash de un mensaje con nuestra clave privada, aseguramos que ese mensaje lo hemos enviado nosotros y cualquier puede verificarlo

    center

    Firma digital de un mensaje = cifrado del hash de un mensaje con mi clave privada

    -
    -
    +

    Blockchain

    -
    -
    +

    Ya veis que los hashes tienen muchos usos en criptografía

    Vamos a ver con un poco más de detalle su uso en las monedas digitales: Blockchain y BitCoin

    -
    -
    +

    Bitcoin

    center

    -
    +

    center

    https://www.investopedia.com/news/how-bitcoin-works/

    -
    -
    +

    Transacciones

    center

    -
    -
    +

    Proof of work: Hashcash

    Hashcash fue propuesto por Adam Back en 1997 para reducir el spam.

    -
    +
    1. Crea una cadena con la dirección de correo destino
    2. Añade la fecha de envío
    3. @@ -604,9 +565,8 @@

      Proof of work: Hashcash

      http://ronny-roehrig.com/criptoavances/que-es-el-algoritmo-proof-of-work-pow-como-funciona/

      -
    -
    +
    X-Hashcash: 1:52:380119:calvin@comics.net:::9B760005E92F0DAE
     
      @@ -619,9 +579,8 @@

      Proof of work: Hashcash

      echo -n 1:52:380119:calvin@comics.net:::9B760005E92F0DAE | sha1sum  
       0000000000000756af69e2ffbdb930261873cd71  -
       
      -
    -
    +

    Minería

    Se adaptó el X-Hashcash. Un bloque es así:

    * HASH DEL BLOQUE ANTERIOR
    @@ -634,24 +593,20 @@ 

    Minería

    Y minar es encontrar un COUNTER tal que el hash de ese bloque empiece por el-número-de-ceros que toque

    SHA2-256(bloque)=000000000000000000000000000000000000000000000000000000000000000000000001... y 185 bits más

    El primero que encuentre ese COUNTER se lleva un bitcoin

    -
    -
    +

    https://btc.com/

    El número de ceros necesario se ajusta para que más o menos cada 15 minutos alguien encuentre ese COUNTER: la dificultad es ajustable

    -
    -
    +

    -
    -
    +

    Pincha en cualquiera de los bloques y verás las transacciones

    center

    -
    -
    +

    Consenso distribuido

    Bitcoin funciona por consenso distribuidos: todos se tienen que poner de acuerdo en quién ha sido el primero en encontrar el COUNTER

    @@ -660,18 +615,16 @@

    Consenso distribuido

    https://kasunindrasiri.medium.com/understanding-raft-distributed-consensus-242ec1d2f521

    -
    -
    +
    • Bit coin: red P2P de nodos
    • Cada nodo está constantemente tratando de encontrar el COUNTER del bloque que provoque que el hash se inicie con un número determinado de ceros.
    • Cuando lo consigue: lo anuncia a todos los nodos que conocen.
    • Los demás nodos lo comprueban y reconocen y empiezan un nuevo bloque.
    -
    -
    +
    -
    +

    Usos adicionales

    En el registro de BlockChain / Ethereum y otros, a parte de transacciones económicas, se pueden inscribir datos que quedan públicos (el ledger es público) para posterior consulta:

      @@ -697,13 +649,11 @@

      Usos adicionales

    • Non Fungible Tokens (NFTs): hash de una fotografía
    • ...
    -
    -
    +

    Resumen y referencias

    -
    -
    +

    Resumen

    • Las funciones de hash reducen un mensaje de cualquier tamaño (pocos bits o gigas de información) en un conjunto de pocos bytes
    • @@ -718,9 +668,8 @@

      Resumen

    -
    -
    +

    Referencias

    -
    -
    +

    Ejercicios: Funciones de hash

    Continúa en: TLS y Public Key Infrastructure

    -
    -
    +

    ¡Gracias!

    -

    Los bits de paridad o los CRC se utilizan mucho con protocolos que esperan errores: RS232, lectura de CDs, la parte de paridad de un RAID... Un código de detección/corrección de errores se puede entender también como un "resumen" del mensaje: si el resumen no coincide con lo recibido, entonces sabemos ue ha habido un error. diff --git a/07-pki.html b/07-pki.html index fed5628..722afb3 100644 --- a/07-pki.html +++ b/07-pki.html @@ -217,13 +217,12 @@ Other editor might need these custom code in the YAML header: section: | */ /* section header { display: none; } */ -/* section footer { display: none; } */div#\:\$p>svg>foreignObject>section[data-marpit-scope-SnOdRpWY] p{font-size:150%}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]{columns:initial!important;display:block!important;padding:0!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]:after,div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]:before,div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=content]:after,div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=content]:before{display:none!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]{all:initial;display:flex;flex-direction:row;height:100%;overflow:hidden;width:100%}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container][data-marpit-advanced-background-direction=vertical]{flex-direction:column}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background][data-marpit-advanced-background-split]>div[data-marpit-advanced-background-container]{width:var(--marpit-advanced-background-split,50%)}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background][data-marpit-advanced-background-split=right]>div[data-marpit-advanced-background-container]{margin-left:calc(100% - var(--marpit-advanced-background-split, 50%))}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]>figure{all:initial;background-position:center;background-repeat:no-repeat;background-size:cover;flex:auto;margin:0}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]>figure>figcaption{position:absolute;border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;white-space:nowrap;width:1px}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=content],div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=pseudo]{background:transparent!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=pseudo],div#\:\$p>svg[data-marpit-svg]>foreignObject[data-marpit-advanced-background=pseudo]{pointer-events:none!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background-split]{width:100%;height:100%}

    +/* section footer { display: none; } */div#\:\$p>svg>foreignObject>section[data-marpit-scope-fDVdJany] p{font-size:150%}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]{columns:initial!important;display:block!important;padding:0!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]:after,div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]:before,div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=content]:after,div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=content]:before{display:none!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]{all:initial;display:flex;flex-direction:row;height:100%;overflow:hidden;width:100%}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container][data-marpit-advanced-background-direction=vertical]{flex-direction:column}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background][data-marpit-advanced-background-split]>div[data-marpit-advanced-background-container]{width:var(--marpit-advanced-background-split,50%)}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background][data-marpit-advanced-background-split=right]>div[data-marpit-advanced-background-container]{margin-left:calc(100% - var(--marpit-advanced-background-split, 50%))}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]>figure{all:initial;background-position:center;background-repeat:no-repeat;background-size:cover;flex:auto;margin:0}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]>figure>figcaption{position:absolute;border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;white-space:nowrap;width:1px}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=content],div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=pseudo]{background:transparent!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=pseudo],div#\:\$p>svg[data-marpit-svg]>foreignObject[data-marpit-advanced-background=pseudo]{pointer-events:none!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background-split]{width:100%;height:100%}

    Public Key Infrastructure y protocolo HTTPS

    Juan Vera del Campo - juan.vera@professor.universidadviu.com

    -
    -
    +

    Hoy hablamos de...

      @@ -231,9 +230,8 @@

      Hoy hablamos de...

    1. Juntando las piezas
    2. Resumen y referencias
    -
    -
    +

    Qué sabemos hacer

    • Sabemos enviar mensajes con confidencialidad: criptografía simétrica @@ -253,9 +251,8 @@

      Qué sabemos hacer

    -
    -
    +

    Problemas cifrado asimétrico

      @@ -264,16 +261,14 @@

      Problemas cifrado asimétrico

    • ¿Cómo distribuimos las claves públicas?

    Hoy veremos las soluciones para estos problemas: cifrado híbrido y certificados

    -
    -
    +
    Gestión de claves públicas

    Gestión de claves públicas

    Certificados electrónicos

    -
    -
    +
    Gestión de claves públicas

    Recordatorio: cifrado asimétrico

    center

    @@ -283,15 +278,13 @@

    Recordatorio: cifrado asimétrico<
  • Confidencialidad: Alice cifra con la clave pública de Bob, Bob descifra con su clave privada
  • Autenticación (firma): Alice cifra con su clave privada, cualquiera descifra con la clave pública de Alice
  • -

    -
    +
    Gestión de claves públicas

    Ataque man in the middle

    center

    -
    -
    +
    Gestión de claves públicas

    Si tengo la clave pública de Bob...

    @@ -300,18 +293,16 @@

    Ataque man in the middle

  • Bob puede asegurar que es él: cifra "Soy Bob" con su clave privada, podemos descifrar el mensaje con su clave pública
  • ¿Cómo consigo la clave pública de Bob?

    -
    -
    +
    Gestión de claves públicas

    Hemos cambiado el problema de

    cómo compartir claves simétricas

    por el de

    cómo compartir claves públicas (asimétricas)

    -
    -
    +
    Gestión de claves públicas

    El problema de la confianza

    @@ -326,9 +317,8 @@

    El problema de la confianza

    -
    -
    +
    Gestión de claves públicas

    Gestión manual: SSH

    @@ -346,23 +336,20 @@

    Gestión manual: SSH

    https://jumpcloud.com/blog/how-to-manage-ssh-keys-linux

    -
    -
    +
    Gestión de claves públicas

    Gestión con certificados

    Alice crea un archivo con su identidad y su clave pública

    y para poder verificar la autenticidad una tercera parte de confianza (TTP) firma esta tupla:

    Alice puede ahora distribuir su certificado, que incluye su identidad y clave pública a todos los que confíen en esa TTP

    -
    -
    +
    Gestión de claves públicas

    center

    -
    -
    +
    Gestión de claves públicas

    Una conexión HTTPS / TLS con certificados no quiere decir "confía en mí". Quiere decir "es privada". Podrías estar recibiendo la llamada de Cthulhu, y que fuese privada.

    Scott Hanselman

    @@ -371,9 +358,8 @@

    Gestión con certificados

    https://www.deviantart.com/karosu-maker/art/The-Call-of-Cthulhu-288397181

    -
    -
    +
    Gestión de claves públicas

    Tercera parte de confianza

    Ya no tenemos que conseguir la clave pública de toda Internet, solo la de la TTP

    @@ -387,33 +373,29 @@

    Tercera parte de confianza

    PGP: Pretty Good Privacy
    PKI: Public Key Infrastructure

    -
    -
    +
    Gestión de claves públicas

    PGP: Pretty Good Privacy

    En PGP podemos firmar las claves de conocidos nosotros mismos si nos las han pasado de forma segura

    ...y ellos también pueden hacer lo mismo, permitiendo alzcanzar un paso más

    Nota: PGP tiene una versión de libre distribución llamada GPG derivada de la rfc4880 (OpenPGP)

    -
    -
    +
    Gestión de claves públicas

    center

    Esto es un ejemplo de la interfaz de Mailvelope (GMail, comercial)

    -
    -
    +
    Gestión de claves públicas

    center

    Esto es un ejemplo de la interfaz de KGPG (Linux)

    -
    -
    +
    Gestión de claves públicas

    PGP: grados de seguridad

    @@ -421,9 +403,8 @@

    PGP: grados de seguridad

    "Confío totalmente en mis amigos, pero solo un poco en los amigos de mis amigos y aún menos en los amigos de los amigos de mis amigos"

    Cada eslabón (certificado) tiene una garantía de autenticidad <1

    A partir de unos cuantos certificados el nivel de seguridad deja de ser aceptable

    -
    -
    +
    Gestión de claves públicas

    Dónde conseguir claves públicas

    -
    -
    +
    Gestión de claves públicas

    Problema de PGP

    @@ -442,9 +422,8 @@

    Problema de PGP

  • No escala bien a Internet
  • PGP / GPG aún se usa, pero no es universal

    -
    -
    +
    Gestión de claves públicas

    Public Key Infrastructure

    Idea: confiar en unas pocas TTPs (Trusted Third Party) que gestionen todos los certificados de Internet

    @@ -454,9 +433,8 @@

    Public Key Infrastructure

  • En el sistema operativo Windows, Linux, OSX...
  • En los navegadores de internet
  • -
    -
    +
    Gestión de claves públicas

    Cadena de confianza, intermediarios y raíces

    Normalmente hay una "cadena de confianza" con varios eslabones

    @@ -464,14 +442,12 @@

    Cadena de confianza, i

    https://es.wikipedia.org/wiki/Cadena_de_confianza

    -

    -
    +
    Gestión de claves públicas

    center

    -
    -
    +
    Gestión de claves públicas

    Jerarquía de Autoridades de Certificación

      @@ -488,39 +464,34 @@

      Jerarquía de Autor

    -
    -
    +
    Gestión de claves públicas

    Autoridades de certificación raíz

    Instaladas con el sistema operativo o el navegador

    En la imagen, Root CAs instaladas en mi Firefox

    -
    -
    +
    Gestión de claves públicas

    Revocación

    Los certificados tienen una validez limitada en el tiempo, pero es posible que su contenido deje de ser válido antes

    Si esto pasa, hace falta comunicarlo a la RA (Autoridad de Registro) siguiendo los procedimientos que dictamine la Política de Certificación (o la Declaración de Prácticas de Certificación derivada)

    -
    -
    +
    Gestión de claves públicas

    ¿Cómo sabemos si un certificado ha sido revocado?

    • se publica una CRL: Certificate Revocation List
    • se publica en un servidor OCSP
    -
    -
    +
    Criptografía híbrida

    Juntando las piezas

    Protocolo HTTPS

    -
    -
    +
    Criptografía híbrida

    Criptografía híbrida

      @@ -540,9 +511,8 @@

      Criptografía híbrida

    -
    -
    +
    Criptografía híbrida

    Criptografía híbrida: aprovechar lo mejor de todos los mundos

    @@ -575,9 +545,8 @@

    Criptografía híbrida

    -
    -
    +
    Criptografía híbrida

    Firma digital: proceso

    -
    +
    Criptografía híbrida

    Cifrando el hash de un mensaje con nuestra clave privada, aseguramos que ese mensaje lo hemos enviado nosotros y cualquier puede verificarlo

    center

    Firma digital de un mensaje = cifrado del hash de un mensaje con mi clave privada

    -
    -
    +
    Criptografía híbrida

    Protocolo Diffie-Hellman, autenticado

    @@ -628,9 +595,8 @@

    Protocolo Diffie-Hellman, autentic
  • Y usan como clave de cifrado un algoritmo simétrico
  • -

    -
    +
    Criptografía híbrida

    Cifrado híbrido: protocolo HTTPS

      @@ -639,27 +605,23 @@

      Cifrado híbrido: protocolo HTTPS<
    1. Luego usan esa clave para cifrar las comunicaciones AES
    2. Periódicamente, renuevan la clave de sesión ejecutando de nuevo un D-H ("D-H efímero")
    -
    -
    +
    Criptografía híbrida

    Protocolo negociado: TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256

    -
    -
    +
    Criptografía híbrida

    Protocolo negociado: TLS_AES_128_GCM_SHA256

    -
    -
    +

    Resumen y referencias

    -
    -
    +

    Resumen

    • Hemos reducido el problema de la seguridad en un problema de gestión de claves públicas
    • @@ -678,9 +640,8 @@

      Resumen

    -
    -
    +

    Referencias

    -
    -
    +

    Continúa en: Ransomware

    -
    -
    +

    ¡Gracias!

    -

    Recordatorio de cómo funciona el cifrado asimétrico: diff --git a/08-ransomware.html b/08-ransomware.html index cf18a2f..b866d33 100644 --- a/08-ransomware.html +++ b/08-ransomware.html @@ -217,13 +217,12 @@ Other editor might need these custom code in the YAML header: section: | */ /* section header { display: none; } */ -/* section footer { display: none; } */div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]{columns:initial!important;display:block!important;padding:0!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]:after,div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]:before,div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=content]:after,div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=content]:before{display:none!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]{all:initial;display:flex;flex-direction:row;height:100%;overflow:hidden;width:100%}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container][data-marpit-advanced-background-direction=vertical]{flex-direction:column}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background][data-marpit-advanced-background-split]>div[data-marpit-advanced-background-container]{width:var(--marpit-advanced-background-split,50%)}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background][data-marpit-advanced-background-split=right]>div[data-marpit-advanced-background-container]{margin-left:calc(100% - var(--marpit-advanced-background-split, 50%))}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]>figure{all:initial;background-position:center;background-repeat:no-repeat;background-size:cover;flex:auto;margin:0}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]>figure>figcaption{position:absolute;border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;white-space:nowrap;width:1px}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=content],div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=pseudo]{background:transparent!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=pseudo],div#\:\$p>svg[data-marpit-svg]>foreignObject[data-marpit-advanced-background=pseudo]{pointer-events:none!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background-split]{width:100%;height:100%}

    +/* section footer { display: none; } */div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]{columns:initial!important;display:block!important;padding:0!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]:after,div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]:before,div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=content]:after,div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=content]:before{display:none!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]{all:initial;display:flex;flex-direction:row;height:100%;overflow:hidden;width:100%}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container][data-marpit-advanced-background-direction=vertical]{flex-direction:column}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background][data-marpit-advanced-background-split]>div[data-marpit-advanced-background-container]{width:var(--marpit-advanced-background-split,50%)}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background][data-marpit-advanced-background-split=right]>div[data-marpit-advanced-background-container]{margin-left:calc(100% - var(--marpit-advanced-background-split, 50%))}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]>figure{all:initial;background-position:center;background-repeat:no-repeat;background-size:cover;flex:auto;margin:0}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]>figure>figcaption{position:absolute;border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;white-space:nowrap;width:1px}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=content],div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=pseudo]{background:transparent!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=pseudo],div#\:\$p>svg[data-marpit-svg]>foreignObject[data-marpit-advanced-background=pseudo]{pointer-events:none!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background-split]{width:100%;height:100%}

    Ransomware

    Juan Vera del Campo - juan.vera@professor.universidadviu.com

    -
    -
    +

    Hoy hablamos de...

    Cómo se usa la criptografía para atacar, y seguiremos explorando conceptos de criptografía simétrica y asimétrica

    @@ -231,20 +230,17 @@

    Hoy hablamos de...

  • Ransomware
  • Las transparencias de esta sesión están en inglés

    -
    -
    +

    Ransomware

    -
    -
    +

    Ransomware - Anatomy of an Attack ESI & CISCO, 2018

    -
    -
    +
    • Malware that encrypts the victim's files, making them inaccessible, and demands a ransom payment to decrypt them
    • recovering the files without the decryption key is an intractable problem
    • @@ -255,21 +251,18 @@

      Ransomware

      https://en.wikipedia.org/wiki/Ransomware

      -
    -
    +

    center

    https://www.coveware.com/blog/2023/4/28/big-game-hunting-is-back-despite-decreasing-ransom-payment-amounts

    -
    -
    +

    Ransomware groups

    center

    -
    -
    +
    -
    +

    center

    Christiaan Beek in Twitter, 2021

    -
    -
    +

    Most Common Ransomware Variants in Q2 2023

    https://www.coveware.com/blog/2023/4/28/big-game-hunting-is-back-despite-decreasing-ransom-payment-amounts

    -
    -
    +

    Ransomware-as-a-service

    center

    @@ -309,16 +299,14 @@

    Ransomware-as-a-service

    https://www.upguard.com/blog/what-is-ransomware-as-a-service

    -
    -
    +

    On August, 2021, a disgruntled member of the Conti ransomware program leaked the manuals and technical guides used by the Conti gang to train affiliate members on how to access, move laterally, and escalate access inside a hacked company and then exfiltrate its data before encrypting files.

    https://cryptographybuzz.com/ransomware-affiliate-leaks-conti/

    -
    -
    +

    Defense against ransomware

    -
    +

    Ransomware as an unplanned backup

    Backups do not stop attackers! Asking for a ransom for NOT PUBLISHING your data is a trend since 2021

    center

    -
    -
    +

    center

    Check: https://ransomwatch.telemetry.ltd/#
    Alternative: https://darkfeed.io/ransomwiki/

    -
    -
    +

    Entry point

    center

    -
    -
    +

    -
    -
    +

    -
    -
    +

    Example: Babuk

    Modern Ransomware and exfiltration

      @@ -370,9 +352,8 @@

      Example: Babuk

    • Next, it removes existing backups and shadow copies
    • It uses its own implementation of SHA256 hashing, ChaCha8 encryption, and Elliptic-curve Diffie–Hellman (ECDH) key generation and exchange algorithm to protect its keys and encrypt files
    -
    -
    +
    1. Babuk uses RtlGenRandom to generate 4 random buffers. Two of which are used as ChaCha8 keys, and the other two are used as ChaCha8 nonces.
    2. It will encrypt the second ChaCha8 key using the first key and nonce. After that, the first key is then encrypted using the encrypted second key and nonce.
    3. @@ -381,9 +362,8 @@

      Example: Babuk

    4. This shared secret goes thorugh a SHA256 hashing algorithm to generate 2 ChaCha8 keys, which are used to encrypt files later.
    5. In order to be able to decrypt files, Babuk stores the local public key in the file ecdh_pub_k.bin in the APPDATA folder.
    -
    -
    +
    1. Using FindFirstFileW and FindNextFileW calls, it goes through each directory to look for files and sub-directories.
    2. Babuk only goes down 16 directory layers deep, so it potentially does not encrypt every single folders in the drive to save time.
    3. @@ -391,13 +371,11 @@

      Example: Babuk

    4. With large files, encryption is a bit different. To save time, the entire file is divided into three equally-large regions. For each of these regions, only the first 10485760 bytes or 10 MB will be encrypted.
    5. Babuk uses the two ChaCha8 keys generated from the ECDH shared secret’s SHA256 hash as the encrypting keys and the first 12 bytes of the shared secret as nonce.
    -
    -
    +

    center

    -
    -
    +

    Recommendations

    • Ransomware uses state-of-the-art encryption mechanisms: files cannot be decrypted without paying the attacker
    • @@ -405,9 +383,8 @@

      Recommendations

    • Do not store the backup in the same machine or it will be encrypted as well!
    • After a ransomware event, check carefully the attacker is not still inside!
    -
    -
    +

    References

    -
    -
    +

    2023 CrowdStrike Global Threat Report. This year’s highlights include:

    • Nation-state adversaries engaged in relentless computer network operations throughout 2022, emphasizing the integral role these operations play in supporting state goals
    • After some of the biggest and most notorious ransomware enterprise shutdowns, ransomware affiliates moved to new ransomware-as-a-service (RaaS) operations
    • Increase in social engineering using human interaction, such as vishing, to successfully download malware or circumvent multifactor authentication (MFA)
    -
    -
    +

    Ejercicios: https://colab.research.google.com/github/Juanvvc/crypto/blob/master/ejercicios/08/Ransomware Venus.ipynb

    -
    -
    +

    ¡Gracias!

    -

    El ransomware es uno de los mayores peligros para una compañía, y también uno de los ataques más lucrativos... diff --git a/09-esteganografia.html b/09-esteganografia.html index c0b06f4..88d614e 100644 --- a/09-esteganografia.html +++ b/09-esteganografia.html @@ -217,13 +217,12 @@ Other editor might need these custom code in the YAML header: section: | */ /* section header { display: none; } */ -/* section footer { display: none; } */div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]{columns:initial!important;display:block!important;padding:0!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]:after,div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]:before,div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=content]:after,div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=content]:before{display:none!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]{all:initial;display:flex;flex-direction:row;height:100%;overflow:hidden;width:100%}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container][data-marpit-advanced-background-direction=vertical]{flex-direction:column}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background][data-marpit-advanced-background-split]>div[data-marpit-advanced-background-container]{width:var(--marpit-advanced-background-split,50%)}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background][data-marpit-advanced-background-split=right]>div[data-marpit-advanced-background-container]{margin-left:calc(100% - var(--marpit-advanced-background-split, 50%))}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]>figure{all:initial;background-position:center;background-repeat:no-repeat;background-size:cover;flex:auto;margin:0}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]>figure>figcaption{position:absolute;border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;white-space:nowrap;width:1px}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=content],div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=pseudo]{background:transparent!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=pseudo],div#\:\$p>svg[data-marpit-svg]>foreignObject[data-marpit-advanced-background=pseudo]{pointer-events:none!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background-split]{width:100%;height:100%}

    +/* section footer { display: none; } */div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]{columns:initial!important;display:block!important;padding:0!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]:after,div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]:before,div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=content]:after,div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=content]:before{display:none!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]{all:initial;display:flex;flex-direction:row;height:100%;overflow:hidden;width:100%}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container][data-marpit-advanced-background-direction=vertical]{flex-direction:column}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background][data-marpit-advanced-background-split]>div[data-marpit-advanced-background-container]{width:var(--marpit-advanced-background-split,50%)}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background][data-marpit-advanced-background-split=right]>div[data-marpit-advanced-background-container]{margin-left:calc(100% - var(--marpit-advanced-background-split, 50%))}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]>figure{all:initial;background-position:center;background-repeat:no-repeat;background-size:cover;flex:auto;margin:0}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]>figure>figcaption{position:absolute;border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;white-space:nowrap;width:1px}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=content],div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=pseudo]{background:transparent!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=pseudo],div#\:\$p>svg[data-marpit-svg]>foreignObject[data-marpit-advanced-background=pseudo]{pointer-events:none!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background-split]{width:100%;height:100%}

    Esteganografía

    Juan Vera del Campo - juan.vera@professor.universidadviu.com

    -
    -
    +

    Hoy hablamos de...

      @@ -233,19 +232,16 @@

      Hoy hablamos de...

    1. Ataques y detección
    2. Referencias
    -
    -
    +

    Esteganografía

    -
    -
    +

    Esteganografía

    Ocultación de información dentro de otra información más común, un documento que no sea secreto, o un documento que no levante sospechas

    -
    -
    +

    Usos

    • Confidencialidad: enviar información en un canal oculto
    • @@ -254,22 +250,19 @@

      Usos

    • DLP / DRM: detectar quién ha distribuido un documento
    • Atacantes: ¡llevar el malware sin que sea detectado!
    -
    -
    +

    Técnicas de ocultación de información

    center

    "A Comparative Analysis of Information Hiding Techniques for Copyright Protection of Text Documents",Milad Taleby Ahvanooey,1 Qianmu Li, Hiuk Jae Shim, and Yanyan Huang. Security and Communication Networks / 2018

    -
    -
    +

    Proceso

    -
    -
    +

    Propiedades

    (Deseables o no)

      @@ -278,15 +271,13 @@

      Propiedades

    • Que pueda ser verificable: criptografía
    • Coste computacional para poner / quitar
    -
    -
    +

    Ejemplos

    Watermarking y fingerprinting

    -
    -
    +

    Imágenes

      @@ -297,31 +288,26 @@

      Imágenes

    • ...

    https://www.mobilefish.com/services/steganography/steganography.php

    -
    -
    +

    -
    -
    +

    Look Scanned

    -
    -
    +

    https://www.bbc.com/future/article/20170607-why-printers-add-secret-tracking-dots

    -
    -
    +

    -
    -
    +

    Textos

      @@ -330,40 +316,34 @@

      Textos

    • Linguístico: cambiar palabras, frases...
    • Estructural: espacios, marcas, tipos de letra...
    -
    -
    +

    Shaadow.io

    center

    https://www.elladodelmal.com/2022/04/como-poner-una-marca-oculta-shaadow-los.html

    -
    -
    +

    Text steganography: kerning spaces

    center

    -
    -
    +

    Text steganography: rejillas

    center

    -
    -
    +

    Esteganografía para atacantes

    -
    -
    +

    Usos

    • Evasión de antivirus: Ocultar el malware dentro de archivos/protocolos aparentemente legitimos
    • Evasión de cortafuegos: comunicaciones prohibidas a través de protocolos permitidos
    • Ocultar la exfiltración de información a los sistemas de seguridad
    -
    -
    +

    Network steganography

    -
    +

    DNS tunneling

    center

    https://help.zscaler.com/zia/about-dns-tunnel-detection

    -
    -
    +

    Malware en archivos

    center

    https://blog.reversinglabs.com/blog/malware-in-images

    -
    -
    +

    Polyglots

    Con esta técnica, un archivo puede ser una cosa u otra según un contexto

    -
    -
    +

    Qbot durante 2022:

    <embed src="data:image/svg+xml;
     base64,SDKSJdisdskskjskdsk432432...."
    @@ -420,20 +396,17 @@ 

    Polyglots

    https://www.blackhat.com/docs/eu-15/materials/eu-15-Shah-Stegosploit-Exploit-Delivery-With-Steganography-And-Polyglots.pdf
    https://www.bleepingcomputer.com/news/security/attackers-use-svg-files-to-smuggle-qbot-malware-onto-windows-systems/

    -
    -
    +

    center

    https://ia802801.us.archive.org/6/items/ftireportintojeffbezosphonehack/FTI-Report-into-Jeff-Bezos-Phone-Hack_text.pdf

    -
    -
    +

    Ataques y detección

    -
    -
    +

    Ataques

    • Activos: el atacante quiere quitar la marca
    • @@ -441,17 +414,15 @@

      Ataques

    • Colisiones: el atacante usa dos documentos marcados para obtener uno sin marca
    • Simulación: el atacante genera un documento con una marca falsa
    -
    -
    +

    Estimación de la marca

    center

    https://ai.googleblog.com/2017/08/making-visible-watermarks-more-effective.html

    -
    -
    +

    Entropía

      @@ -462,27 +433,23 @@

      Entropía

    • Aplicable a muchos canales de comunicación: DNS, chat, imágenes, email...
    • No aplicable a canales que ya tengan entropía máxima por estar comprimidos: vídeo, imágenes...
    -
    -
    +

    center

    Ejemplo del archivo cifrado del primer ejericio. Fíjate: al principio y al final no tiene entropía, y esas son las partes "que estaban a cero"

    -
    -
    +

    Administradores web

    • Re-codifica las imágenes subidas por los usuarios
    • Monitoriza librerías JavaScript
    • Herramientas especializadas de detección: IDS/firewall/WAF...
    -
    -
    +

    Referencias

    -
    -
    +

    Referencias

    -
    -
    +

    ¡Gracias!

    -

    DLP: Data Leak Protection diff --git a/10-postcuantica.html b/10-postcuantica.html new file mode 100644 index 0000000..9ccc76a --- /dev/null +++ b/10-postcuantica.html @@ -0,0 +1,641 @@ +Criptografía - Postcuántica

    +

    Criptografía Post-cuántica

    + +

    Juan Vera del Campo - juan.vera@professor.universidadviu.com

    +
    +
    +

    Hoy hablamos de...

    + +
      +
    1. Computación cuántica
    2. +
    3. Criptografía post-cuántica
    4. +
    5. Resumen y referencias
    6. +
    +
    +
    +

    Computación Cuántica

    + +

    Una introducción a vista de pájaro

    +
    +
    +

    Computación cuántica

    + +
      +
    • La computación cuántica utiliza principios de la mecánica cuántica para realizar cálculos
    • +
    • Propuesta por Richard Feynman en la década de 1980, sugirió que las computadoras cuánticas podrían usarse para simular el comportamiento de sistemas cuánticos complejos, como moléculas o materiales, de manera más eficiente que las computadoras clásicas
    • +
    • Una misma tarea puede tener diferente complejidad en computación clásica comparada con la que tiene en computación cuántica
    • +
    +
    +
    +

    Q-bit

    + +

    La unidad de la computación cuántica es el Q-bit. A diferencia de los bits clásicos, que solo pueden tomar los valores de 0 o 1, los Q-bit pueden existir en múltiples estados simultáneamente

    +

    Cuando se miden los Q-bits, el resultado es probabilístico. Las computadoras cuánticas son no-deterministas

    +
    +
    +

    Comparación con la computación tradicional

    +
      +
    • La computación tradicional y la cuántica resuelven los mismos problemas, pero la cuántica permite resolver problemas complejos con una rapidez que no sabemos alcanzar con computación tradicional
    • +
    • ¡No todos los problemas son complejos!
    • +
    • La computación cuántica da un resultado probabilístico. Es decir, "esto es una solución, probablemente". Repetir el algoritmo varias veces permite reducir la probabilidad de error
    • +
    +
    +
    +

    ¿Qué es lo que NO HACEN las computadoras cuánticas?

    + +
      +
    • No traerán mejores gráficas a los juegos
    • +
    • No nos traerán mejores aplicaciones informáticas
    • +
    • No traerán una red Internet más rápida
    • +
    + +

    Es poco probable que tengamos una computadora cuántica en nuestros escritorios alguna vez

    +
    +
    +

    Las computadoras cuánticas NO HACEN criptografía cuántica

    + +
      +
    • La criptografía cuántica usa la física cuántica para crear un canal seguro
    • +
    • Cuidado: ¡no es necesario un computador cuántico para usar criptografía cuántica!
    • +
    • Ejemplo: distribución de claves cuántica (QKD)
    • +
    +

    center

    +

    En esta clase no hablaremos de criptografía cuántica sinó post-cuántica, que definiremos más adelante

    +
    +

    https://en.wikipedia.org/wiki/Quantum_cryptography

    +
    +
    +
    +

    Entonces, ¿qué hacen las computadores cuánticas?

    +
      +
    • Mejoras en los entrenamientos de inteligencia artificial
    • +
    • Mejoras en los sistemas de optimización
    • +
    • Sistemas de recomendación de compras y finanzas
    • +
    • Resolver los problemas matemáticos en los que se basa la criptografía actual mucho más rápido de lo esperado
    • +
    + +
    +

    https://research.aimultiple.com/quantum-computing-applications/

    +
    +
    +
    +

    Algoritmos ejecutados por computadoras cuánticas

    + +
      +
    • Algoritmo de Grover (1996): búsqueda exahustiva en una secuencia no ordenada con mejora cuadrática. "Inversión de funciones". AES-128 en
    • +
    • Algoritmo de Shor (1999): permite encontrar factores de un número de una manera eficiente. RSA, ECC y D-H en
    • +
    +

    Son algoritmos probabilísticos: dan la respuesta correcta con una cierta probabilidad, y la probabilidad de fallo puede ser disminuida repitiendo el algoritmo

    +

    Cuando se implementen estos algoritmos en una computadora cuántica, cambiarán totalmente la criptografía actual

    +
    +
    +

    ¿Cuánto tiempo llevará tener una computadora cuántica?

    +

    center

    +
    +

    Quantum Threat Timeline Report Global Risk Institute, Noviembre 2022

    +
    +
    +
    +

    Criptografía Post-cuántica

    +
    +
    +

    Efectos de la computación cuántica en criptografía clásica

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    AlgoritmoTipoAlgoritmoImpacto
    AESSimétricoGrover⚠ Tamaño de claves x2
    SHAFunción de hashGrover⚠ Tamaño de salida x1.5
    RSAAsimétrico, firmasShor☠ Rota, reemplazar
    D-HAsimétrico, intercambio de clavesShor☠ Rota, reemplazar
    ElípticasECDH, ECDSA...Shor☠ Rota, reemplazar
    +
    +
    +

    Criptografía post-cuántica

    + +
      +
    • Intercambio de claves post-cuántico, para sustituir a D-H y RSA
    • +
    • Esquemas de firma digital post-cuánticos, para sustituir a RSA, ECDSA
    • +
    • Doblar las longitudes de la clave para simétrica y hash
    • +
    +

    Criptografía post-cuántica: sistemas criptográficos que usarán las computadoras clásicas cuando existan las computadoras cuánticas

    +
    +
    +

    Tiempo de transición

    + +
      +
    • Aún no existe una computadora cuántica con la potencia suficiente como para romper RSA, ni se sabe cuándo la tendremos
    • +
    • Existe una "carrera cuántica" que están llevando China, USA, Europa por ser los primeros en tener una tecnología útil
    • +
    • Problema: store now, decrypt later
    • +
    • Históricamente, las transiciones son lentas: 3DES, MD5 aún están entre nosotros más de una década después de que no se recomiende su uso
    • +
    +

    La recomendación es empezar ya con la transición

    +
    +

    Recomendaciones para una transición postcuántica segura. CCN-TEC 009. Diciembre 2022

    +
    +
    +
    +

    Concurso del NIST

    +

    En 2016, el NIST (instituo de estandarización de EEUU), convocó un concurso para evaluar los mejores algoritmos post-cuánticos que le presentasen:

    +
      +
    • Cifrado asimétrico
    • +
    • Mecanismos de encapsulación de claves o KEM (Key Encapsulation
      +Mechanism
      )
    • +
    • Firmas digitales
    • +
    +

    Estamos en la cuarta ronda de selección y se espera que sean estándares FIPS 204-205 en 2024

    +
    +
    +

    Problemas matemáticos en los que se basa la criptografía post-cuántica

    +
      +
    • Códigos correctores de errores
    • +
    • Retículos
    • +
    • Funciones de hash con y sin estado
    • +
    • Polinomios multivariantes cuadráticos
    • +
    • Isogenias definidas sobre curvas elípticas
    • +
    +
    +
    +

    Algoritmos

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TipoNombreProblema matemáticoNotas
    KEMCRYSTALS-KyberRetículo estructuradoSigue en concurso del NIST
    KEMFrodoKEMRetículo no estructurado⚠ Descartado por el NIST por lento, pero otras entidades aún lo recomiendan
    KEMBIKECódigos cuasi-ciclicosNo presentado en tercera ronda, pero será evaluado
    KEMHQCCódigos cuasi-ciclicosNo presentado en tercera ronda, pero será evaluado
    KEMClassic McElieceCódigos de Goppa⚠ Clave demasiado grande
    KEMSIKEIsogenias☠ Roto con computación tradicional en 2022
    FirmaCRYSTALS-DilithiumRetículo estructuradoSigue en concurso del NIST
    FirmaFalconRetículo estructuradoSigue en concurso del NIST
    FirmaSPHINCSFunciones de hashSigue en concurso del NIST
    FirmaXMSSFunciones de hash⚠ Descartado por el NIST por no ser general, pero recomendado para aplicaciones específicas
    +

    Tras la tercera ronda, el NIST parece preferir algoritmos no basados en retículos estructurados y ha abierto una nueva consulta para algoritmos de firma

    +
    +
    +

    Comparativas

    + +

    Comparativa con RSA-2048: intercambio de claves

    + + + + + + + + + + + + + + + + + + + +
    AlgoritmoTamaño claveTamaño cifradoTiempo cifradoTiempo KeyGen
    Kyber512x4x4x1x4000
    +

    Comparativa con Ed25519 (ECDA): firmas

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    AlgoritmoTamaño claveTamaño cifradoTiempo firmadoTiempo verificar
    Dilithium2x40x40x5x0.5
    Falcon512x30x10x8x0.5
    SPHINCS+128x1x100x500x7
    +
    +

    Fuente: charla "Criptografía postcuántica: presente y futuro" de Adrián Ranea en Jornadas CCN-CERT 2023

    +
    +
    +
    +

    Nuevos requisitos de implementación

    +

    Los nuevos algoritmos son más complejos, y eso también significa que son más difícil de implementar y proteger

    +
      +
    • Retículos: Fallos en el desencriptado
    • +
    • Retículos: Necesitan generadores aleatorios gaussianos
    • +
    • FALCON: aritmética en coma flotante
    • +
    • BIKE: descifra en tiempo variable
    • +
    • XMSS: necesita guardar estado entre firmas
    • +
    +
    +
    +

    Esquemas híbridos

    +
      +
    • Hash: incluir hash tradicional y post-cuántico
    • +
    • Firmas: incluir firma tradicional y post-cuántica
    • +
    • KEM: cascada de funciones de derivación de clave clásicas, post-cuánticas
    • +
    +
    +
    +

    Plan de migración

    +
      +
    1. Determinar la información que debo proteger y hasta cuándo. +
        +
      • Cifrado: largos periodos
      • +
      • Firma: hasta caducidad de certificado (unos 2 años)
      • +
      +
    2. +
    3. Realizar un inventario exhaustivo de productos y cifradores que empleo para proteger mi información y mis activos.
    4. +
    5. Analizar con rigor si tales productos y cifradores son o no resistentes a la computación cuántica.
    6. +
    7. Establecer un plan de migración a los soluciones híbridos
    8. +
    9. Decidir qué nuevos productos necesito y cuánto tiempo requiero para su adquisición y despliegue.
    10. +
    11. Determinar cuánto tiempo tengo disponible
    12. +
    +
    +

    Recomendaciones para una transición postcuántica segura. CCN-TEC 009. Diciembre 2022

    +
    +
    +
    +

    center

    +
    +

    Recomendaciones para una transición postcuántica segura. CCN-TEC 009. Diciembre 2022

    +
    +
    +
    +

    Resumen y referencias

    +
    +
    +

    Resumen

    +
      +
    • La criptografía cuántica permite resolver ciertos problemas más rápidamente de lo que sabemos hacerlo con computación tradicional
    • +
    • Cuando llegue: +
        +
      • La criptografía simétrica actual deberá doblar el tamaño de las claves usadas
      • +
      • Las funciones de hash deberán casi doblar los bits de salida
      • +
      • La criptografía asimétrica (intercambio de claves y firmado) estará obsoleta
      • +
      +
    • +
    • Criptografía post-cuántica: sistemas criptográficos que usarán las computadoras clásicas cuando existan las computadoras cuánticas
    • +
    • Aún no se han estandarizado los algoritmos post-cuánticos que usaremos. El NIST está aún evaluando las propuestas
    • +
    • El periodo de transición puede ser muy largo, y se recomienda migrar inmediatamente a criptografía post-cuántica, empezando por aquellos algoritmos más sencillos de cambiar
    • +
    +
    +
    +

    Referencias

    + +
    +
    +

    ¡Gracias!

    +
    +

    Nota: no pretenderé explicar cómo funciona la computación cuántica, sinó cómo afectará a la criptografía del futuro próximo

    La criptografía cuántica utiliza los principios cuánticos para crear un canal de comunicaciones seguro. ¡No se necesita una computadora cuántica para usar la criptografía cuántica + +En el ejemplo, se usa un canal cuántico para distribuir una clave criptográfica tradicional que se puede usar, por ejemplo, para AES. En un canal cuántico, "el acto de medir cambia lo que se mide", así que Alice y Bob se darán cuanta si hay alguien escuchando el canal, y no usarán esa clave para cifrar + +En esta clase no hablaremos de criptografía cuántica

    En la imagen, IBM-Q quantum computer en la conferencia Supercomputing 18 de Dallas, Texas

    Observa: ya teníamos algoritmos antes de tener el primer computador cuántico!

    Recuerda: + +- el cifrado simétrico (AES, ChaCha hash) se puede romper simplemente buscando qué texto original daría un cifrado. Eso es una búsqueda exhaustiva, y la computación cuántica puede hacer más rápidamente que la tradicional +- La seguridad de RSA se basa en que no sabemos hacer factorización de números primos rápidamente con computadoras clásicas, pero sí que sabremos resolverlo muy rápidamente con computadoras cuánticas +- D-H se basa en el problema del logaritmo discreto y tiene el mismo problema +- Los sistemas de curvas elípticas también tendrán el mismo problema + +Aunque la criptografía simétrica resistirá, necesitamos sustituir la criptografía asimétrica

    Fíjate bien: llamamos criptografía post-cuántica a la criptografía que ejecutarán las computadoras clásicas, no las cuánticas

    EL intercambio de claves clásico podría hacerse acordando una clave (Diffie-Hellman) o simplemente enviando una clave simétrica cifrada con RSA. Esto último es lo que se llama "encapsulamiento de clave"

    Todos estos algoritmos están bajo un estudio constante y se están descubriendo ataques existosos a algunos de ellos. Cada uno tiene ventajas y desventajas: manejo de estados, tiempos muy largos, claves largas...

    Para firmar las actualizaciones de firmaware se recomienda utilizar ya firmados post-cuánticos. El hardware puede estar funcionando durante décadas, muy posiblemente hasta después de que existan las computadoras cuánticas + +Los sitemas híbridos utilizan tanto criptografía cuánticas como post-cuántica, adaptando primero los algoritmos que puedan ser más sencillos (como D-H)

    \ No newline at end of file diff --git a/images/quantum/computer.png b/images/quantum/computer.png new file mode 100644 index 0000000..c315e2c Binary files /dev/null and b/images/quantum/computer.png differ diff --git a/images/quantum/curves.png b/images/quantum/curves.png new file mode 100644 index 0000000..e98641c Binary files /dev/null and b/images/quantum/curves.png differ diff --git a/images/quantum/gamer.png b/images/quantum/gamer.png new file mode 100644 index 0000000..f1f991f Binary files /dev/null and b/images/quantum/gamer.png differ diff --git a/images/quantum/ibm-q.jpg b/images/quantum/ibm-q.jpg new file mode 100644 index 0000000..f41ba57 Binary files /dev/null and b/images/quantum/ibm-q.jpg differ diff --git a/images/quantum/migracion.png b/images/quantum/migracion.png new file mode 100644 index 0000000..f3c1162 Binary files /dev/null and b/images/quantum/migracion.png differ diff --git a/images/quantum/predicciones.png b/images/quantum/predicciones.png new file mode 100644 index 0000000..7857710 Binary files /dev/null and b/images/quantum/predicciones.png differ diff --git a/images/quantum/q-key-distribution.png b/images/quantum/q-key-distribution.png new file mode 100644 index 0000000..9e95649 Binary files /dev/null and b/images/quantum/q-key-distribution.png differ diff --git a/index.html b/index.html index 927a5fc..9c8357e 100644 --- a/index.html +++ b/index.html @@ -215,7 +215,7 @@ /* hide footer and pagination */display:none}div#\:\$p>svg>foreignObject>section.last-slide a,div#\:\$p>svg>foreignObject>section.last-slide p{color:#111} /* You can add custom style here. VSCode supports this. Other editor might need these custom code in - the YAML header: section: | */div#\:\$p>svg>foreignObject>section[data-marpit-scope-rtjNV9Jp] ol{counter-reset:li 5}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]{columns:initial!important;display:block!important;padding:0!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]:after,div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]:before,div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=content]:after,div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=content]:before{display:none!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]{all:initial;display:flex;flex-direction:row;height:100%;overflow:hidden;width:100%}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container][data-marpit-advanced-background-direction=vertical]{flex-direction:column}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background][data-marpit-advanced-background-split]>div[data-marpit-advanced-background-container]{width:var(--marpit-advanced-background-split,50%)}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background][data-marpit-advanced-background-split=right]>div[data-marpit-advanced-background-container]{margin-left:calc(100% - var(--marpit-advanced-background-split, 50%))}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]>figure{all:initial;background-position:center;background-repeat:no-repeat;background-size:cover;flex:auto;margin:0}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]>figure>figcaption{position:absolute;border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;white-space:nowrap;width:1px}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=content],div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=pseudo]{background:transparent!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=pseudo],div#\:\$p>svg[data-marpit-svg]>foreignObject[data-marpit-advanced-background=pseudo]{pointer-events:none!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background-split]{width:100%;height:100%}
    + the YAML header: section: | */div#\:\$p>svg>foreignObject>section[data-marpit-scope-1UTi6uwH] ol{counter-reset:li 5}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]{columns:initial!important;display:block!important;padding:0!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]:after,div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]:before,div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=content]:after,div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=content]:before{display:none!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]{all:initial;display:flex;flex-direction:row;height:100%;overflow:hidden;width:100%}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container][data-marpit-advanced-background-direction=vertical]{flex-direction:column}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background][data-marpit-advanced-background-split]>div[data-marpit-advanced-background-container]{width:var(--marpit-advanced-background-split,50%)}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background][data-marpit-advanced-background-split=right]>div[data-marpit-advanced-background-container]{margin-left:calc(100% - var(--marpit-advanced-background-split, 50%))}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]>figure{all:initial;background-position:center;background-repeat:no-repeat;background-size:cover;flex:auto;margin:0}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]>figure>figcaption{position:absolute;border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;white-space:nowrap;width:1px}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=content],div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=pseudo]{background:transparent!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background=pseudo],div#\:\$p>svg[data-marpit-svg]>foreignObject[data-marpit-advanced-background=pseudo]{pointer-events:none!important}div#\:\$p>svg>foreignObject>section[data-marpit-advanced-background-split]{width:100%;height:100%}

    Criptografía y teoría de códigos

    Presentación

    @@ -238,7 +238,7 @@

    Temario

    -
    +
    1. Funciones de Hash y Blockchain
    2. TLS y Public Key Infrastructure