Saltar al contenido
Cybsis

Seguridad y privacidad

Transparentes en todo, salvo en las claves.

Un criptosistema debe ser seguro aunque se conozca todo sobre él, excepto la clave. Kerckhoffs lo escribió en 1883; estamos de acuerdo. A continuación explicamos la implementación tal como se entrega hoy: qué está en producción, qué aún no lo está y dónde escribirnos si encuentra una laguna que se nos haya escapado.

01 — Autenticación

Moderno por defecto, con nivel gubernamental donde importa.

La autenticación es la primera señal del rigor con el que se aborda el resto de la plataforma. Cybsis la trata en consecuencia.

Claves de acceso (WebAuthn): la opción predeterminada
Credenciales criptográficas resistentes al phishing, vinculadas al dispositivo. Las llaves de seguridad hardware como YubiKey tienen soporte nativo: el mismo flujo gestiona indistintamente tanto estas llaves como los autenticadores de plataforma (Touch ID, Windows Hello). @simplewebauthn/server v13
TARA — paraguas estonio de eID (sector público)
Un único flujo OIDC contra el SSO estatal de Estonia cubre todos los esquemas nacionales de eID: ID-card, Mobile-ID y Smart-ID. El usuario elige en el portal TARA; Cybsis recibe de vuelta una aserción de identidad verificada. TARA es un servicio gestionado por el Estado para autenticarse en sistemas del sector público; las implantaciones del sector privado utilizan Web eID, descrito más abajo. openid-client v6
Active Directory / LDAP
Enlace directo con el AD del cliente o con cualquier directorio compatible con LDAP. Para empresas que ya centralizan la identidad y no quieren un segundo almacén de usuarios. El bloqueo de cuentas se coordina con la política propia del directorio. ldapts v8 · módulo integrationAD
Web eID — tarjeta de identidad para el sector privado
Autenticación con la tarjeta de identidad estonia disponible para compradores del sector privado y para equipos del sector público que prefieran no pasar por TARA. Funciona mediante una extensión de navegador, con validación de certificados OCSP y desafío-respuesta vinculado a nonce. Mobile-ID y Smart-ID comerciales a través de SK ID Solutions son compatibles como módulo de integración de pago: incluido para clientes existentes y adquirido por separado para nuevas implantaciones en el sector privado. @peculiar/x509 · Validado mediante OCSP
Claves de API de federación
Acceso de máquina a máquina entre instancias de Cybsis. Tokens Bearer con firmas de solicitud HMAC-SHA256 y asignación de roles mediante encabezado de identidad; revocables en la instancia emisora. módulo de federación
Contraseña (cuando no hay otra opción)
Con hash Bcrypt, longitud mínima configurable y bloqueo de cuenta tras un número configurable de intentos fallidos dentro de una ventana móvil de 15 minutos. Preferiríamos que usara claves de acceso. bcryptjs v3

Modelo de sesión

Tokens de acceso JWT de corta duración (15 minutos, configurable) transportados en cookies httpOnly SameSite=Strict, con validación de audiencia y emisor. Los tokens de actualización son 48 bytes aleatorios, almacenados en reposo con hash SHA-256: el texto plano solo existe en la cookie del navegador. Tiempo de inactividad configurable por instancia; valor predeterminado: 60 minutos. Límites de tasa por ruta en todos los endpoints de autenticación (p. ej., contraseña: 10 solicitudes / 15 minutos; registro de passkey: 20 / 5 minutos).

02 — Autorización y aislamiento

Una base de datos, límites estrictos entre tenants.

RBAC con control por permisos
Los roles agrupan permisos; los permisos se comprueban en el endpoint mediante middleware, no en la capa de modelo. Los endpoints sin comprobación de permisos no existen: añadir uno es una decisión en fase de compilación.
Aislamiento de tenants a nivel de fila
Cada entidad operativa incluye una clave externa instanceId. Las consultas que la omiten se descartan: cada endpoint de listado limita su alcance a las instancias accesibles para el usuario autenticado.
Mapeo de roles de federación
Cuando una instancia federada realiza una llamada, la clave de API incluye cabeceras de identidad que se asignan a un rol local. El llamante remoto nunca obtiene acceso general: recibe el rol que el administrador local ha asignado a ese enlace de federación.

03 — Cifrado

