Unidad 2
Seguridad Lógica
Criptografía
[email protected]
Pablo Esteban Sánchez
Seguridad y Alta disponibilidad
2º ASIR
Recuerda ...
En esta
presentación
[email protected]
1. Introducción
Criptografía
●
Estudia los métodos para convertir un mensaje legible en otro ilegible
(mensaje cifrado) mediante el uso de una clave (key)
– La clave es imprescindible para volver a hacer legible el mensaje cifrado.
●
Gracias al uso de la criptografía se logran alcanzar los principios:
– Confidencialidad – gracias al cifrado de mensajes
– Integridad – Gracias al hash o resumen
– No repudio – gracias a la firma digital
[email protected]
1. Introducción
Criptografía
●
Un método de cifrado se considera seguro cuando el tiempo que hay
que emplear en romperlo es suficientemente grande
●
No hay sistema de cifrado infalible… a la larga, todos son
vulnerables al criptoanálisis:
– Vulnerabilidades en el algoritmo de encriptado o en su implementación
Diseño del algoritmo en el software
– Estadísticas de repeticiones
– Ataques de fuerza bruta: probar todas las posibles claves, …
[email protected]
1. Introducción
Un poco de historia
●
Uno de los sistemas de cifrado más famoso es el
cifrado del César.
●
Consiste en desplazar las letras del abecedario cierto
número de posiciones.
Desplazamiento de 3
La clave es 3
●
Por ejemplo, para el mensaje ‘Hola ASIR!’
https://eduescaperoom.com/cifrado-cesar/
[email protected]
1. Introducción
Un poco de historia
●
El cifrado del César nos permite explicar cómo funciona un sistema de
cifrado:
– La clave, secreta, es el desplazamiento de caracteres. (Por ejemplo, 3, 4,
…)
– La clave sólo debe ser conocida por Emisor y Receptor previamente.
– La clave no debe formar parte del mensaje cifrado.
– Punto crítico: compartir la clave entre el emisor y el receptor! Evitar
intercepciones y filtraciones
●
Posibles ataques a éste método:
– Fuerza bruta: probar todas las claves (desplazamientos), hasta que uno
funcione.
– Criptoanálisis estadístico: Estudiar la frecuencia de caracteres … En
castellano, la más frecuente es la ‘e’. La que más se repita en el texto
cifrado supondremos que equivale a la ‘e’...
[email protected]
2. Sistemas de cifrado
●
Actualmente, los sistemas de cifrado se han sofisticado y están basados
en algoritmos matemáticos
●
Los principales tipos son:
– Algoritmos simétricos o de clave privada
– Algoritmos asimétricos o de clave pública
– Algoritmos híbridos (lo mejor de simétrico y asimétrico)
●
Para todos se cumple que:
– Los algoritmos son públicos! Todos pueden conocer cómo funciona y
hacer su implementación (Di NO a la seguridad por oscuridad)
– A mayor tamaño de clave (en bits) más seguro es.
Regla de Oro
●
Ejemplo tonto … La seguridad recae en una clave
fuerte
– Clave corta: hola = 4 bytes = 32 bits no en el secreto del algoritmo.
– Clave larga: Hola1234$ = 9 bytes = 72 bits El algoritmo debe ser público.
[email protected]
Un paréntesis ...
Seguridad por oscuridad
●
Security Through Obscurity (STO)
●
La seguridad se basa en que los detalles de la implementación son
secretos.
– Si el secreto se desvela: adiós seguridad
●
Ejemplos:
– Usar un algoritmo de cifrado propietario.
– Usar puertos poco comunes (ssh en el puerto 3456)
– Mantener secreto el código fuente.
– Esconder la llave de casa debajo del felpudo …
●
Lo ideal es seguir los principios, guías técnicas y buenas prácticas de la
comunidad.
[email protected]
Un paréntesis ...
Seguridad por oscuridad
●
Ejemplo: algoritmo de cifrado que consiste en pasar a base64 y luego
hago un XOR con la clave ‘asir’
– Secreto!!! no le digo a nadie cómo lo hago!!
Cifrado Descifrado
[email protected]
2. Sistemas de cifrado
Cifrado simétrico o de clave privada
●
Se llaman simétricos porque usan la misma clave para cifrar y descifrar.
●
La clave sólo debe ser conocida por Emisor y Receptor (Por eso este
cifrado se conoce como de clave privada)
[email protected]
2. Sistemas de cifrado
Cifrado simétrico o de clave privada
●
Ventajas
– Son muy rápidos y eficientes: Alta velocidad de cifrado / descifrado
●
Inconvenientes:
– Es necesario que Emisor y Receptor conozcan previamente la clave
– ¿Cómo compartes esa clave de manera segura por un medio inseguro?
●
Puede haber mucha gente escuchando … Por ej. Internet
●
Principales algoritmos simétricos:
– DES: clave de 52 bits. Puede romperse en menos de 24 horas.
– TDES (Triple DES): Clave de 192 bits. Equivale a aplicar DES 3 veces.
– IDEA: Clave de 128 bits. Uno de los más seguros actualmente
– AES: Claves de 128, 192 o 256 bits. El más usado actualmente
– Blowfish: Clave de 32 a 488 bits. Usado para generar conjuntos de claves.
[email protected]
2. Sistemas de cifrado
Pregunta ...
●
AES tiene clave de 128 bits, 192 o 256 bits, … TDES de 192 bits, …
– Pero luego voy yo, y pongo de contraseña 12345!!
– ¿Cómo es posible?
– ¿!¿!Necesito una contraseña de 256 / 8 = 32 caracteres?!?!
●
Solución: KDF o Key Derivation Function o Funciones de derivación de clave
– Usadas para extender claves en otras más largas
– La idea es transformar una contraseña insegura, como "12345" otra de los bits
requeridos por el algoritmo usado.
– Por ejemplo, GPG utiliza la función de derivación de clave PBKDF2 (Password-
Based Key Derivation Function 2) o Scrypt, para fortalecer la contraseña y generar
una clave de cifrado segura a partir de ella.
●
A pesar de KDF, intenta usar contraseñas complejas … veremos por qué en
un ejercicio! Funciones KDF
Son potenciadas por SALT!
[email protected]
2. Sistemas de cifrado
Cifrado asimétrico o de clave pública
●
Cada persona (emisor y receptor) dispone de 2 claves:
– 1 pública: Puede ser consultada por cualquiera (… como lo oyes)
– 1 privada: No se comparte con nadie
●
Ambas claves se generan usando algoritmos matemáticos basados en
números primos, y …
Importante!
– No es posible deducir una a partir de la otra
– Cuantos más bits se usen para las claves, más seguras
– Lo que se cifra con una, se descifra con la otra (magia!!)
●
Emisor y receptor intercambian sus claves públicas sin problema
– Ya que no se puede sacar la privada a partir de la pública, esto no es problema.
●
El emisor cifra el mensaje usando la clave pública del receptor
●
El receptor lo descifra usando su propia clave privada
[email protected]
2. Sistemas de cifrado
Cifrado asimétrico o de clave pública
[email protected]
2. Sistemas de cifrado
Cifrado asimétrico o de clave pública
●
Ventajas:
– Resuelve el problema que tenían los simétricos para compartir la clave
●
La clave pública puede ser vista por cualquiera sin problemas!
●
Podemos añadirla a nuestro perfil en redes sociales, en nuestra firma de correo, ...
– Especialmente adecuado para transmitir datos por Internet.
●
Inconvenientes:
– Son poco eficientes: a igual longitud de clave, son mucho más lentos que los
algoritmos simétricos: pueden constituir un cuello de botella en telecomunicaciones
– Necesario proteger la clave privada!
●
No basta dejarla en una carpeta del disco duro
●
Se usa un fichero especial llamado Keyring (llavero), que a su vez está cifrado con
cifrado simétrico:
– Para acceder a mi propia clave en mi PC necesito una contraseña
[email protected]
2. Sistemas de cifrado
Cifrado asimétrico o de clave pública
●
Algunos algoritmos de cifrado asimétrico o de clave pública
– RSA: Clave de 128, 256, 1024, 2048 ó 4096 bits.
– DSA: Clave de 1024 y 3072bits. Mismo nivel de seguridad que RSA.
En constante desarrollo gracias al apoyo del gobierno de EEUU.
– ECC: Mismo nivel de seguridad que los anteriores, haciendo uso de
claves mas cortas. Por ejemplo: una clave ECC de 256 bits equivale a
una de 3072 bits DSA
[email protected]
2. Sistemas de cifrado
Cifrado híbrido
●
Recuerda que el cifrado asimétrico, aunque seguro, es muy lento para
cifrar todos los paquetes intercambiados entre 2 nodos en la red.
●
El cifrado simétrico, por su parte, es muy rápido cifrando, pero es
inseguro intercambiar la clave, …
●
Lo ideal es combinar ambas estrategias: Cifrado Híbrido!!!
– Usar criptografía asimétrica sólo para el inicio de la sesión
●
Para generar un canal seguro donde acordar la clave simétrica aleatoria que se
utilizará en esa conversación
– Usar criptografía simétrica durante la transmisión
●
Usando la clave simétrica acordada durante el inicio de sesión.
[email protected]
2. Sistemas de cifrado
Cifrado híbrido
●
Ejemplo de uso: protocolo SSH (Secure Shell) - Cuando A quiere establecer una
conversación con B, en A se
●
genera en ese instante una clave
simétrica (CS)
- Para enviársela a B de modo
seguro, A la cifra usando un
algoritmo asimétrico con la clave
pública de B.
- Cuando B recibe la CS cifrada, la
descifra con su clave privada
- Desde ese momento, A y B
pueden comunicarse usando la
clave simétrica (CS) para
intercambiar mensajes entre
ambos.
[email protected]
3. Huella digital
●
Una huella digital o hash es un conjunto de bytes …
– generado a partir de una entrada (documento, mensaje, flujo de bytes, …)
– Mediante un algoritmo (denominado función hash)
●
Que garantiza que:
– Cualquier cambio en el documento, incluso de un único bit, produce un hash totalmente
diferente
– Es imposible obtener la entrada inicial a partir del hash. No reversibles!!!
●
Los hashes producidos por un mismo algoritmo hash (hay varios):
– Tienen siempre el mismo tamaño en bytes (independientemente de cuantos bytes tenga la
entrada)
– Cuantos más bits tenga el hash, menor probabilidad de colisiones (que 2 entradas
produzcan el mismo hash)
●
Principales algoritmos:
– MD5: genera huellas de 128 bits (32 caracteres hexadecimales)
– SHA1: genera huellas de 160 bits (40 caracteres hexaadecimales)
– SHA2: hay varias veresiones con distinto número de bits: SHA-224, SHA-256, SHA-
512, ...Para SHA-512, el hash generado es de 512 bits o 128 caracteres hexadecimales
– SHA3
[email protected]
3. Huella digital
●
Ej. Para el mensaje: ‘Hola 2º de ASIR’ https://gchq.github.io/CyberChef/
Algoritmo Hash
Cada carácter son 4 bits
md5 E42be0d54935e09ea4ce49d8f647006b (32 caracteres)
128 bits
sha1 B6e20bfa04557711f67cdc8bba91e224c4b06854 (40 caracteres)
160 bits
sha2 3cafa56e1d8fd2f1d429d6323275e5ddac313b3581785e6e1ca261c2a83cd0ccd53b687cfdc2da4dccf49b151f62b
a72680c4c1a85731959d1f1b6c412d50143 (128 caracteres)
512 bits
sha3 2c1c5064bd44a91c7a5881674ad6d602f227e761464dff539eb4c7287b9c919596d959a737f263f316ec7c72e46b
43d43e2135b8aea653104e07f40cabaf2547 (128 caracteres)
512 bits
[email protected]
4. Firma digital
●
Usado para garantizar que el Emisor es quien dice ser (Autenticidad)
●
Se apoya en la criptografía asimétrica o de clave pública.
●
¿Cómo funciona? Supongamos que vamos a enviar un documento y
queremos que el receptor confíe en que somos nosotros.
– 1. El emisor aplica una función hash al documento → resumen o hash
– 2. El emisor cifra ese hash o resumen con su propia clave privada.
– 3. El emisor lo envía al destino junto con el documento original
●
¿Qué hace el receptor para verificar la autenticidad?
– 1. Aplica la misma función hash al documento recibido (paso 2)
– 2. Descifra el resumen recibido con la clave pública del emisor
– 3. Compara el hash calculado con el que ha descifrado. Deben ser =
Recuerda que lo
●
Resumiendo! La firma de un documento es: que se cifra con la
clave pública se
descifra con la
– El hash del mismo cifrado con la clave privada del emisor clave privada y
viceversa!!!
[email protected]
4. Firma digital
Proceso de firma
[email protected]
4. Firma digital
●
El proceso visto, garantiza la Autenticidad, pero no la Confidencialidad
– El Receptor sabe que el documento es del Emisor, pero ha podido ser
visto por cualquiera que haya interceptado la comunicación.
●
Con todo lo visto hasta ahora … ¿Se te ocurre qué hacer para proteger el
mensaje original y la firma de miradas indiscretas?
●
Solución:
Usando cifrado asimétrico, el emisor cifra el mensaje y la firma usando
la clave pública del receptor
El receptor, lo primero que hará será desencriptar mensaje y resumen
con su clave privada.
Luego comprobará la firma con lo visto en la diapositiva anterior.
[email protected]
5. Firma y certificado digital
Problemas a lo visto hasta ahora
●
Lo visto hasta ahora gracias al cifrado asimétrico o de clave pública está
muy bien:
– Nos permite intercambiar claves simétricas en un entorno inseguro como es
Internet.
– Nos da un mecanismo para firmar electrónicamente
●
Pero tiene 2 problemas muy serios! ¿Cuáles?
– 1. ¿Puedes estar seguro de las claves públicas que recibes?
●
Por ejemplo, si quiero mandar un mensaje a un compañero y el me pasa su clave
pública, ¿Puedo estar seguro de que esa clave es suya?
– ¿Y si alguien lo ha suplantado?
– 2. Para cualquier comunicación que quiera hacer de manera segura, ¿Tienen
que mandarme primero la clave pública por mail previamente?
●
De ser así, sería un desastre!
SOLUCIÓN: PKI (Public Key Infrastructure)
[email protected]
5. Firma y certificado digital
Solución: PKI (Public Key Infrastructure)
●
Infraestructura de clave pública
●
Ahora, entre el emisor y el receptor, aparecen nuevos interlocutores:
– La Autoridad Certificadora (CA o Certificate Authority): se encarga de
emitir certificados (hasta ahora los generábamos nosotros con gpg)
– La Autoridad de Registro (RA o Registration Authority): responsable de
asegurarse que el solicitante de un certificado es quien dice ser.
– La Autoridad de Validación (VA o Validation Authority): responsable de
comprobar la validez de los certificados emitidos. En la realidad, coincide
con la CA (Autoridad Certificadora).
– Los Repositorios: son almacenes de certificados. Hay 2 tipos: los que
almacenan certificados activos, y los que almacenan la lista de
certificados revocados (caducados, desactivados, ...)
[email protected]
5. Firma y certificado digital
Ej. Ciudadano firma declaración de la renta con certificado
[email protected]
6. Salt
●
Valor aleatorio añadido a la contraseña original antes de realizar operaciones
como hashing o una KDF (funciones de derivación de clave).
– Objetivo principal: evitar ataques de diccionario, al añadir aleatoriedad a la
contraseña.
– Recuerda que las contraseñas de usuarios no se almacenan en plano, sino que lo
que se guarda realmente es el hash de la misma.
●
Ejemplo:
– imagina que mi contraseña es pikachu, y estoy usando como salt el valor
AB34oW1D8hZcyt1Z7J.
– Se hará el hash de la contraseña AB34oW1D8hZcyt1Z7Jpikachu.
– Ej. md5: d92554e210e484368ae807895184f256.
●
¿Qué aporta el salt?
– 1. Evitar ataques de diccionario
– 2. Prevenir ataques de Rainbow tables
– 3. Introducir aleatoriedad en el cifrado
[email protected]