diff --git a/02-historia.html b/02-historia.html index e6f90c0..808ecdd 100644 --- a/02-historia.html +++ b/02-historia.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-QwOlfHhq] th{background-color:#ddd;color:black;font-weight:normal;border:0} + the YAML header: section: | */div#\:\$p>svg>foreignObject>section[data-marpit-scope-g0h58Sx9] th{background-color:#ddd;color:black;font-weight:normal;border:0} /*td:first-child { background-color: var(--main-color);} th:first-child { background-color: var(--main-color);}*/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

@@ -273,7 +273,7 @@

Mecanismos clásicos de cifrado

https://medium.com/@maitri.51/securing-the-digital-realm-a-closer-look-at-s-boxes-and-p-boxes-in-encryption-b14b35f7e139

-
+
Criptografía clásica

Sustitución monoalfabética:

diff --git a/03-simetrica.html b/03-simetrica.html index 0283d30..dd01ccb 100644 --- a/03-simetrica.html +++ b/03-simetrica.html @@ -217,7 +217,7 @@ 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-hNo1y4HZ]{font-size:180%}div#\:\$p>svg>foreignObject>section[data-marpit-scope-hNo1y4HZ]{--marpit-root-font-size:180%}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-2A5N8GcC]{font-size:180%}div#\:\$p>svg>foreignObject>section[data-marpit-scope-2A5N8GcC]{--marpit-root-font-size:180%}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

@@ -301,7 +301,7 @@

Ataques de fuerza bruta

Confidencialidad computacional
-

center

+

center

Confidencialidad computacional
@@ -320,7 +320,7 @@

Tamaños recomendados de clave

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

+

center

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

@@ -751,7 +751,7 @@

Vulnerabilidades

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

diff --git a/07-pki.html b/07-pki.html index 1d80ba9..85f94ea 100644 --- a/07-pki.html +++ b/07-pki.html @@ -1,4 +1,4 @@ -Criptografía - Public Key Infrastructure
-

Public Key Infrastructure y protocolo HTTPS

+/* section footer { display: none; } */div#\:\$p>svg>foreignObject>section[data-marpit-scope-zSvq10vx] 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%}
+

TLS y Public Key Infrastructure

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

+
-
+

Hoy hablamos de...

    -
  1. Gestión de claves públicas
  2. -
  3. Juntando las piezas
  4. -
  5. Resumen y referencias
  6. +
  7. Criptografía híbrida
  8. +
  9. Gestión de claves públicas
  10. +
  11. Resumen y referencias
+
-
-

Qué sabemos hacer

+
+

Recordatorio: cifrado asimétrico

+ +

center

    -
  • Sabemos enviar mensajes con confidencialidad: criptografía simétrica +
  • Todo el mundo tiene dos claves: pública y privada
  • +
  • Lo que cifras con una lo puedes descifrar con la otra
  • +
  • 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
  • +
+ +
+
+

Problemas cifrado asimétrico

+ +
    +
  • Solo cifran números enteros con una longitud igual a la clave. Ej: 4096 bits
  • +
  • Muy lento comparado con el cifrado simétrico
  • +
  • ¿Cómo distribuimos las claves públicas?
  • +
+

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

+ +
+
+

Criptografía híbrida

+ +

O cómo combinar los ladrillos que ya hemos visto para construir protocolos

+ +
+
+

Definición

+
    +
  • La criptografía simétrica permite cifrar muy rápidamente
  • +
  • Los hashes permiten calcular resúmenes muy rápidamente
  • +
  • La criptografía asimétrica permite cifrar cosas sin tener que intercambiar una clave privada... pero es lenta
  • +
  • Criptografía híbrida
      -
    • Tema 3: AES, ChaCha20
    • +
    • Cifrado híbrido: enviamos clave simétrica cifrado con la clave pública +
        +
      • Ejemplo 1: D-H y después ciframos con AES
      • +
      • Ejemplo 2: ciframos la clave AES con RSA con la clave pública del receptor.
      • +
      +
    • +
    • Firma digital: calculamos el hash de un mensaje y lo ciframos con nuestra clave privada RSA
  • -
  • Sabemos acordar una clave con alguien a quien no conocíamos: +