Secretos a nivel de campo. Claves de contenido por archivo.

  • Configuración sensible

    Las claves de API de proveedores de IA, las credenciales SMTP/IMAP y otros secretos de la configuración del sistema se cifran con AES-256-GCM a nivel de campo: IV de 12 bytes más etiqueta de autenticación de 16 bytes antepuestos al texto cifrado. El personal de RaulWalter no puede leerlos; la fila de la base de datos por sí sola no es suficiente.

  • Archivos subidos

    Cada archivo obtiene su propia clave derivada mediante HMAC-SHA256(master, "file:" + fileId) — construcción HKDF. La clave maestra no cifra nada directamente; comprometer una clave de archivo compromete un solo archivo.

  • Contraseñas

    Hasheadas con Bcrypt. La base de datos almacena únicamente hashes; los restablecimientos de contraseña generan tokens firmados de corta duración, nunca el texto claro.

  • Tokens de actualización

    Se almacenan como hashes SHA-256. Incluso con acceso completo a la base de datos, un atacante no puede reutilizar una sesión: necesitaría el texto en claro de la cookie del navegador del usuario.

  • Clave maestra

    Reside en la variable de entorno ENCRYPTION_KEY: 32 bytes, codificada en base64. En despliegues autogestionados y on-prem, la clave nunca sale de la infraestructura del cliente; RaulWalter no tiene ninguna copia. En RW Hosting, la clave reside en el entorno AWS aislado del cliente, nunca en portátiles de desarrolladores ni en el control de versiones.

  • En tránsito

    TLS termina en el proxy inverso (nginx en el despliegue recomendado). Cybsis no acepta HTTP en texto claro para el tráfico autenticado.

04 — Auditoría y rendición de cuentas

Todo lo que ocurre queda registrado.

Registro de actividad
Más de 80 tipos de acción: inicios de sesión, cambios de rol, ediciones de controles, transiciones del ciclo de vida de documentos, flujos de trabajo de incidentes, activación o desactivación de integraciones y eventos de licencia. Se pueden buscar y exportar.
Registro de intentos de inicio de sesión
Cada intento de autenticación —método, IP, agente de usuario, éxito o fallo— junto con el registro del usuario (o el nombre de usuario intentado cuando falla). Alimenta la lógica de bloqueo de cuentas y proporciona a los auditores un rastro forense.
Registro de uso de la IA
Cada llamada de IA: qué usuario, qué función, qué proveedor, prompt y cargas útiles de respuesta, tokens de entrada/salida, estimación de coste, duración y estado. El interruptor para desactivar la IA también apaga esto; nada sale de la plataforma de forma invisible.

05 — Implementación y residencia de datos

Tres límites de confianza. Elija el suyo.

Hosting RW

AWS eu-north-1 · 300 €/año fijo

Tenant único por cliente, cuenta de AWS aislada y cifrado en reposo. RaulWalter opera el entorno de ejecución: actualizaciones el mismo día, soporte activo y telemetría visible para nuestro equipo para agilizar la asistencia. La opción de compromiso que elige si no quiere gestionar la infraestructura.

Su nube

AWS · GCP · Azure · sin coste adicional

Imagen Docker, documentación de despliegue y usted lo ejecuta. La clave maestra de cifrado reside en su almacén de secretos; RaulWalter no tiene acceso de lectura a su base de datos ni acceso shell a sus instancias. Las comprobaciones de licencia contra nuestro servidor de licencias son las únicas llamadas salientes.

En local

Defensa · inteligencia · sanidad · sin coste adicional

La misma imagen Docker, instalada por el cliente. Operación aislada mediante la ruta de licencia para entornos air-gapped. Cero tráfico saliente. Si las funciones de IA se habilitan con un proveedor de modelos autoalojado, toda la pila se ejecuta dentro del perímetro.

Base de datos y copias de seguridad

PostgreSQL 17 es la opción predeterminada y la base de datos contra la que realizamos las pruebas. Dado que la capa de datos se basa en Prisma y no utiliza tipos de columna específicos de PostgreSQL, operadores JSON ni extensiones, MySQL y SQLite son destinos de proveedor compatibles a nivel de esquema: viables cuando una organización se ha estandarizado en otra tecnología y está dispuesta a operar el despliegue por sí misma. La disciplina del esquema es deliberada, no accidental.

Las herramientas de copia de seguridad integradas ejecutan pg_dump según una programación por niveles —cada hora, diaria y semanal— con retención configurable. En self-host, usted apunta el volumen de copias de seguridad al almacenamiento que elija; en RW Hosting, las copias se guardan en S3 aislado por cliente. Las implementaciones que no usan Postgres utilizan las herramientas de copia de seguridad propias del operador.

06 — límite de confianza de la IA

Desactivado por defecto. Configurable. Registrado.

