diff --git a/slides/03-firma.md b/slides/03-firma.md index 5072f03..0868759 100644 --- a/slides/03-firma.md +++ b/slides/03-firma.md @@ -172,7 +172,7 @@ Caso DNI-e en España: mínima implantación por problemas de usabilidad Se exige personarse presencialmente en una agencia de certificación -![bg left:40% w:80%](https://cambiarpin.es/wp-content/uploads/2021/04/DNI-3.jpg) +![bg left:40% w:80%](images/firma/DNI-3.jpg) ## Fecha de firma diff --git a/slides/05-autenticacion.md b/slides/05-autenticacion.md index 3e41781..6ed2ede 100644 --- a/slides/05-autenticacion.md +++ b/slides/05-autenticacion.md @@ -90,7 +90,7 @@ Un atacante **no puede conocer la clave secreta** Pero un atacante **puede convencer a cada parte que es otra persona**: así se pone en medio (*man in the middle*): D-H es vulnerable a ataques MitM. -![bg right w:100%](https://i.imgur.com/Cq78TET.png) +![bg right w:100%](images/asimetrica/dh-maninthemiddle.png) > https://www.trendmicro.com/en_us/research/15/i/how-exploit-kit-operators-are-misusing-diffie-hellman-key-exchange.html @@ -116,6 +116,19 @@ Hay muchas formas de guardar nuestra identidad en internet: En el caso de webs o empresas, la identidad puede ser simplemente que cuando el usuario se conecta a bancosantander.com, que el servidor que le responda es propiedad del Banco Santander --> +## Certificados + + +Certificado = (1) Identidad, (2) Clave pública de la indentidad, (3) firmado por una autoridad de certificación + +Esto funciona bien en servidores: HTTPS siempre autentica servidores con certificados y, **opcionalmente**, usuarios + +El uso de certificados no se ha extendido a usuarios físicos: son demasiados complejos de gestionar + +![bg left:40% w:80%](images/firma/DNI-3.jpg) + +Necesitamos otras soluciones para usuarios + ## Factores de la autenticación **Algo que sabemos** (*knowledge*): contraseña, PIN... @@ -124,7 +137,7 @@ En el caso de webs o empresas, la identidad puede ser simplemente que cuando el **Algo que somos** (*inference*): huellas digitales, voz, cara... -El servidor podría también comprobar que nos estamos conectando desde el lugar y a las horas habituales +**Dónde estamos** (*location*): el servidor podría también comprobar que nos estamos conectando desde el lugar y a las horas habituales > https://searchsecurity.techtarget.com/feature/5-common-authentication-factors-to-know @@ -158,17 +171,31 @@ Vulnerabilidades de *algo que sabemos*: ![ w:15em](https://cdn.mos.cms.futurecdn.net/gQod8s5hcRCyuY4XnXWXuf-970-80.jpg) ![ w:15em](https://www.androidguys.com/wp-content/uploads/2016/05/google-authenticator-696x522.jpg) - USB Keys -- Google Authenticator -- SMS de validación... +- Google Authenticator instalado en un teléfono +- SMS de validación --- Vulnerabilidades de *algo que tenemos*: -- Que nos roben el móvil +- Que nos roben el dispositivo - Que esté intervenido por un atacante - Troyanos bancarios - Malware en Android + - Click hijacking + - Social engineering + +![right bg w:90%](images/auth/activision-hacked.png) + +> https://www.bleepingcomputer.com/news/security/activision-confirms-data-breach-exposing-employee-and-game-info/ + + ## Algo que *somos* @@ -186,6 +213,24 @@ Vulnerabilidades de *algo que somos*: > https://www.idrnd.ai/can-biometric-data-be-stolen/ +## Localización y otras anomalías + +- Detectar y registrar los patrones de los usuarios: localización, navegadores comunes, horarios... +- Alarmas cuando haya actividad que se salga del patrón + +![w:15em center](images/auth/Impossible-Travel-Featured-Image.webp) + +> https://sra.io/blog/impossible-travel/ + +--- + +Vulnerabilidades: + +- los atacantes pueden usar *proxies* para similar que se están conectando desde el país de la víctima +- no válido para nuevos usuarios aún sin perfilar + + + ## 2FA: Doble Factor de Autenticación Usa al menos dos de los factores anteriores @@ -318,8 +363,23 @@ En firma electrónica normalmente no hará falta que Alice haga un dasafío, **B Documento: cualquier mensaje que Bob quiera intercambiar. No es solo un .docx, es cualquier mensaje, cadena de texto, parámetro de seguridad... ## Authenticated Diffie-Hellman + + + +Dos usuarios $Alice$ y $Bob$, cada uno tiene las claves públicas del otro -![center](https://present5.com/presentation/4dade2d669283ba231391cd696e9e4f2/image-37.jpg) +1. Acuerdan $g$ y $p$ primos entre sí +1. Escogen números en secreto $a$ y $b$ +1. Se envían entre ellos: + - $Alice \rightarrow Bob: A=g^{a} \mod p, sign(A, SK_A)$ + - $Bob \rightarrow Alice: B=g^{b} \mod p, sign(A, SK_B)$ +1. Verifican la firma de cada lado +1. Calculan en secreto: + - $Alice$: $s = B^{a} \mod p = g^{ab} \mod p$ + - $Bob$: $s = A^{b} \mod p = g^{ab} \mod p$ +1. Y usan $s$ como clave de cifrado un algoritmo simétrico + +![bg right:30% w:110%](https://www.pngall.com/wp-content/uploads/2016/05/Original-Stamp.png) > [Authentication and Authenticated Key Exchanges](https://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.59.6682), Whitfield Diffie and Paul C. Van Oorschot and Michael J. Wiener, 1992. > [Protocols PK Encr. /Auth. PK Key Establishment Secure Comm. in Open Networks SSL/TLS Nicolas Protocols PK Encr. /Auth. PK Key Establishment Secure Comm. in Open Networks SSL/TLS Nicolas T. Courtois - University College London](https://present5.com/protocols-pk-encr-auth-pk-key-establishment-secure/) @@ -412,33 +472,16 @@ Esta es la solución usada en la actualidad - Es el mecanismo usado en Linux, Windows... y en la mayor parte de las webs - Guardar una contraseña en una BBDD es un error, hay que guardar solo $hash(SALT:PASSWORD)$ -A veces, como en *bcrypt*, no se hace un hash sino un cifrado simétrico irreversible - -## Protocolo Bcrypt - -[Bcrypt (1999)](https://www.usenix.org/legacy/events/usenix99/provos/provos_html/node1.html), de Niels Provos y David Mazieres, es un sistema para proteger contraseñas en bases de datos. - -- Basado en el cifrado por bloques de [Blowfish (1994)](https://www.schneier.com/academic/archives/1994/09/description_of_a_new.html) de Bruce Schneier (en la foto) -- Se aprovecha de que Blowfish es muy lento durante la fase de expansión de claves - -![bg right:40%](https://upload.wikimedia.org/wikipedia/commons/f/fc/Bruce_Schneier_at_CoPS2013-IMG_9174.jpg) - - - -## Cifrado como "hash", nonce como "salt" +## BCRYPT: Cifrado como "hash", nonce como "salt" + ![center w:35em](https://upload.wikimedia.org/wikipedia/commons/3/32/Bcrypt.png) Esto es lo que guarda la BBDD para cada usuario -## Algoritmo +Nota: scrypt es similar a bcrypt, igualmente válido y más actual + ## Ejemplos @@ -626,7 +665,6 @@ CUIDADO: en los ciberataques actuales, los atacantes buscan por todos los medios --> ## Windows - ![](https://ldapwiki.com/attach/Security%20Support%20Provider%20Interface/SSPI-Architecture.png) @@ -638,6 +676,12 @@ CUIDADO: en los ciberataques actuales, los atacantes buscan por todos los medios - Hashes NT ó LN - En memoria RAM +> https://www.elastic.co/blog/introduction-to-windows-tokens-for-security-practitioners + +--- + +![](images/auth/1-windows-logon-session-access-blog-windows-tokens-for-defenders.png) + ## Ataques Se han descrito ataques contra TODOS estos sistemas @@ -695,7 +739,7 @@ Security Assertion Markup Language (SAML) is an XML-based open-standard for tran - Si tenemos su clave pública, podemos desafiarle a que firme algo con su clave privada - Si usamos usuario y contraseña, la base de datos no puede guardar esa información en claro - hash + salt - - bcrypt + - bcrypt / scrypt - Lo ideal es que solo tengamos que "probar nuestra identidad" una vez, y el resto de peticiones funcionamos con tokens ## Recomendaciones generales diff --git a/slides/images/auth/1-windows-logon-session-access-blog-windows-tokens-for-defenders.png b/slides/images/auth/1-windows-logon-session-access-blog-windows-tokens-for-defenders.png new file mode 100755 index 0000000..884365d Binary files /dev/null and b/slides/images/auth/1-windows-logon-session-access-blog-windows-tokens-for-defenders.png differ diff --git a/slides/images/auth/Impossible-Travel-Featured-Image.webp b/slides/images/auth/Impossible-Travel-Featured-Image.webp new file mode 100755 index 0000000..9994e63 Binary files /dev/null and b/slides/images/auth/Impossible-Travel-Featured-Image.webp differ diff --git a/slides/images/auth/activision-hacked.png b/slides/images/auth/activision-hacked.png new file mode 100755 index 0000000..6ca3b29 Binary files /dev/null and b/slides/images/auth/activision-hacked.png differ diff --git a/slides/images/firma/DNI-3.jpg b/slides/images/firma/DNI-3.jpg new file mode 100644 index 0000000..2a2e67f Binary files /dev/null and b/slides/images/firma/DNI-3.jpg differ