criptografía para simples mortales

33
Criptografía para simples Criptografía para simples mortales mortales Enrique Zamudio López @chochosmx

Upload: enrique-zamudio-lopez

Post on 15-Apr-2017

556 views

Category:

Engineering


2 download

TRANSCRIPT

Page 1: Criptografía para simples mortales

Criptografía para simples mortalesCriptografía para simples mortales

Enrique Zamudio López

@chochosmx

Page 2: Criptografía para simples mortales

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

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

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

Ejemplo de OTPEjemplo de OTP

Mensaje:

0111010101000101

Llave: 1001001010101011

Resultado:

1110011111101110

Page 6: Criptografía para simples mortales

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

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

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

Cifrado Simétrico por BloquesCifrado Simétrico por Bloques0000000000000000

a7d6fbe8c6778b01

104dbcfe46378ad5

104dbcfe46378ad5

a7d6fbe8c6778b01

0000000000000000

Page 10: Criptografía para simples mortales

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

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

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

Patrones en bloquesPatrones en bloques

000000000000000000000000

a7d6fbe8c6778b01

ff726d4cff726d4cff726d4c

Page 14: Criptografía para simples mortales

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

Patrones en bloquesPatrones en bloques

000000000000000000000000a7d6fbe8c6778b01

ff726d4c56cf420d6abf92f6

937fbd60

Page 16: Criptografía para simples mortales

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

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

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

Cifras AsimétricasCifras Asimétricas

Page 20: Criptografía para simples mortales

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

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

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

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

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

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

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

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

(anti) Ejemplos(anti) Ejemplos Netscape PRNG Microsoft SQL Server Stored Procedure

Encryption WEP

Page 29: Criptografía para simples mortales

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

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

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

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

??