B4-T8: PROTOCOLOS WEB, SSL/TLS Y CRIPTOGRAFÍA APLICADA
Los códigos HTTP y los verbos REST son preguntas de 1 punto casi garantizadas. La trampa clásica es 401 (Unauthorized = no autenticado) vs 403 (Forbidden = autenticado pero sin permisos). TLS 1.3 ha simplificado el handshake y eliminado algoritmos inseguros — preguntan qué se eliminó. Los formatos de firma electrónica de las AAPP (XAdES, CAdES, PAdES) son específicos del temario TAI.
1. HTTP — MÉTODOS/VERBOS
| Método | Descripción | Idempotente | Body |
| GET | Obtener un recurso. No debe modificar estado en el servidor | Sí | No |
| POST | Crear un nuevo recurso o enviar datos al servidor | No | Sí |
| PUT | Reemplazar completamente un recurso existente (o crearlo si no existe) | Sí | Sí |
| PATCH | Modificar parcialmente un recurso existente | No* | Sí |
| DELETE | Eliminar un recurso | Sí | Opcional |
| HEAD | Como GET pero solo devuelve cabeceras (sin body). Para verificar si recurso existe | Sí | No |
| OPTIONS | Devuelve los métodos HTTP permitidos para un recurso (usado en CORS preflight) | Sí | No |
| TRACE | Echo de la petición recibida (diagnóstico). Deshabilitado por seguridad normalmente | Sí | No |
| CONNECT | Establece un túnel TCP (usado por proxies para HTTPS) | No | No |
Idempotente: ejecutar la misma petición N veces produce el mismo resultado que ejecutarla 1 vez. PUT es idempotente (siempre deja el recurso en el mismo estado). POST no (cada llamada puede crear un nuevo recurso).
2. HTTP — CÓDIGOS DE RESPUESTA
CLAVE EXAMEN: Los códigos HTTP aparecen en TODOS los exámenes. La pregunta trampa clásica: 401 = no autenticado (falta login). 403 = autenticado pero sin permisos (acceso denegado).
2.1 Rangos
| Rango | Categoría | Significado |
| 1xx | Informational | Petición recibida, procesando |
| 2xx | Success | Petición procesada correctamente |
| 3xx | Redirection | Se necesita acción adicional (redirección) |
| 4xx | Client Error | Error del cliente (petición incorrecta) |
| 5xx | Server Error | Error del servidor |
2.2 Códigos que caen en examen
| Código | Nombre | Significado |
| 100 | Continue | El servidor acepta la petición preliminar, el cliente puede enviar el body |
| 101 | Switching Protocols | El servidor acepta cambiar de protocolo (ej. upgrade a WebSocket) |
| 200 | OK | Petición exitosa |
| 201 | Created | Recurso creado exitosamente (respuesta a POST) |
| 204 | No Content | Éxito pero sin body en la respuesta (ej. DELETE exitoso) |
| 301 | Moved Permanently | Redirección permanente. Los buscadores actualizan la URL. El método puede cambiar a GET |
| 302 | Found | Redirección temporal. Los buscadores NO actualizan. El método puede cambiar a GET |
| 304 | Not Modified | El recurso no ha cambiado desde la última petición (usar caché local) |
| 307 | Temporary Redirect | Como 302 pero garantiza mantener el método HTTP original |
| 308 | Permanent Redirect | Como 301 pero garantiza mantener el método HTTP original |
| 400 | Bad Request | Petición mal formada (sintaxis incorrecta, parámetros inválidos) |
| 401 | Unauthorized | No autenticado — falta o es inválida la credencial de acceso |
| 403 | Forbidden | Autenticado pero sin permisos — el servidor entiende la petición pero la rechaza |
| 404 | Not Found | Recurso no encontrado en la URL solicitada |
| 405 | Method Not Allowed | El método HTTP no está permitido para ese recurso (ej. DELETE en recurso de solo lectura) |
| 408 | Request Timeout | El servidor cerró la conexión porque el cliente tardó demasiado |
| 409 | Conflict | Conflicto con el estado actual del recurso (ej. edición concurrente) |
| 413 | Payload Too Large | El body de la petición excede el límite del servidor |
| 415 | Unsupported Media Type | El Content-Type enviado no es soportado |
| 429 | Too Many Requests | Rate limiting — demasiadas peticiones en poco tiempo |
| 500 | Internal Server Error | Error genérico del servidor (excepción no controlada) |
| 502 | Bad Gateway | El servidor proxy/gateway recibió una respuesta inválida del upstream |
| 503 | Service Unavailable | Servidor temporalmente no disponible (mantenimiento, sobrecarga) |
| 504 | Gateway Timeout | El proxy/gateway no recibió respuesta a tiempo del upstream |
3. HEADERS HTTP IMPORTANTES
| Header | Tipo | Función |
| Content-Type | Entidad | Tipo MIME del body (application/json, text/html, multipart/form-data) |
| Authorization | Request | Credenciales de autenticación (Bearer token, Basic base64) |
| Cache-Control | General | Directivas de caché: no-cache, no-store, max-age=3600, public, private |
| ETag | Response | Identificador de versión del recurso. El cliente envía If-None-Match para validar caché |
| Set-Cookie / Cookie | Response / Request | Gestión de sesiones. Atributos: HttpOnly (no accesible por JS), Secure (solo HTTPS), SameSite |
| Access-Control-Allow-Origin | Response (CORS) | Indica qué orígenes pueden acceder al recurso (* o dominio específico) |
| X-Frame-Options | Response (seguridad) | Previene clickjacking: DENY, SAMEORIGIN |
| Content-Security-Policy | Response (seguridad) | Define fuentes permitidas de scripts, estilos, imágenes. Previene XSS |
| Strict-Transport-Security | Response (HSTS) | Fuerza HTTPS. max-age=31536000; includeSubDomains |
| X-Content-Type-Options | Response (seguridad) | nosniff — evita que el navegador interprete el contenido como un tipo diferente al declarado |
4. VERSIONES DE HTTP
| Versión | Transporte | Características principales |
| HTTP/1.0 | TCP | Una conexión por petición. Sin keep-alive por defecto |
| HTTP/1.1 | TCP | Keep-alive por defecto, pipelining (en la práctica poco usado), chunked transfer encoding, Host header obligatorio |
| HTTP/2 | TCP (con TLS en la práctica) | Multiplexación (múltiples peticiones simultáneas en una conexión), compresión de cabeceras (HPACK), server push, binario (no texto). RFC 7540 |
| HTTP/3 | QUIC (UDP) | Elimina head-of-line blocking de TCP. Handshake 0-RTT. Migración de conexión. Compresión QPACK. RFC 9114 |
Head-of-line blocking: En HTTP/2 sobre TCP, si se pierde un paquete, todos los streams se bloquean. HTTP/3 con QUIC lo resuelve porque cada stream es independiente a nivel de transporte.
5. ARQUITECTURA DE INTERNET
5.1 DNS (Domain Name System)
| Concepto | Descripción |
| Puerto | 53/UDP (consultas normales) y 53/TCP (transferencias de zona, respuestas >512 bytes) |
| Función | Traduce nombres de dominio (www.ejemplo.es) a direcciones IP |
| Jerarquía | Root (.) → TLD (.es, .com, .org) → Dominio (ejemplo.es) → Subdominio (www.ejemplo.es) |
| Root servers | 13 direcciones anycast (A-M root servers) gestionados por ICANN y otros |
| Resolución recursiva | El resolver del ISP consulta root → TLD → servidor autoritativo hasta obtener la IP |
| Caché DNS | Los registros se cachean según su TTL (Time To Live) para reducir consultas |
5.2 Registros DNS principales
| Registro | Función | Ejemplo |
| A | Nombre → IPv4 | ejemplo.es → 93.184.216.34 |
| AAAA | Nombre → IPv6 | ejemplo.es → 2001:db8::1 |
| CNAME | Alias → otro nombre | www.ejemplo.es → ejemplo.es |
| MX | Servidor de correo del dominio (con prioridad) | ejemplo.es → mail.ejemplo.es (pri 10) |
| NS | Servidor DNS autoritativo del dominio | ejemplo.es → ns1.ejemplo.es |
| SOA | Start of Authority. Información administrativa de la zona (serial, refresh, retry, expire) | Primer registro de cada zona |
| TXT | Texto libre. Usado para SPF, DKIM, DMARC, verificación de dominio | "v=spf1 include:_spf.google.com ~all" |
| PTR | IP → nombre (DNS inverso) | 34.216.184.93 → ejemplo.es |
| SRV | Servicio + puerto + host. Localización de servicios | _sip._tcp.ejemplo.es → sip.ejemplo.es:5060 |
| CAA | Certificate Authority Authorization. Indica qué CAs pueden emitir certificados para el dominio | 0 issue "letsencrypt.org" |
5.3 DNSSEC
DNSSEC (DNS Security Extensions) añade firmas digitales a las respuestas DNS para garantizar su autenticidad e integridad (evitar DNS spoofing/poisoning). NO cifra las consultas (para eso: DoH/DoT).
| Registro DNSSEC | Función |
| RRSIG | Firma digital de un conjunto de registros |
| DNSKEY | Clave pública usada para verificar las firmas RRSIG |
| DS | Delegation Signer: hash de la clave del hijo, almacenada en la zona padre (cadena de confianza) |
| NSEC/NSEC3 | Prueba autenticada de inexistencia de un registro |
5.4 DNS privado: DoH y DoT
| Protocolo | Puerto | Descripción |
| DoT (DNS over TLS) | 853/TCP | Cifra las consultas DNS con TLS. Puerto dedicado, fácil de filtrar |
| DoH (DNS over HTTPS) | 443/TCP | Consultas DNS dentro de HTTPS. Difícil de distinguir del tráfico web normal |
6. SSL/TLS
6.1 Versiones
| Versión | Año | Estado |
| SSL 2.0 | 1995 | Inseguro — prohibido |
| SSL 3.0 | 1996 | Inseguro — prohibido (POODLE) |
| TLS 1.0 | 1999 | Deprecado (RFC 8996) |
| TLS 1.1 | 2006 | Deprecado (RFC 8996) |
| TLS 1.2 | 2008 | Aceptable — configurar solo cipher suites seguras |
| TLS 1.3 | 2018 | Recomendado — RFC 8446. Más rápido y seguro |
6.2 TLS 1.2 vs TLS 1.3
| Aspecto | TLS 1.2 | TLS 1.3 |
| Handshake | 2-RTT (2 ida y vuelta) | 1-RTT (1 ida y vuelta). 0-RTT en reconexiones |
| Intercambio de claves | RSA, DHE, ECDHE (configurable) | Solo ECDHE o DHE (RSA estático eliminado) |
| Cifrado simétrico | AES-CBC, AES-GCM, RC4, 3DES | Solo AEAD: AES-128-GCM, AES-256-GCM, ChaCha20-Poly1305 |
| Forward secrecy | Solo con DHE/ECDHE (configurable) | Siempre (obligatorio) |
| Algoritmos eliminados en 1.3 | — | RSA key exchange, RC4, 3DES, SHA-1, MD5, CBC mode, compresión |
| Cifrado del handshake | Solo tras finalizar | Cifrado desde el mensaje ServerHello |
CLAVE EXAMEN: La gran mejora de TLS 1.3: handshake de 1-RTT (más rápido), perfect forward secrecy obligatorio (solo ephemeral DH/ECDHE), eliminación de algoritmos inseguros (RSA key exchange, RC4, 3DES, SHA-1, CBC).
6.3 Handshake TLS 1.3 simplificado
| Paso | Mensaje | Descripción |
| 1 | ClientHello | Cliente envía: versiones TLS soportadas, cipher suites, clave pública ECDHE (key_share) |
| 2 | ServerHello | Servidor responde: cipher suite elegida, su clave pública ECDHE. A partir de aquí todo va cifrado |
| 3 | Encrypted Extensions + Certificate + CertificateVerify + Finished | Servidor envía certificado, firma, y finaliza su parte |
| 4 | Finished | Cliente verifica certificado y envía su Finished. Conexión establecida en 1-RTT |
6.4 Cipher suite TLS 1.3
En TLS 1.3, las cipher suites se simplificaron a solo 5 (todas AEAD):
| Cipher Suite | Cifrado | Hash |
TLS_AES_128_GCM_SHA256 | AES-128-GCM | SHA-256 |
TLS_AES_256_GCM_SHA384 | AES-256-GCM | SHA-384 |
TLS_CHACHA20_POLY1305_SHA256 | ChaCha20-Poly1305 | SHA-256 |
TLS_AES_128_CCM_SHA256 | AES-128-CCM | SHA-256 |
TLS_AES_128_CCM_8_SHA256 | AES-128-CCM-8 | SHA-256 |
7. CERTIFICADOS X.509 Y PKI
7.1 Certificado X.509v3 — Campos principales
| Campo | Descripción |
| Version | Versión del formato (v3 = 2) |
| Serial Number | Identificador único asignado por la CA |
| Issuer | DN de la CA emisora |
| Validity | Not Before / Not After (periodo de validez) |
| Subject | DN del titular del certificado |
| Subject Public Key Info | Clave pública del titular + algoritmo (RSA, ECDSA) |
| Extensions (v3) | Extensiones: Subject Alternative Name (SAN), Key Usage, Extended Key Usage, CRL Distribution Points, Authority Key Identifier |
| Signature Algorithm | Algoritmo usado por la CA para firmar (ej. SHA256withRSA) |
| Signature | Firma digital de la CA sobre todo el certificado |
7.2 Tipos de certificado por validación
| Tipo | Validación | Indicador navegador |
| DV (Domain Validation) | Solo verifica que el solicitante controla el dominio | Candado |
| OV (Organization Validation) | Verifica dominio + datos de la organización | Candado + datos org en certificado |
| EV (Extended Validation) | Verificación exhaustiva: dominio + organización + representante legal | Candado (barra verde eliminada en navegadores modernos) |
| Wildcard | Válido para *.dominio.com (todos los subdominios de un nivel) | Candado |
| SAN / Multi-domain | Un certificado para múltiples dominios (via Subject Alternative Name) | Candado |
7.3 Let's Encrypt y ACME
| Concepto | Descripción |
| Let's Encrypt | CA gratuita y automatizada. Emite certificados DV con validez de 90 días. Usa protocolo ACME |
| ACME | Automatic Certificate Management Environment (RFC 8555). Protocolo para automatizar emisión y renovación de certificados. Cliente más usado: Certbot |
8. FIRMA ELECTRÓNICA EN LAS AAPP
CLAVE EXAMEN: Los formatos de firma electrónica de las AAPP españolas (XAdES, CAdES, PAdES) son específicos del temario TAI. Saber qué formato aplica según el tipo de documento.
8.1 Formatos de firma avanzada
| Formato | Basado en | Uso | Niveles |
| XAdES | XML | Firma de documentos XML, facturas electrónicas, trámites web. El más usado en AAPP | -BES, -T, -C, -X, -XL, -A |
| CAdES | CMS/PKCS#7 | Firma de cualquier tipo de fichero binario (genérico) | -BES, -T, -C, -X, -XL, -A |
| PAdES | PDF | Firma embebida en documentos PDF. Visible e invisible | -BES, -T, -LTV |
8.2 Niveles de firma
| Nivel | Añade | Garantiza |
| -BES (Basic Electronic Signature) | Firma básica + certificado del firmante | Integridad + autenticidad |
| -T (Timestamp) | Sello de tiempo de una TSA (Time Stamp Authority) | + Momento exacto de la firma (no repudio temporal) |
| -C / -X / -XL | Referencias y valores de certificados + CRLs/OCSP | + Validación a largo plazo (incluso si la CA desaparece) |
| -A (Archival) | Sellos de tiempo adicionales periódicos | + Preservación indefinida (archivo a largo plazo) |
8.3 Herramientas de firma de las AAPP
| Herramienta | Función |
| @firma | Plataforma de firma electrónica de la SGAD. Permite crear y verificar firmas en formatos XAdES, CAdES, PAdES |
| AutoFirma | Aplicación de escritorio para firma electrónica del ciudadano. Soporta DNIe, certificados FNMT. Descarga desde PAe |
| FIRe | Firma en la nube (Cl@ve Firma). Permite firmar desde navegador sin instalar software local |
| VALIDe | Servicio de validación de firmas y certificados electrónicos |
| TS@ | Servicio de sellado de tiempo (TSA) de la SGAD |
9. ESTÁNDARES PKCS
| PKCS | Nombre | Descripción |
| PKCS#1 | RSA Cryptography Standard | Define el formato de cifrado y firma RSA |
| PKCS#7 | Cryptographic Message Syntax | Formato de datos firmados/cifrados. Base de CAdES y S/MIME. Extensión .p7b, .p7c |
| PKCS#8 | Private Key Info | Formato de clave privada (soporta múltiples algoritmos) |
| PKCS#10 | Certification Request | Formato de solicitud de certificado (CSR — Certificate Signing Request) |
| PKCS#11 | Cryptographic Token Interface | API para acceder a hardware criptográfico (tarjetas inteligentes, HSM, DNIe) |
| PKCS#12 | Personal Information Exchange | Almacena clave privada + certificado en un solo archivo protegido por contraseña. Extensión .p12, .pfx |
FUENTES PÚBLICAS
Este resumen ha sido elaborado íntegramente a partir de fuentes de dominio público. No se ha utilizado material con copyright de terceros ni material de preparadores.
| Fuente | Tipo | Referencia |
| RFC 9110 — HTTP Semantics | Estándar | IETF |
| RFC 8446 — TLS 1.3 | Estándar | IETF |
| NIST FIPS 197 — AES | Estándar | NIST |
| RFC 5280 / X.509 — Certificados digitales | Estándar | IETF / ITU-T |