+ +
+
+

Firma digital: proceso

    -
  • Tema 4: Diffie-Hellman
  • +
  • Los algoritmos como RSA solo cifran números enteros de una longitud igual a la clave. Por ejemplo, 4096 bits.
  • +
  • Alice podría dividir el documento en bloques de 4096b, pero eso no es eficiente
  • +
  • Solución: hash cifrado con la clave privada +
      +
    1. Alice calcula el hash de su documento de 10MB. El hash tiene 512 bytes
    2. +
    3. Alice cifra el hash con su clave privada
    4. +
    5. Cualquiera persona (eso incluye a Bob) puede conocer la clave pública de Alice y descifrar el hash
    6. +
    7. Si se encuentra un documento con un hash firmado por una clave pública, cualquier persona puede verificar que el autor del documento es el poseedor de la clave privada.
    8. +
    +
  • +
+
+

https://cryptobook.nakov.com/digital-signatures/rsa-signatures

+
+ +
+
+

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

+ +
+
+

Protocolo Diffie-Hellman, autenticado

+ +

Igual que el D-H que ya conocemos, pero firmando los mensajes:

+
    +
  1. +

    Alice y Bob tienen un par de claves RSA y , y se intercambian y

    +
  2. +
  3. +

    Alice y Bob acuerdan y primos entre sí

    +
  4. +
  5. +

    Alice escoge y Bob escoge (en secreto)

    +
  6. +
  7. +

    Se envían entre ellos:

    +
      +
    • +
  8. -
  9. Sabemos firmar mensajes: hash y después cifrado con criptografía asimétrica +
  10. +

    Verifican la firma de cada lado:

      -
    • Tema 5: RSA
    • -
    • Tema 6: resumen de mensajes, hashes, firmas
    • +
    • Alice verifica que
    • +
    • Bob verifica que
  11. +
  12. +

    Calculan en secreto:

    +
      +
    • :
    • +
    • :
    +
  13. +
  14. +

    Y usan como clave de cifrado un algoritmo simétrico

    +
  15. +
+
-
-

Problemas cifrado asimétrico

+
+

Cifrado híbrido: HTTPS

+
    +
  1. Alice y Bob negocian los parámetros de seguridad
  2. +
  3. Alice y Bob acuerdan una clave (clave de sesión) utilizando D-H autenticado con sus claves públicas
  4. +
  5. Luego usan esa clave para cifrar las comunicaciones AES
  6. +
  7. Periódicamente, renuevan la clave de sesión ejecutando de nuevo un D-H (modo D-H efímero)
  8. +
+

Esto es el protocolo TLS

+ +
+
+

Ejemplo configuración TLS (1)

+

    -
  • Solo cifran números enteros con una longitud igual a la clave. Ej: 4096 bits
  • -
  • Muy lento comparado con el cifrado simétrico
  • -
  • ¿Cómo distribuimos las claves públicas?
  • +
  • ECDHE: Elliptic Curve Diffie-Hellman, ephimeral
  • +
  • RSA: authentication usando RSA
  • +
  • AES_128_GCM: AES con claves de 128 bits en modo GCM
  • +
  • SHA256: algoritmo de hash usado
-

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

+
-
-
Gestión de claves públicas
-

Gestión de claves públicas

+
+

Ejemplo configuración TLS (2)

-

Certificados electrónicos

-
-
-
Gestión de claves públicas
-

Recordatorio: cifrado asimétrico

-

center

+

    -
  • Todo el mundo tiene dos claves: pública y privada
  • -
  • Lo que cifras con una lo puedes descifrar con la otra
  • -
  • 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
  • +
  • TLS: la clave la decide el servidor y la envía cifrada con RSA, no hay D-H
  • +
  • AES_128_GCM: AES con claves de 128 bits en modo GCM
  • +
  • SHA256: algoritmo de hash usado
