# TEMA 1: Introducción a la Seguridad
## 1. Conceptos Fundamentales
### Seguridad Informática e Información
Seguridad informática protege infraestructuras tecnológicas y de comunicación, mientras que la seguridad de la información abarca cualquier soporte y las personas que la gestionan. El activo más importante es la información, que debe ser clasificada y protegida.
### Gestión y Estrategias
Defensa en profundidad emplea capas de salvaguardas. La seguridad por oscuridad usa el secreto en los detalles. Security by design asume que el diseño puede ser conocido y la clave es el único secreto. Moving-target defense incrementa la dificultad introduciendo cambios continuos en la configuración.
### Consecuencias de Mala Gestión
La falta de gobierno en seguridad implica riesgos legales, pérdida de datos, perjuicio reputacional, bloqueo de servicios y delitos como fraude, sabotaje, chantaje o suplantación de identidad.
## 2. Requisitos de la Seguridad
- Integridad: evitar cambios no autorizados o accidentales.
- Confidencialidad: solo los autorizados acceden a información.
- Disponibilidad: acceso garantizado a usuarios legítimos.
- Identificación, autenticación y autorización como pilares del control de acceso.
- No repudio y auditoría para asegurar responsabilidades.
# TEMA 2: Integridad de la Información
## 1. Definición y Objetivos
Prevenir, detectar y responder a ataques que comprometan la información. Implementar medidas para monitorización y respuesta en caso de incidentes.
## 2. Hash y Funciones Resumen
Las funciones hash crean resúmenes únicos para detectar alteraciones. Los algoritmos clásicos incluyen MD5, SHA-1 y los más robustos: SHA-224, SHA-256, SHA-384, SHA-512 y SHA-3. MD5 y SHA-1 son vulnerables frente a colisiones hoy día.
### Propiedades de un Hash Seguro
- Fácil cálculo
- Unidireccionalidad
- Resistencia a colisiones e inversión
## 3. Implementación Práctica
Lenguajes modernos (Java, Python) proveen librerías para generar y verificar hashes. Ejemplos: MessageDigest en Java, hashlib en Python.
## 4. Integridad en Almacenamiento
La monitorización de integridad de ficheros (Tripwire, VeriSys, Nikto) es clave para detectar cambios no autorizados. Se recomienda almacenar los resúmenes en lugares protegidos.
## 5. Contraseñas y Salting
El uso de salt (valor aleatorio añadido a la contraseña antes del hash) previene ataques de diccionario y rainbow tables. Se recomienda salt variable. Funciones de key stretching como PBKDF2, Bcrypt y Scrypt aumentan la seguridad.
## 6. Aplicaciones y Utilidades
- Cadena de custodia en análisis forense.
- Identificación rápida de archivos (Git, Dropbox).
- Antivirus y descarga segura de software.
- Blockchain y sellado de documentos digitales.
- Limpieza segura y recuperación de datos (Eraser, Data Shredder, Photorec).
# TEMA 3: Confidencialidad de la Información
## 1. Cifrado Simétrico
Usa una clave secreta compartida. Ejemplos: DES, 3DES, Blowfish, AES, Camellia. AES es el estándar moderno, eficiente y robusto. Existen cifradores de bloque y flujo.
### Modos de Operación
ECB cifra bloques independientemente (menos seguro), CBC usa XOR con el bloque anterior (más seguro), CFB y OFB adecuados para streaming. Los modos de relleno permiten cifrar mensajes no múltiplos del tamaño de bloque.
## 2. Cifrado Asimétrico
Emplea un par de claves pública/privada (RSA, DSA, ElGamal, ECC). La clave pública puede ser divulgada libremente; la clave privada debe mantenerse secreta.
### Características del Cifrado Asimétrico
- Más seguro para intercambio de claves, pero más lento y requiere claves más largas.
- Problemas: autenticidad de claves públicas, compromiso de la clave privada, pérdida y lentitud.
## 3. Acuerdo de Claves y Protocolos
Protocolos como Diffie-Hellman permiten que dos partes acuerden una clave común sin compartirla explícitamente por el canal. Usados en VPN y otros entornos seguros.
## 4. Protocolos Criptográficos
SSL/TLS y SSH combinan criptografía simétrica y asimétrica para autenticación y transmisión segura. WS utilizan XML Encryption para proteger mensajes a nivel de aplicación.
### Implementación en Java y OpenSSL
Java proporciona clases específicas (Cipher, KeyPairGenerator, SecureRandom). OpenSSL es el toolkit estándar para SSL/TLS.
## 5. Esteganografía
Técnica para ocultar información dentro de otros contenidos. Puede emplearse junto a la criptografía para incrementar la confidencialidad.