Seguridad y RGPD desde el día uno

Tu cliente es un bar, una cadena de restaurantes o una franquicia. Sus datos fiscales y operativos son sensibles. Aquí está cómo los protegemos, capa por capa.

Cifrado en cada capa

Nada en claro entre el TPV y nuestro VPS. Ni en disco, ni en tránsito, ni en backup.

HTTPS TLS 1.3

Panel y API expuestos solo por TLS 1.3 con cipher suites modernas. HSTS activo. Certificado Let's Encrypt con auto-renovación. Calificación A+ en SSL Labs.

MQTT TLS

Broker en puerto 8883 con TLS obligatorio. Cada agente tiene su propio user/password generado en enrolamiento (no compartido). ACL por organización: un agente jamás puede leer topics de otra.

Tunnel reverso mTLS

El túnel para PhantomWeb y comandos puntuales se autentica mutuamente con certificados X.509. Cada agente tiene cert firmado por nuestra CA dedicada (no la pública).

Secretos en disco cifrados

Las claves del agente y los datos sensibles del backend se sellan con AES-256-GCM. La master key vive fuera del repo en /opt/phantomzx/data/secrets/ (chmod 600).

Backup AES-256 client-side

Snapshots diarios cifrados localmente antes de subir a Backblaze B2. Backblaze nunca ve plaintext. Passphrase en gestor de contraseñas tuyo y nuestro.

Hash de contraseñas

Argon2id para passwords del panel (parámetros OWASP 2025). Tokens API y de enrolamiento se almacenan solo como SHA-256 — el plaintext se muestra al crear y nunca más.

Datos en la UE, sin excepción

El servidor principal está en Hetzner Falkenstein (Alemania). No hay copias en EE.UU., ni en Reino Unido, ni en ninguna parte del EEE.

Dónde viven los datos

  • Servidor principal: Hetzner DC Falkenstein, Alemania
  • Backup off-site cifrado: Backblaze B2, EU Central (Países Bajos)
  • Email transaccional: Brevo (Francia) o Postmark EU
  • CDN/proxy: Cloudflare con localización EU only
  • Logs: nuestros, no compartidos con terceros

Lo que NO hacemos

  • ×Vender o compartir datos con terceros
  • ×Telemetría a Google/Meta/etc en el panel
  • ×Tracking de usuarios cross-site
  • ×Sacar datos del EEE bajo ningún supuesto
  • ×Subprocesadores que no estén en lista pública

Cumplimiento RGPD operativo

No es solo un párrafo en la política — está implementado en el producto.

Acuerdo DPA firmable

Plantilla pre-firmada por nuestro DPO. La firmas con DocuSign o equivalente y queda en tu carpeta de cumplimiento. Disponible para cliente final si tu cadena hostelera lo pide.

Derecho al olvido

Botón "Eliminar mi cuenta" en el panel. Borra usuario, sesiones, MFA, API keys. Auditoría histórica permanece anonimizada (lo exige RGPD para defensa legal).

Exportación GDPR

Click → ZIP con todos tus datos (usuarios, equipos, alertas, auditoría, configs). Formato JSON + CSV. Te llega por email en menos de una hora.

Log de accesos a datos personales

Cada vez que un técnico abre la ficha de un equipo o accede a logs/sysinfo queda registrado: quién, cuándo, qué TPV, motivo opcional. Cumple Art. 32 RGPD.

Retención configurable

Por organización: cuántos días conservar métricas, sesiones, logs y auditoría. Por defecto 90/365 días según tipo. Lo bajas si tu cliente lo pide.

Notificación de brecha

Compromiso contractual: si detectamos una brecha que afecte tus datos, te avisamos en < 24 h con detalle del alcance, vector y remedy. Te ayudamos con la notificación a la AEPD si procede.

Autenticación y control de acceso

El panel multi-tenant tiene mecanismos de defensa que un RMM "casero" no.

MFA TOTP

Estándar RFC 6238. Compatible con Google Authenticator, 1Password, Authy, Bitwarden, Aegis. Códigos de recuperación impresos al activar. Forzable a nivel de organización.