+
-
-
Gestión de claves públicas
-

Ataque man in the middle

-

center

+
+

Qué sabemos hacer

+
    +
  • Sabemos enviar mensajes con confidencialidad: criptografía simétrica +
      +
    • AES, ChaCha20
    • +
    +
  • +
  • Para ello, necesitamos una clave simétrica compartida, y sabemos acordarla con alguien a quien no conocíamos previamente: +
      +
    • Elliptic Curves Diffie-Hellman (ECDH)
    • +
    +
  • +
  • Para ello, necesitamos autenticar a la otra persona: obtenemos su clave pública y le pedimos que cifre algo con su clave privada +
      +
    • Authenticated ECDH
    • +
    +
  • +
  • HTTPS / TLS se encarga de gestionar hacer todo esto
  • +
+
-
-
Gestión de claves públicas
- -

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

+
+

Una conexión HTTPS / TLS no quiere decir "confía en mí". Quiere decir "nadie más puede acceder". Podrías estar recibiendo la llamada de un atacante, y que fuese privada.

    -
  • Puedo enviarle mensajes secretos: yo cifro con su clave pública, Bob descifra con su clave privada. Por ejemplo, puedo enviarle la clave AES que usaremos para el resto de las comunicaciones
  • -
  • Bob puede asegurar que es él: cifra "Soy Bob" con su clave privada, podemos descifrar el mensaje con su clave pública
  • +
  • Scott Hanselman
-

¿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

+ +

Certificados electrónicos

+
-
-
Gestión de claves públicas
+
+

Ataque man in the middle

+

center

+ +
+

El problema de la confianza

¿Cómo conseguimos la clave pública de los demás?

    -
  • Sistema central de distribución: base de datos de claves públicas compartida. Idea original de Diffie y Hellman el 1976
  • +
  • Sistema central de distribución: base de datos de todas las claves públicas necesarias. +
      +
    • Idea original de Diffie y Hellman el 1976
    • +
    • No es práctica en la actualidad
    • +
    +
  • Gestión manual: guardamos una lista de claves públicas. Ejemplo: SSH
  • Certificados
      @@ -317,12 +448,13 @@

      El problema de la confianza

+
-
-
Gestión de claves públicas
+

Gestión manual: SSH

    +
  • El cliente genera un par de claves pública/privda. Puede generar tantas como quiera
  • El cliente guarda cifrada la clave privada y la lista de claves públicas de los servidores en que confía

center

@@ -336,124 +468,138 @@

Gestión manual: SSH

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

-
-
-
Gestión de claves públicas
+ +
+
+
juanvi@debian:~/.ssh$ ls
+juanvi@debian:~/.ssh$ ssh-keygen -f clave1 -t rsa
+Generating public/private rsa key pair.
+Enter passphrase (empty for no passphrase): 
+Enter same passphrase again: 
+Your identification has been saved in clave1
+Your public key has been saved in clave1.pub
+The key fingerprint is:
+SHA256:0tj5sJj1Iv6hqbgESj3DcoxONkWVxIg+3Wnyb5ucoRg juanvi@debian
+The key's randomart image is:
++---[RSA 3072]----+
+|  ..=o.          |
+| ... o           |
+|. ... .          |
+| o*o + + .       |
+|.B.B+ o S        |
+|*.+ o. = =       |
+|...E  =.+ o      |
+| . .o.o*+o       |
+|  oo.o=*o        |
++----[SHA256]-----+
+juanvi@debian:~/.ssh$ ls -l
+total 8
+-rw------- 1 juanvi juanvi 2602 Apr 18 17:00 clave1
+-rw-r--r-- 1 juanvi juanvi  567 Apr 18 17:00 clave1.pub
+juanvi@debian:~/.ssh$ ssh-copy-id -i clave1 user@server.com
+juanvi@debian:~/.ssh$ ssh -i clave1 user@server.com
+
+ +
+
+

