Criptografía para simples mortales
-
Upload
enrique-zamudio-lopez -
Category
Engineering
-
view
552 -
download
2
Transcript of Criptografía para simples mortales
![Page 1: Criptografía para simples mortales](https://reader035.fdocument.pub/reader035/viewer/2022062503/5877b8051a28ab2c668b6167/html5/thumbnails/1.jpg)
Criptografía para simples mortalesCriptografía para simples mortales
Enrique Zamudio López
@chochosmx
![Page 2: Criptografía para simples mortales](https://reader035.fdocument.pub/reader035/viewer/2022062503/5877b8051a28ab2c668b6167/html5/thumbnails/2.jpg)
Introducción Introducción
Tipos de cifrado: simétrico, asimétrico
Generadores de Números Pseudo-aleatorios (PRNG’s)
DigestionesAplicaciones y ejemplos
![Page 3: Criptografía para simples mortales](https://reader035.fdocument.pub/reader035/viewer/2022062503/5877b8051a28ab2c668b6167/html5/thumbnails/3.jpg)
Cifras SimétricasCifras Simétricas Llave compartida - misma llave para cifrar y
descifrar One-Time Pad: cifrado lineal (stream
cipher) Cifrado por bloques: DES, T-DES,
Blowfish, AES Modos de cifrado por bloques (ECB,
CFB, CBC)
![Page 4: Criptografía para simples mortales](https://reader035.fdocument.pub/reader035/viewer/2022062503/5877b8051a28ab2c668b6167/html5/thumbnails/4.jpg)
Cifrado Simétrico: OTPCifrado Simétrico: OTP
Cifra lineal (stream cipher)Llave mide lo mismo que el
mensajeIndescifrable cuando se
implementa bienNo se debe reutilizar nunca la
misma llave
![Page 5: Criptografía para simples mortales](https://reader035.fdocument.pub/reader035/viewer/2022062503/5877b8051a28ab2c668b6167/html5/thumbnails/5.jpg)
Ejemplo de OTPEjemplo de OTP
Mensaje:
0111010101000101
Llave: 1001001010101011
Resultado:
1110011111101110
![Page 6: Criptografía para simples mortales](https://reader035.fdocument.pub/reader035/viewer/2022062503/5877b8051a28ab2c668b6167/html5/thumbnails/6.jpg)
Reutilización de llaves en OTPReutilización de llaves en OTP
Llave: 0111010101000101
Mensaje 1: 1001001010101011
Resultado 1: 1110011111101110
Mensaje 2: 1001001001110110
Resultado 2: 1110011100110011
R1 XOR R2: 0000000011011101
![Page 7: Criptografía para simples mortales](https://reader035.fdocument.pub/reader035/viewer/2022062503/5877b8051a28ab2c668b6167/html5/thumbnails/7.jpg)
OTP en la prácticaOTP en la práctica Muy poco práctico por el tamaño
de llave; se usan mucho más algoritmos como RC4
RC4 utiliza una llave corta para inicializar un PRNG
![Page 8: Criptografía para simples mortales](https://reader035.fdocument.pub/reader035/viewer/2022062503/5877b8051a28ab2c668b6167/html5/thumbnails/8.jpg)
Pseudo-Random Number GeneratorsPseudo-Random Number Generators
Parte muy importante de la criptografía Criptográficamente seguros Impredecibles, ciclos grandes Ejemplos: Fortuna, Java SecureRandom
“La generación de números aleatorios es demasiado importante como para dejarla al azar”
Robert Coveyou
![Page 9: Criptografía para simples mortales](https://reader035.fdocument.pub/reader035/viewer/2022062503/5877b8051a28ab2c668b6167/html5/thumbnails/9.jpg)
Cifrado Simétrico por BloquesCifrado Simétrico por Bloques0000000000000000
a7d6fbe8c6778b01
104dbcfe46378ad5
104dbcfe46378ad5
a7d6fbe8c6778b01
0000000000000000
![Page 10: Criptografía para simples mortales](https://reader035.fdocument.pub/reader035/viewer/2022062503/5877b8051a28ab2c668b6167/html5/thumbnails/10.jpg)
Cifrado Simétrico por BloquesCifrado Simétrico por Bloques La seguridad de un buen algoritmo debe
depender solamente de la longitud de la llave
Los algoritmos no deben ser secretos Los mejores son públicos, porque han
sido analizados por expertos durante años
![Page 11: Criptografía para simples mortales](https://reader035.fdocument.pub/reader035/viewer/2022062503/5877b8051a28ab2c668b6167/html5/thumbnails/11.jpg)
Cifrado Simétrico por BloquesCifrado Simétrico por Bloques DES: Llave de 56 bits, actualmente
insuficiente, es lento, pero usa poca memoria Triple-DES (DES-EDE): Triple cifrado con
DES, 168 bits (en la práctica son 112) AES: Llave de 128, 192 o 256 bits; 6 veces
más rápido que DES, poca memoria, fácil implementación
Blowfish: Llave variable de 40 a 440 bits, rápido, dominio público, requiere memoria
![Page 12: Criptografía para simples mortales](https://reader035.fdocument.pub/reader035/viewer/2022062503/5877b8051a28ab2c668b6167/html5/thumbnails/12.jpg)
Ejemplo Cifra Simétrica (Blowfish)Ejemplo Cifra Simétrica (Blowfish)
Llave:424c4f5746495
348Mensaje
1:484f4c4131313
100Resultad
o 1:ba450cc16cb0a
2e7Mensaje
2:484f4c4131313
200Resultad
o 2:14294e3162b76
8e1R1 XOR
R2:ae6c42f00e07c
a06
![Page 13: Criptografía para simples mortales](https://reader035.fdocument.pub/reader035/viewer/2022062503/5877b8051a28ab2c668b6167/html5/thumbnails/13.jpg)
Patrones en bloquesPatrones en bloques
000000000000000000000000
a7d6fbe8c6778b01
ff726d4cff726d4cff726d4c
![Page 14: Criptografía para simples mortales](https://reader035.fdocument.pub/reader035/viewer/2022062503/5877b8051a28ab2c668b6167/html5/thumbnails/14.jpg)
Modos de cifradoModos de cifradoIncrementan la seguridad, impidiendo ataques a bloques individualesIncrementan la seguridad, impidiendo ataques a bloques individuales
Ejemplo: CBC (Cipher Block Chaining), XOR de cada bloque con el resultado del anterior, requiere un bloque inicial llamado Vector de inicialización (IV)
![Page 15: Criptografía para simples mortales](https://reader035.fdocument.pub/reader035/viewer/2022062503/5877b8051a28ab2c668b6167/html5/thumbnails/15.jpg)
Patrones en bloquesPatrones en bloques
000000000000000000000000a7d6fbe8c6778b01
ff726d4c56cf420d6abf92f6
937fbd60
![Page 16: Criptografía para simples mortales](https://reader035.fdocument.pub/reader035/viewer/2022062503/5877b8051a28ab2c668b6167/html5/thumbnails/16.jpg)
Hashes - Digestión de MensajesHashes - Digestión de Mensajes Algoritmos matemáticos irreversibles Devuelven un bloque de bytes de
tamaño definido, sin importar el tamaño de los datos de entrada
Si un solo bit cambia en los datos de entrada, la digestión cambia por completo
MD5, SHA-1, SHA-256
![Page 17: Criptografía para simples mortales](https://reader035.fdocument.pub/reader035/viewer/2022062503/5877b8051a28ab2c668b6167/html5/thumbnails/17.jpg)
Cambio en un bitCambio en un bit
Archivo con 50 millones de 0x00
b7a333ed69c69222c6cceb51c19ad5d92b1382a0
Archivo con 49 millones de 0x00 y un 0x01
121370c24778c8d67e0538482e1f289e12b16297
![Page 18: Criptografía para simples mortales](https://reader035.fdocument.pub/reader035/viewer/2022062503/5877b8051a28ab2c668b6167/html5/thumbnails/18.jpg)
PBE (Cifrado basado en password)PBE (Cifrado basado en password)
Útil para almacenamiento de datos Generar “sal” para agregar ruido al mensaje Estándar PKCS#5:
1. Generar sal (bits aleatorios, o hash de password + mensaje)
2. Hash de Password + sal, rehash del resultado varias veces
3. Partir el resultado en 2, usar la mitad como llave y la otra mitad como IV
![Page 19: Criptografía para simples mortales](https://reader035.fdocument.pub/reader035/viewer/2022062503/5877b8051a28ab2c668b6167/html5/thumbnails/19.jpg)
Cifras AsimétricasCifras Asimétricas
![Page 20: Criptografía para simples mortales](https://reader035.fdocument.pub/reader035/viewer/2022062503/5877b8051a28ab2c668b6167/html5/thumbnails/20.jpg)
Cifrado con Llave PúblicaCifrado con Llave Pública Cada entidad genera su par de llaves Una llave la protegen con password y no la
comparten con nadie, es la llave privada La otra llave se la dan a otras entidades, es
la pública Los mensajes se cifran con la llave pública
del recipiente El recipiente descifra el mensaje con su
llave privada
![Page 21: Criptografía para simples mortales](https://reader035.fdocument.pub/reader035/viewer/2022062503/5877b8051a28ab2c668b6167/html5/thumbnails/21.jpg)
Cifras AsimétricasCifras Asimétricas Diffie-Hellman: establecimiento de llaves RSA: Basado en primos grandes (512 bits) DSA: Firmas digitales solamente ECC: llaves más cortas, implementaciones
patentadas Es muy lenta, requiere mucho poder de
procesamiento
![Page 22: Criptografía para simples mortales](https://reader035.fdocument.pub/reader035/viewer/2022062503/5877b8051a28ab2c668b6167/html5/thumbnails/22.jpg)
Firma DigitalFirma Digital Se calcula la digestión del mensaje a firmar El remitente cifra la digestión con su llave
privada Para verificar la firma, otra entidad recalcula la
digestión del mensaje, descifra la otra digestión con la llave pública del remitente y las compara
Si no son idénticas, el mensaje ha sido alterado o no proviene de la entidad que lo envía
![Page 23: Criptografía para simples mortales](https://reader035.fdocument.pub/reader035/viewer/2022062503/5877b8051a28ab2c668b6167/html5/thumbnails/23.jpg)
Aplicación práctica PKCAplicación práctica PKC Generación de llave de sesión simétrica Cifrado de llave simétrica con llave
pública del destinatario Digestión de mensaje Descifrado de la digestión con llave
privada del remitente
![Page 24: Criptografía para simples mortales](https://reader035.fdocument.pub/reader035/viewer/2022062503/5877b8051a28ab2c668b6167/html5/thumbnails/24.jpg)
PKI en brevePKI en breve Certificado X509 - llave pública firmada
por otra entidad Fecha de expiración, información de la
entidad Autoridades certificadoras (i.e. Verisign) Integración en distintos programas Restricciones en su uso Mecanismos de revocación (CRL’s,
OCSP)
![Page 25: Criptografía para simples mortales](https://reader035.fdocument.pub/reader035/viewer/2022062503/5877b8051a28ab2c668b6167/html5/thumbnails/25.jpg)
Propiedades de PKIPropiedades de PKI Privacidad - sobre digital (cifrado) Autentificación (certificado digital) Integridad (no alteración de documentos) No repudiación (llave privada protegida) Cadena de Confianza (CA’s)
![Page 26: Criptografía para simples mortales](https://reader035.fdocument.pub/reader035/viewer/2022062503/5877b8051a28ab2c668b6167/html5/thumbnails/26.jpg)
Ejemplo: SSLEjemplo: SSL http://www.blablabla.com/ Web server envia X509 al cliente Cliente genera llave de sesión Se cifra llave de sesión con llave pública
del web server y se envía Web server descifra con su llave
privada, comienza comunicación cifrada con la llave de sesión
![Page 27: Criptografía para simples mortales](https://reader035.fdocument.pub/reader035/viewer/2022062503/5877b8051a28ab2c668b6167/html5/thumbnails/27.jpg)
Bibliotecas Criptográficas en JavaBibliotecas Criptográficas en Java
Java Cryptography Extensions - incluido a partir de 1.4
Java Secure Socket Extensions Bouncy Castle - software libre
![Page 28: Criptografía para simples mortales](https://reader035.fdocument.pub/reader035/viewer/2022062503/5877b8051a28ab2c668b6167/html5/thumbnails/28.jpg)
(anti) Ejemplos(anti) Ejemplos Netscape PRNG Microsoft SQL Server Stored Procedure
Encryption WEP
![Page 29: Criptografía para simples mortales](https://reader035.fdocument.pub/reader035/viewer/2022062503/5877b8051a28ab2c668b6167/html5/thumbnails/29.jpg)
Ejemplo: Netscape PRNGEjemplo: Netscape PRNG Basado en la hora del dia, PID y PPID Muy predecible, ciclo muy corto Semilla reproducible Número muy pequeño de llaves
generadas Arreglado hace unos años
![Page 30: Criptografía para simples mortales](https://reader035.fdocument.pub/reader035/viewer/2022062503/5877b8051a28ab2c668b6167/html5/thumbnails/30.jpg)
Ejemplo: SQL ServerEjemplo: SQL Server Stored procedure tiene un OID OID se usa como semilla para RC4 y se
encriptan bytes aleatorios Los bytes aleatorios se XOR’ean con el
texto del SP y se guardan Ataque: ALTER PROCEDURE, XOR de
resultado con original devuelve bytes aleatorios, XOR con SP encriptado devuelve SP en claro
![Page 31: Criptografía para simples mortales](https://reader035.fdocument.pub/reader035/viewer/2022062503/5877b8051a28ab2c668b6167/html5/thumbnails/31.jpg)
Ejemplo: WEPEjemplo: WEP Cifrado simétrico con llaves compartidas
en el AP y estaciones IV es muy corto y se reusa (24 bits) Llaves maestras se usan directamente
(deberian usarse para generar llaves temporales)
Checksums débiles WPA es una alternativa segura
![Page 32: Criptografía para simples mortales](https://reader035.fdocument.pub/reader035/viewer/2022062503/5877b8051a28ab2c668b6167/html5/thumbnails/32.jpg)
LiteraturaLiteratura Simon Singh: The Code Book Bruce Schneier: Secrets & Lies Steven Levy: Crypto David Kahn: Codebreakers Neal Stephenson: Cryptonomicon
![Page 33: Criptografía para simples mortales](https://reader035.fdocument.pub/reader035/viewer/2022062503/5877b8051a28ab2c668b6167/html5/thumbnails/33.jpg)
??