Roles y scopes

Owner / admin / técnico / read-only. Por organización. Un técnico de tu equipo solo ve los TPV donde le diste acceso. Cliente final ve solo los suyos.

API keys con scopes finos

Crea claves dedicadas para cada integración: helpdesk, SIEM, ERP. Scopes: devices:read, devices:write, audit:read, etc. Rotación con un click.

Rate limit por clave

Cada API key tiene su propio bucket. Por defecto 300 req/min. Configurable. Endpoints sensibles (login, forgot-password, enroll) tienen rate limit por IP más estricto.

Sesiones con JWT

Tokens firmados HS256 con TTL de 2 h. Refresh automático mientras la pestaña esté abierta. Revocación inmediata desde el panel admin si un técnico deja la empresa.

Auditoría inmutable

Cada acción queda con quién, cuándo, IP, user-agent, recurso afectado. La tabla de audit es append-only en BD (sin DELETE), archivada en cada backup, exportable.

Seguridad del agente en el TPV

El binario que corre en el bar es el primer eslabón. Lo cuidamos.

Sin puertos abiertos en el TPV

Todo el tráfico es saliente: agente → broker MQTT (8883) y agente → tunnel reverso (7444). Cero exposición pública del TPV. Funciona detrás de cualquier NAT/firewall.

Servicio Windows con SYSTEM

El agente corre como servicio LocalSystem con auto-restart (sc failure ... restart/5000). Los binarios se firman digitalmente (Authenticode) — Windows valida firma antes de ejecutar.

Update con verificación SHA-256

Cada update baja por HTTPS, se valida contra la SHA-256 del manifest firmado, y solo entonces se aplica. Imposible servir un binario manipulado en el canal.

Sin backdoors

El agente solo ejecuta comandos que vengan firmados por tu organización. No hay "modo soporte" que nos deje a nosotros entrar a tu TPV. El código fuente está disponible bajo NDA para clientes Enterprise.

Aislamiento del usuario PhantomUserService

El usuario oculto que crea el agente para que Guacamole/RDP funcione es local, sin login interactivo, sin red ni perfil itinerante. Solo se usa para sesiones internas del túnel reverso.

Logs locales con rotación

El agente loguea en C:\ProgramData\PhantomZX\logs\ con rotación 10 MB × 5 ficheros. Sin datos de tickets ni facturas — solo métricas operativas.

Continuidad y recuperación

Que un bug, un fallo de hardware o un ataque no se traduzca en pérdida de tu data.

Backups diarios

BD MySQL completa, dumpada cada noche. Local con retención 14 días en disco encriptado. Off-site cifrado AES-256 a Backblaze B2 con retención 90 días.

Restore documentado

Procedimiento de restore probado periódicamente. Tiempo objetivo de recuperación: < 4 h desde fallo total a panel funcional. Documentación en repo y en runbook del oncall.

Failover de canal de updates

Si el endpoint principal de releases cae, los agentes siguen operando con la versión instalada. Los updates se reanudan al volver. No se quedan zombi.

Página de estado pública

phantomzx.com/status con health en tiempo real (panel, BD, MQTT, tunnel). Pensada para que UptimeRobot/Better Stack lo monitoricen también desde tu lado.

Subprocesadores

Lista pública de quién toca tus datos. Si añadimos uno nuevo, te avisamos con 30 días de antelación.

Subprocesador Función Localización DPA firmado
Hetzner OnlineHosting servidor principalFalkenstein, Alemania
BackblazeBackup off-site cifradoEU Central (NL)
CloudflareCDN, WAF, DNSEU only
BrevoEmail transaccionalParís, Francia
StripeProcesamiento pagosIrlanda
Let's Encrypt (ISRG)Certificados TLSEU/USFree CA
Auditoría externa

¿Necesitas pentest, ENS o ISO 27001?

Plan Enterprise incluye auditoría externa anual con informe disponible para tus clientes finales. Cumplimiento ENS-Medio en curso (vigente desde finales de 2026).

Hablemos