center

+ +
+

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:

+

Identidad de Alice: nombre, dirección de correo, URL del servidor HTTP...

+

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

-

En Internet usamos terceras partes de confianza que garantizan las identidades presentes en los 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

+
+

TTP: Tercera parte de confianza

+

Ya no tenemos que conseguir la clave pública de cualquier persona, solo la de la TTP (Trusted Third Party) y verificar que las claves públicas de los certificados que nos presenten estén firmadas por la TTP

La TTP puede ser:

    +
  • un "igual": en el modelo "web of trust" (PGP)
  • una autoridad central: en una Infraestructura de Clave Pública (PKI)
  • -
  • un "igual": en el modelo "web of trust" (como en PGP)
- -
-

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

Los amigos puedes avalar otros certificados

"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

    -
  • Muy útil para grupos pequeños: amigos, empresa, universidad...
  • +
  • PGP / GPG aún se usa en entornos corportativos que pueden gestinar todas las claves públicas de sus empleados
  • 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

-

Se llaman Autoridades de Certificación / Certification Authorities (CAs)

-

Las claves pública de estas CAs vienen con:

+
+

PKI: Public Key Infrastructure

+ +

Idea: confiar en unas pocas TTPs que gestionen todos los certificados de Internet

+

En PKI, las TTPs se llaman Autoridades de Certificación / Certification Authorities (CAs)

+

Las claves pública de estas CAs vienen integradas (compruébalo):

  • En el sistema operativo Windows, Linux, OSX...
  • En los navegadores de internet
+

Instalar una nueva CA en un PC es un proceso excepcional

+
-
-
Gestión de claves públicas
+

Cadena de confianza, intermediarios y raíces

Normalmente hay una "cadena de confianza" con varios eslabones

center

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

+
-
-
Gestión de claves públicas
-

center

+
+

center

+
-
-
Gestión de claves públicas
+

Jerarquía de Autoridades de Certificación

  • CA raíz: sólo emite certificados para CA subordinadas y "revocaciones"
      -
    • está activa en momentos puntuales (off-line)
    • +
    • está activa en momentos puntuales (off-line)
    • en caso de compromiso no hay protocolo definido
  • @@ -464,164 +610,39 @@

    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?

+

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

    -
  • se publica una CRL: Certificate Revocation List
  • -
  • se publica en un servidor OCSP
  • +
  • Compromiso, o incluso sospecha de compromiso de la clave privada
  • +
  • Baja de la persona
+

Si esto pasa, hace falta comunicarlo a la CA siguiendo sus procedimientos específicos

+
-
-
Criptografía híbrida
-

Juntando las piezas

- -

Protocolo HTTPS

-
-
-
Criptografía híbrida
-

Criptografía híbrida

-
    -
  • La criptografía simétrica permite cifrar muy rápidamente -
      -
    • Pero no garantiza que el mensaje no haya cambiado, ni quién lo envía
    • -
    -
  • -
  • Los hashes permiten calcular resúmenes muy rápidamente -
      -
    • Pero no ofrece confidencialidad
    • -
    -
  • -
  • La criptografía asimétrica permite cifrar cosas sin tener que intercambiar una clave privada... -
      -
    • pero es lenta
    • -
    -
  • -
-
-
-
Criptografía híbrida
-

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

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MecanismoAlgorutmosDescripciónServicios
Cifrado híbridoRSA+AESUsamos cifrado asimétrico para enviar la clave simétricaConfidencialidad, autenticación
Message Code AuthenticationAES+Hash/AES en modo GCMCalculamos hash y después cifrado simétricoConfidencialidad, integridad
Firma digitalHash+RSACiframos hash con clave privadaIntegridad, autenticación
-
-
-
Criptografía híbrida
-

Firma digital: proceso