La IA es la única función que puede mover datos fuera de su perímetro de confianza. Por eso es la que tratamos con mayor rigor.

  • 01Desactivada hasta que se habilite. Una instalación nueva se entrega con ai_enabled = false. Sin botones con destellos, sin punto de entrada de Ludwig, sin llamadas salientes. Un administrador la activa en Administration → AI Settings; el interruptor es reversible.
  • 02Tres modos de proveedor. Use su propia clave (Anthropic, OpenAI, Gemini, Azure OpenAI), apunte a un endpoint autoalojado compatible con OpenAI (Ollama, vLLM, cualquier LLM interno) o deje que RaulWalter proporcione la clave. Todos los detalles en la página de funciones de IA.
  • 03La configuración del proveedor está cifrada. El campo de clave API está cifrado en reposo con AES-256-GCM. Una instantánea de la base de datos no la expone; solo el proceso en ejecución con la clave maestra puede descifrarla.
  • 04Cada llamada queda registrada. El registro de uso de la IA recoge el usuario, la instancia, el proveedor, el modelo, el prompt completo y las cargas de respuesta, el recuento de tokens, la estimación de coste y la duración. Auditable como cualquier otra actividad.
  • 05Sin supresión automática. Dicho claramente: Cybsis no elimina automáticamente datos personales ni contenido sensible de los prompts antes de enviarlos al proveedor que usted haya elegido. El prompt que usted envía es el mismo que llega al proveedor. Para cargas de trabajo en las que esto sea importante, utilice el modo 2: un endpoint LLM autoalojado dentro de su perímetro, de modo que ningún prompt salga nunca de la red.

07 — Qué incluye la hoja de ruta de seguridad

Lo que aún no hemos lanzado.

El principio de Kerckhoffs tiene doble filo. Si esperamos que confíe en la implementación, le debemos una lista de las cosas que aún no incluye.

  • TOTP como segundo factor

    La plataforma fomenta el uso de claves de acceso (passkeys), que ofrecen mayor resistencia al phishing que la combinación de contraseña + TOTP. Pero los entornos que exigen TOTP —en particular los marcos de contratación del sector público— necesitan un segundo factor explícito además de la contraseña. En la próxima versión menor.

  • SSO SAML

    OIDC ya es compatible mediante la integración con TARA; OIDC genérico frente a cualquier IdP es una ampliación menor. SAML —para las empresas cuyo equipo de IdP solo habla SAML— está en la lista de pendientes y supeditado al primer cliente que realmente lo necesite.

  • Registro de auditoría con evidencia de manipulación

    El registro de auditoría es exhaustivo, pero las filas son mutables como en cualquier otra tabla de base de datos: un administrador de base de datos con acceso de escritura puede modificar el historial. El endurecimiento previsto es una cadena de hashes o una arquitectura de almacenamiento de solo anexado; resulta especialmente importante en sectores regulados donde el auditor necesita no repudio criptográfico.

  • Escaneo automatizado de la cadena de suministro

    El lockfile se confirma y se revisa en cada versión, pero todavía no ejecutamos Dependabot ni Renovate de forma automatizada contra el repositorio, y no hay una SBOM publicada. Ambas medidas están en la lista para el próximo trimestre.

  • Redacción de datos personales en prompts de IA

    Las partes de un prompt de IA construidas por la plataforma ya están minimizadas: campos controlados con tamaños de muestra limitados, sin credenciales ni identificadores nacionales. Lo que aún no existe es una capa automática de depuración sobre el contenido de prompts escrito por usuarios: un comentario o una nota libre introducidos en un campo con botón de destello se envían al proveedor literalmente. Una pasada de enmascaramiento —detección de entidades, patrones configurables y política a nivel de instancia— está en la lista de desarrollo.

  • Programa de recompensas por vulnerabilidades

    La divulgación coordinada a través del correo electrónico indicado abajo es el acuerdo vigente por ahora. Un programa de recompensas financiado —probablemente a través de una plataforma pública— se abrirá cuando tengamos una base instalada suficiente para que resulte relevante para los investigadores.

08 — Divulgación responsable

¿Ha encontrado algo? Cuéntenoslo.

Si ha encontrado un problema de seguridad en Cybsis —en el producto, el sitio web o cualquier integración que publiquemos—, escriba a security@raulwalter.com. Confirmamos la recepción en un plazo de 24 horas, todos los días del año.

PGP — cifre informes sensibles

Huella digital: 3361 FEA1 BF78 5BDA A1BF 0385 860E 681F 87FF 816A
Clave: /.well-known/security-raulwalter.asc · también referenciada en /.well-known/security.txt

Qué haremos

  • — Confirmamos la recepción de su informe en un plazo de 24 horas.
  • — Le informaremos en un plazo de 5 días laborables si podemos reproducirlo.
  • — Mantenerle informado hasta que se cierre la incidencia.
  • — Le daremos crédito en el registro de cambios cuando se publique la corrección, salvo que nos pida lo contrario.
  • — Nunca le amenazaremos por haberlo encontrado.

Qué le pedimos que haga

  • — Concédanos un plazo razonable para corregirlo antes de divulgarlo públicamente.
  • — No exfiltre datos de clientes, ni siquiera para demostrar que el fallo funciona.
  • — No ejecute escáneres automatizados contra instancias de producción que no sean de su propiedad.
  • — Use una instancia de prueba o una versión de prueba de RW Hosting si necesita hacer una demostración.

Para preguntas sobre el producto que no estén relacionadas con la seguridad, utilice el formulario de presupuesto o escriba a sales@raulwalter.com. El buzón de seguridad se supervisa por separado y debe reservarse para informes de vulnerabilidades.