-
    -
  • Los algoritmos como RSA solo cifran números enteros de una longitud igual a la clave. Por ejemplo, 4096 bits.
  • -
  • Alice podría dividir el documento en bloques de 4096b, pero eso no es eficiente
  • -
  • Solución: hash cifrado con la clave privada -
      -
    • Alice calcula el hash de su documento de 10MB. El hash tiene 512 bytes
    • -
    • Alice cifra el hash con su clave privada
    • -
    • Cualquiera persona (eso incluye a Bob) puede conocer la clave pública de Alice y descifrar el hash
    • -
    • Si se encuentra un documento con un hash firmado por una clave pública, cualquier persona puede verificar que el autor del documento es el poseedor de la clave privada.
    • -
    -
  • -
-
-

https://cryptobook.nakov.com/digital-signatures/rsa-signatures

-
-
-
-
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

- -

Dos usuarios y , cada uno tiene las claves públicas del otro

-
    -
  1. Acuerdan y primos entre sí
  2. -
  3. Escogen números en secreto y
  4. -
  5. Se envían entre ellos: -
      -
    • -
    • -
    -
  6. -
  7. Verifican la firma de cada lado
  8. -
  9. Calculan en secreto: +
    +

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

    +

    La CA se encarga de:

      -
    • :
    • -
    • :
    • +
    • Publicar en su web una CRL: Certificate Revocation List
    • +
    • Habilitar un servicio especial llamado OCSP al que se le puede preguntar si un certificado aún es válido
    - -
  10. Y usan como clave de cifrado un algoritmo simétrico
  11. - -
    -
    -
    Criptografía híbrida
    -

    Cifrado híbrido: protocolo HTTPS

    -
      -
    1. Alice y Bob negocian los parámetros de seguridad
    2. -
    3. Alice y Bob acuerdan una clave (clave de sesión) utilizando D-H autenticado con sus claves públicas
    4. -
    5. Luego usan esa clave para cifrar las comunicaciones AES
    6. -
    7. Periódicamente, renuevan la clave de sesión ejecutando de nuevo un D-H ("D-H efímero")
    8. -
    +

    Es tu responsabilidad comprobar si los certificados son válidos

    +
    -
    -
    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
    • @@ -640,8 +661,9 @@

      Resumen

    +
    -
    +

    Referencias

    +
    -
    -

    Continúa en: Ransomware

    +
    +

    Anexo recomendado: Protocolo TLS

    +

    Continúa en: Autenticación

    +
    -
    +

    ¡Gracias!

    +

    Recordatorio de cómo funciona el cifrado asimétrico: +

    Recordatorio de cómo funciona el cifrado asimétrico: - Todo el mundo tiene dos claves: - una privada, que solo conoce la persona @@ -673,7 +699,11 @@

    ¡Gracias!

    - Solo la otra persona puede descifrarla, porque solo ella tiene la clave privada - Pero también funciona al revés: una persona puede cifrar un mensaje con su clave privada y lanzarlo al mundo - Cualquier persona pueda descifrar el mensaje, ya que solo se necesita la clave pública de quien cifró. Es decir, este esquema NO OFRECE CONFIDENCIALIDAD - - PERO: dado que el mensaje podemos descifrarlo con una clave pública específica, sabemos que solo la persona que tenga la clave privada podría haber enviado ese mensaje: estamos acercándonos a la **autenticidad**: probar quién ha enviado un mensaje

    Durante un ataque man in the middle, un atacante se pone en medio de las comunicaciones. Cada una de las partes establece una conexión segura con el atacante: nadie de fuera sabe qué es está diciendo, pero no estamos hablando con quien queremos hablar. + - PERO: dado que el mensaje podemos descifrarlo con una clave pública específica, sabemos que solo la persona que tenga la clave privada podría haber enviado ese mensaje: estamos acercándonos a la **autenticidad**: probar quién ha enviado un mensaje

    En el paso 2, recuerda que, en la realidad, Alice y Bob no usarán g y p cualquiera sino números conocidos que están en los estándares actuales y que sabemos que funcionan correctamente + +Es decir: Alice y Bob firma los parámtros A y B y, si la firma verifica, Bob sabe que está hablando con Alice y al revés. + +Por supuesto, esto mismo se puede hacer con Diffie-Hellman sobre curvas elípticas

    Durante un ataque man in the middle, un atacante se pone en medio de las comunicaciones. Cada una de las partes establece una conexión segura con el atacante: nadie de fuera sabe qué es está diciendo, pero no estamos hablando con quien queremos hablar. El atacante dejará pasar la mayoría de las comunicaciones, solo está interesado en participar una vez, cambiando la cuenta bancaria en la que se realiza un pago. @@ -682,12 +712,19 @@

    ¡Gracias!

    - No hemos dado autenticación: no sabemos con quién estamos hablando - No hemos dado integridad: un atacante podría cambiar el mensaje sin que nos enteremos -(aún así, en los protocolos descritos, es muy poco probable que el atacante pueda cambiar el contenido de un mensaje por otro CON SENTIDO. Pero algunos protocolos son muy sensibles al cambio: hashes, repeticiones...)

    La identidad de Alice pueden ser muchas cosas: +(aún así, en los protocolos descritos, es muy poco probable que el atacante pueda cambiar el contenido de un mensaje por otro CON SENTIDO. Pero algunos protocolos son muy sensibles al cambio: hashes, repeticiones...)

    El penúltimo paso pedirá la contraseña del usuario en server.com + +También se podría añadir manualmente la clave1.pub al final del archivo ~/.ssh/authorized_keys en server.com + +Se puede configurar ssh (archivo: ~/.ssh/config) para que siempre que se acceda a server.com, se utilice un usuario y una clave determinada

    La identidad de Alice pueden ser muchas cosas: - Su nombre, DNI, dirección de correo electrónico... -- La URL de una página web, en el caso de servidores

    La clave privada de un TTP es muy delicada: se protege en grandes edificios con una enorme seguridad física, en PCs desconoctados de Internet y dentro de cajas fuertes. +- La URL de una página web, en el caso de servidores

    - PGP: Pretty Good Privacy +- PKI: Public Key Infrastructure

    Las empresas sí que instalan CAs personalizadas en los PCs de los usuarios + +Por ejemplo, la CA del proxy/firewall de la empresa, para poder descifrar las comunicaciones de los empleados

    La clave privada de una TTP es muy delicada: se protege en grandes edificios con una enorme seguridad física, en PCs desconectados de Internet y dentro de cajas fuertes. -Por eso los certificados de usuarios no suelen estar firmados por una TTP final (llamada "Root CA") sino por otras terceras partes intermedias con capacidad para firmas certificados de usuarios. El certificados de estos intermediarios sí que está firmado por la Autoridad raíz

    Esto es el ejemplo de una cadena de certificados de campus.viu.es, que aparece al pinchar "en el candado" de la barra de direcciones. +Por eso los certificados de usuarios no suelen estar firmados por una TTP final (llamada "Root CA") sino por otras terceras partes intermedias con capacidad para firmas certificados de usuarios. El certificados de estos intermediarios sí que está firmado por la Autoridad raíz

    Esto es el ejemplo de una cadena de certificados de campus.viu.es, que aparece al pinchar "en el candado" de la barra de direcciones. La transparencia está solo para ocupar el espacio, veremos los detalles durante la clase @@ -698,10 +735,5 @@

    ¡Gracias!

    - Certificado raíz - Lista de revocación -Prueba también con otras páginas web

    Es decir: Alice y Bob firma los parámtros A y B y, si la firma verifica, Bob sabe que está hablando con Alice y al revés.

    - ECDEHE: Elliptic Curve Diffie-Hellman, ephimeral -- RSA: authentication -- AES_128_GCM: AES con claves de 128 bits en modo GCM. Este no lo hemos visto, añade un hash al cifrado. -- SHA256: algoritmo de hash usado por el modo GCM

    - TLS: la clave la decide el cliente, no hay D-H -- AES_128_GCM: AES con claves de 128 bits en modo GCM. Este no lo hemos visto, añade un hash al cifrado. -- SHA256: algoritmo de hash usado por el modo GCM

    \ No newline at end of file diff --git a/13-bec.html b/13-bec.html index 3b4f9d2..e48ad2e 100644 --- a/13-bec.html +++ b/13-bec.html @@ -212,7 +212,7 @@ /* last-slide class (Thanks) Use: */div#\:\$p>svg>foreignObject>section.last-slide{background-size:cover;background-repeat:no-repeat; /*background-image: url('themes/viu/bg1.png');*/background-image:url('https://github.com/Juanvvc/markdown-slides/raw/master/slides/themes/viu/bg1.png');justify-content:flex-start;align-items:center}div#\:\$p>svg>foreignObject>section.last-slide :is(h1,marp-h1){color:#111;margin-bottom:8em}div#\:\$p>svg>foreignObject>section.last-slide :is(h2,marp-h2),div#\:\$p>svg>foreignObject>section.last-slide p{color:#111}div#\:\$p>svg>foreignObject>section.last-slide footer,div#\:\$p>svg>foreignObject>section.last-slide:after{ - /* hide footer and pagination */display:none}div#\:\$p>svg>foreignObject>section.last-slide a,div#\:\$p>svg>foreignObject>section.last-slide p{color:#111}div#\:\$p>svg>foreignObject>section.a-story ul li{list-style-type:none;text-align:center;line-height:1.15em;margin-bottom:1em}div#\:\$p>svg>foreignObject>section.a-story blockquote{margin-top:inherit}div#\:\$p>svg>foreignObject>section[data-marpit-scope-PqswjOin] ol{list-style-type: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%}
    + /* hide footer and pagination */display:none}div#\:\$p>svg>foreignObject>section.last-slide a,div#\:\$p>svg>foreignObject>section.last-slide p{color:#111}div#\:\$p>svg>foreignObject>section.a-story ul li{list-style-type:none;text-align:center;line-height:1.15em;margin-bottom:1em}div#\:\$p>svg>foreignObject>section.a-story blockquote{margin-top:inherit}div#\:\$p>svg>foreignObject>section[data-marpit-scope-AMF6q6hH] ol{list-style-type: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%}

    Business Email Compromise

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

    @@ -689,7 +689,7 @@

    The bad news...

    -
    +

    Recommendations

      diff --git a/A2-rng.html b/A2-rng.html index 0e4b282..8c50622 100644 --- a/A2-rng.html +++ b/A2-rng.html @@ -319,7 +319,7 @@

      Dispositivos ad-hoc para RNG

    Ruido térmico

    -

    center

    +

    center

    Una resistencia a temperatura ambiente tiene electrones libres que se mueven aleatoriamente (carga negativa) y podemos medir el desequilibrio momentáneo con un conversor Analógico/Digital

    El conversor dará una secuencia indefinida de bits aleatorios

    @@ -327,7 +327,7 @@

    Ruido térmico

    Generador cuántico

    -

    +

    Con una fuente de luz apuntamos a un espejo semireflectante; dos fotodetectores detectan uno u otro el fotón de forma totalmente aleatoria

    @@ -394,7 +394,7 @@

    HSM embedido

    HSM servicio en red

    -

    center

    +

    center

    diff --git a/images/impersonate3.png b/images/BEC/impersonate3.png similarity index 100% rename from images/impersonate3.png rename to images/BEC/impersonate3.png diff --git a/images/caperu.jpg b/images/caperu.jpg deleted file mode 100644 index e570f8a..0000000 Binary files a/images/caperu.jpg and /dev/null differ diff --git a/images/crowds.png b/images/crowds.png deleted file mode 100644 index bd88ef8..0000000 Binary files a/images/crowds.png and /dev/null differ diff --git a/images/el_quijote.vigenere.freqs.png b/images/el_quijote.vigenere.freqs.png deleted file mode 100644 index 6711296..0000000 Binary files a/images/el_quijote.vigenere.freqs.png and /dev/null differ diff --git a/images/freq-catala-gran.png b/images/freq-catala-gran.png deleted file mode 100644 index 1c3d49c..0000000 Binary files a/images/freq-catala-gran.png and /dev/null differ diff --git a/images/hitchhikers_guide.jpg b/images/generic/hitchhikers_guide.jpg similarity index 100% rename from images/hitchhikers_guide.jpg rename to images/generic/hitchhikers_guide.jpg diff --git a/images/crackstation.png b/images/hashes/crackstation.png similarity index 100% rename from images/crackstation.png rename to images/hashes/crackstation.png diff --git a/images/image-20150319-1572-9mtxru.jpg b/images/historia/enigma.jpg similarity index 100% rename from images/image-20150319-1572-9mtxru.jpg rename to images/historia/enigma.jpg diff --git a/images/onion-services.png b/images/onion-services.png deleted file mode 100644 index a3434d8..0000000 Binary files a/images/onion-services.png and /dev/null differ diff --git a/images/certificate-chain-example.png b/images/pki/certificate-chain-example.png similarity index 100% rename from images/certificate-chain-example.png rename to images/pki/certificate-chain-example.png diff --git a/images/pki/scream.jpg b/images/pki/scream.jpg new file mode 100644 index 0000000..e71bbf5 Binary files /dev/null and b/images/pki/scream.jpg differ diff --git a/images/pt13351_coversecret.png b/images/pt13351_coversecret.png deleted file mode 100644 index 4db4784..0000000 Binary files a/images/pt13351_coversecret.png and /dev/null differ diff --git a/images/idquantiquerng.png b/images/random/idquantiquerng.png similarity index 100% rename from images/idquantiquerng.png rename to images/random/idquantiquerng.png diff --git a/images/ncipher-xarxa.png b/images/random/ncipher-xarxa.png similarity index 100% rename from images/ncipher-xarxa.png rename to images/random/ncipher-xarxa.png diff --git a/images/randomquantic.png b/images/random/randomquantic.png similarity index 100% rename from images/randomquantic.png rename to images/random/randomquantic.png diff --git a/images/sorolltermic.png b/images/random/sorolltermic.png similarity index 100% rename from images/sorolltermic.png rename to images/random/sorolltermic.png diff --git a/images/relays-tor.png b/images/relays-tor.png deleted file mode 100644 index 57492f8..0000000 Binary files a/images/relays-tor.png and /dev/null differ diff --git a/images/security-through-obscurity-is-everywhere.jpg b/images/security-through-obscurity-is-everywhere.jpg deleted file mode 100644 index 24c8374..0000000 Binary files a/images/security-through-obscurity-is-everywhere.jpg and /dev/null differ diff --git a/images/nist-usage.png b/images/simetrica/nist-usage.png similarity index 100% rename from images/nist-usage.png rename to images/simetrica/nist-usage.png diff --git a/images/submarines-cables.png b/images/submarines-cables.png deleted file mode 100644 index c00442b..0000000 Binary files a/images/submarines-cables.png and /dev/null differ diff --git a/images/tor-google.png b/images/tor-google.png deleted file mode 100644 index 701f1dd..0000000 Binary files a/images/tor-google.png and /dev/null differ diff --git a/images/twitter-oauth.png b/images/twitter-oauth.png deleted file mode 100644 index bd5b096..0000000 Binary files a/images/twitter-oauth.png and /dev/null differ diff --git a/index.html b/index.html index 7a4da79..02c6bc5 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-mSTqsaxm] 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-XVQcynHI] 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