WQuestions

Parte VI · IA, futuro y cierre

30

Seguridad y privacidad

Cuando todos los sistemas hablan el mismo idioma, preguntar deja de tener fricción. Y ahí aparece la pregunta que importa: ¿quién puede preguntar qué?

Son las diez y cuarto de la mañana. Un analista de una aseguradora abre su consola de evaluación de riesgo. Tiene delante la solicitud de un seguro de vida.

La solicitante es Gonzales. La misma paciente que en el primer capítulo llegó de madrugada a urgencias. Aquella vez, nadie logró reunir su historia clínica a tiempo.

El analista quiere saber una sola cosa: si Gonzales tiene antecedentes que encarezcan la prima. Su sistema es moderno y, como todo en este libro, habla en preguntas. Así que formula una consulta perfectamente legible: ¿qué situaciones de clase diagnostico_medico tienen a esta persona como paciente?

El grafo responde sin titubear: una arritmia, vigilada desde hace dos años, con un episodio de descompensación documentado. La prima se dispara. En el peor caso, la aseguradora niega la cobertura.

Y aquí está lo inquietante: nadie atacó nada. No hubo una brecha, ni una contraseña filtrada, ni un empleado vendiendo registros.

El sistema funcionó exactamente como se diseñó. Alguien preguntó y obtuvo una respuesta precisa y confiable.

El mismo grafo que ante un médico de guardia reúne una historia dispersa en segundos y salva una vida. Y que ante un analista, a media mañana, le niega el seguro.

Esta es la objeción más seria que se le puede hacer al modelo, y no la voy a esquivar.

Un grafo compartido donde cada persona tiene una identidad estable es, por defecto, una infraestructura de vigilancia. No es un efecto colateral. Es la cara opuesta de su mayor virtud.

Las leyes de protección de datos del mundo existen justamente para impedir lo que WQuestions vuelve fácil: cruzar sin esfuerzo datos que vivían separados. El RGPD europeo. La HIPAA estadounidense. La Ley 29733 peruana.

La fuerza del modelo es que el paciente, el cliente y el lugar son los mismos en todos los dominios. Esa misma fuerza permite que el banco vea el diagnóstico y la clínica vea la deuda.

La objeción, sin maquillaje

Un modelo que vuelve fácil preguntar cualquier cosa sobre cualquiera sirve tanto para la mejor medicina como para el peor abuso. La diferencia no está en la potencia del grafo, sino en una política: quién puede preguntar qué. El resto del capítulo trata de meter esa política dentro del modelo, no de pegarla por fuera con cinta.

Lo que sigue defiende dos cosas. Primera: el problema tiene solución, y bien entendido, el modelo ofrece mejores herramientas que la arquitectura relacional a la que reemplaza.

Segunda: queda un frente que ningún modelo de este tipo resuelve todavía.

Pero antes de la ingeniería hay que deshacer un malentendido, porque la primera respuesta no es técnica.

Un idioma, no una base de datos central

La imagen que produce pánico, y con razón, es la de un gran depósito central. Un servidor donde el historial completo de cada persona cuelga de un identificador. Y donde cualquiera con credenciales puede consultarlo.

Si WQuestions fuera eso, sería indefendible y este capítulo no tendría nada que defender.

No lo es. El grafo compartido es de significado, no de disco. Lo que se comparte es un sentido común, no un servidor común.

El banco, la clínica, la endocrinóloga y el cardiólogo no comparten una base de datos. Comparten un idioma de preguntas: los siete ejes y el lexicon que traduce hacia ellos.

Cada uno sigue guardando sus hechos en su propio almacén, bajo su control y su llave. La clínica no lee el grafo del banco.

Lo que ocurre es que, cuando hace falta cooperar y solo con autorización, los dos grafos hablan la misma lengua. Y la unión que antes era un proyecto de seis meses se vuelve sencilla.

Lo que se comparte es el idioma de las preguntas, no la memoria de los hechos. La interoperabilidad vive en el borde, bajo consentimiento; no en un cerebro central que todo lo sabe.La distinción que lo cambia todo

Depósito central la pesadilla de privacidad Federación + idioma común cada quien guarda lo suyo TODO de todos banco clínica seguro Estado idioma de preguntas banco clínica seguro Estado enlaces punteados = solo con autorización
Figura 30.1. A la izquierda, el depósito único donde todos leen de todos: la imagen que produce pánico, y con razón. A la derecha, lo que de verdad es WQuestions: cada parte conserva sus propios hechos bajo su propia llave, y solo los une, bajo consentimiento, un K idioma común de preguntas. La privacidad empieza por la forma de la red, no por las reglas que le pongas encima.

Releída así, la escena del médico de guardia cambia de sentido. No fue que el médico «entrara al expediente global de Gonzales».

Fue que cada parte (los dos hospitales, la endocrinóloga, el cardiólogo) publicó hacia un espacio que la paciente había autorizado de antemano para emergencias. Y como todos esos hechos hablaban el mismo idioma, se ensamblaron solos.

Cooperar no exige un cerebro central. Le bastan un idioma compartido y un permiso.

Eso disuelve el susto inicial y abre la pregunta de ingeniería de verdad: si cada parte controla su propio acceso, ¿con qué lo controla? Aquí el modelo deja de defenderse y empieza a atacar.

El permiso es un hecho

En una arquitectura relacional, el control de acceso es una capa aparte, escrita en un lenguaje distinto al de los datos. Tablas de permisos. Jerarquías de roles. Sentencias GRANT y REVOKE. Reglas sueltas por todo el código.

Es un sistema que corre en paralelo a los datos. Y los sistemas paralelos terminan igual: se desincronizan. La política dice una cosa, el código hace otra y nadie sabe cuál manda de verdad.

En WQuestions no hay capa aparte, por una razón que a estas alturas debería sonar inevitable: el permiso es, él mismo, un hecho del grafo. Una situación descrita con las mismas siete preguntas que cualquier otra.

«Que el cardiólogo Rosales pueda ver el diagnóstico de arritmia de Gonzales» no es una fila en una tabla de permisos. Es una afirmación del grafo, con su quién, su qué, su agente y su cuándo.

El control de acceso habla el mismo idioma que aquello que controla.

El permiso, descrito con el propio modelo: una situación cuyos ejes son su contenido

consentimiento_4471 situación · O paciente_maria_g Q · titular del dato quien cardiologo_rosales Q · recibe el acceso a_quien arritmia_dx_2026 O · situación protegida sobre puede_ver K · acción permitida desde 2026-03-12 permite
Figura 30.2. El permiso no es una entrada en un sistema ajeno: es una situación reificada en O, cuyos cables M apuntan a quién recibe el acceso, sobre qué situación, qué acción y desde cuándo. El control de acceso habla el mismo idioma que el dato que protege.

Visto como tripletas, el consentimiento se descompone en cables hacia cada eje, igual que cualquier otro hecho del libro:

consentimiento_4471O a_quienM(O→Q) cardiologo_rosalesQ
tripletas
(consentimiento_4471, instancia_de, consentimiento)        ∈ M(O, K)
(consentimiento_4471, quien,        paciente_maria_g)         ∈ M(O, Q)   # titular
(consentimiento_4471, a_quien,      cardiologo_rosales)    ∈ M(O, Q)   # beneficiario
(consentimiento_4471, permite,      puede_ver)             ∈ M(O, K)   # acción
(consentimiento_4471, sobre,        arritmia_dx_2026)      ∈ M(O, O)   # alcance
(consentimiento_4471, desde,        2026-03-12)            ∈ M(O, T)   # vigencia
(consentimiento_4471, caracter,     revocable)             ∈ M(O, K)

Y ese consentimiento, escrito para viajar entre sistemas, no usa un formato especial de seguridad. Es un hecho más del grafo, con la misma forma que un diagnóstico o una transferencia.

json
{
  "id": "consentimiento_4471",
  "instancia_de": "consentimiento",
  "quien": "paciente_maria_g",
  "permite": "puede_ver",
  "sobre": "arritmia_dx_2026",
  "a_quien": "cardiologo_rosales",
  "desde": "2026-03-12",
  "caracter": "revocable"
}

Que el permiso sea un hecho, y no un sistema aparte, trae tres regalos. Conviene verlos uno por uno, porque cada uno cura un dolor clásico del control de acceso relacional.

1  Consentimiento con fecha

No es una casilla marcada en un formulario perdido: es una situación que dice quién consintió qué, para quién y desde cuándo. Y como es un hecho, tiene su propia procedencia: quién recogió el consentimiento, cómo y bajo qué versión de los términos.

2  Revocar es publicar

Cuando Gonzales retira el permiso, no se edita ni se borra el hecho anterior: se añade uno nuevo que lo deja sin efecto. El acceso caduca en el acto y queda constancia, auditable, de que existió y de cuándo terminó. El sistema no olvida que hubo permiso; recuerda, además, que se revocó.

3  Auditoría gratis

Cada acceso es también una situación: «el analista del seguro consultó arritmia_dx_2026 el 2028-02-01 a las 10:14». El registro de auditoría no es un sistema de bitácoras que haya que construir y proteger aparte: son más hechos en el mismo grafo.

El segundo punto merece una palabra más, porque es donde el modelo y la ley se cruzan con elegancia.

«Revocar es publicar» funciona gracias a la vigencia que ya conoces: ante dos hechos que se contradicen, gana el último que sigue vigente.

Retirar un permiso no borra nada. Añade un hecho nuevo, con su marca de tiempo, que cancela al anterior. Así el grafo conserva la historia completa del consentimiento, imprescindible para auditar, y a la vez sabe sin dudas qué vale ahora.

«Quién vio qué y cuándo», en una línea

Cada acceso es un hecho. La pregunta forense que en una arquitectura clásica obliga a cruzar bitácoras dispersas, rotadas y en formatos distintos, aquí es una consulta más sobre los mismos siete ejes:

tripletas
# ¿Quién accedió a la situación arritmia_dx_2026, y cuándo?
?acceso  instancia_de  acceso_a_dato
?acceso  sobre         arritmia_dx_2026
?acceso  quien         ?solicitante      # Q  → quién preguntó
?acceso  cuando        ?momento          # T  → cuándo

Redacción por eje

Hay una diferencia de detalle que juega a favor del modelo, y es quizá su ventaja más subestimada en privacidad.

Una base relacional da acceso por tabla o, con bastante esfuerzo, por fila: o ves el registro entero de la transacción, o no ves nada. WQuestions da acceso por hecho, e incluso por eje.

Como cada situación parte la realidad en coordenadas separadas y de tipo conocido, se pueden mostrar unas y tapar otras sin romper nada.

Un auditor financiero puede recibir la prueba de que una transacción ocurrió: su O qué y su T cuándo. Sin ver nunca el N cuánto ni la Q contraparte.

Un investigador epidemiológico puede saber que hubo un diagnóstico de cierta clase, en cierta fecha y cierto lugar. Es decir, K, T y L. Con el Q quién guardado bajo llave.

La misma transacción, mostrada a dos solicitantes distintos

Vista · auditor de cumplimiento solo «ocurrió, y cuándo» Vista · banco titular acceso completo O transferencia_991 T 2028-01-30 K transferencia_sepa N 🔒 cuánto · sellado Q 🔒 contraparte · sellado O transferencia_991 T 2028-01-30 K transferencia_sepa N 48 200,00 EUR Q cliente_orozco mismos hechos · menos ejes mismos hechos · todos los ejes
Figura 30.3. Redacción por eje: la misma situación servida a dos solicitantes. El auditor ve que la transferencia O ocurrió y T cuándo, pero el N monto y la Q contraparte quedan bajo candado. Mostrar a cada quien solo lo que le toca viene de la propia forma del hecho, no se añade después.

Esto no es un parche encima del modelo. Es la forma misma del hecho atómico haciendo trabajo de privacidad.

La minimización de datos es el principio legal de no entregar más de lo necesario para cada fin. Aquí deja de ser una promesa de buena conducta. Pasa a ser algo que la estructura del dato expresa con precisión de bisturí.

En una tabla, «mostrar el hecho pero ocultar el monto» exige una vista a medida, todo un proyecto. Aquí basta con decir qué ejes se revelan.

Esa distinción se vuelve crítica cuando la pregunta es por el conjunto. A veces quieres que alguien sepa cuántos pacientes tienen cierta condición sin poder llegar a ninguno en particular. El control de acceso tiene que separar contar de ver.

Las tensiones que quedan crudas

No todo está resuelto. Quedan tres tensiones reales, y la última no la resuelve nadie todavía, para ningún modelo de datos enlazable. Las pongo sobre la mesa sin maquillaje, porque el modelo se defiende mejor cuando no finge.

El sistema que nunca olvida frente al derecho al olvido

La vigencia cancela un hecho, pero no lo borra. El RGPD, en cambio, da derecho a la eliminación de verdad. Dos exigencias que parecen compatibles y no lo son del todo.

La salida pasa por separar dos cosas que el lenguaje confunde: que un hecho deje de ser verdad y que su contenido se destruya.

La técnica se llama crypto-shredding, «triturado por cifrado». El contenido de los ejes de valor se guarda cifrado, y «borrar» consiste en destruir la llave.

Sin la llave, lo que queda es ruido imposible de recuperar. El nodo de la situación sigue ahí para no romper las referencias y poder auditar.

Por qué aquí el borrado es más factible, no menos

Cada eje dice con claridad dónde vive cada dato personal: el nombre en Q, el monto en N, la dolencia en K.

Por eso borrar a propósito un dato es más fácil aquí que en el amasijo relacional, donde el mismo dato sensible aparece desperdigado por columnas, índices, bitácoras y copias de respaldo de medianoche. El modelo sabe dónde apuntar la tijera.

La identidad estable es a la vez el arma y la herramienta

El poder del modelo viene de que la persona es la misma en todos los dominios. Y eso es justo lo que abre la puerta a los ataques que vuelven a poner nombre a un dato anónimo.

La defensa se llama seudónimos pareados. La persona sigue siendo una sola por dentro, pero cada relación la ve con un identificador propio, válido solo en ese dominio.

Es como usar un nombre distinto en cada ventanilla, donde solo un árbitro autorizado sabe que detrás de todos está la misma persona. Así, cruzar dos identificadores deja de ser gratis: exige un permiso explícito.

El frente genuinamente abierto: inferencia y agregación

Aun con permisos por hecho y ocultación por eje, un modelo que unifica las preguntas vuelve más fácil el ataque por combinación. Varios hechos inofensivos por separado, al cruzarse, reconstruyen lo que ninguno mostraba solo.

Dónde vives. A qué hora sales de casa. Qué farmacia frecuentas. Ninguno es secreto, pero juntos te identifican y hasta dicen qué enfermedad tienes.

L · dónde vive un barrio cualquiera T · horario sale 07:40, vuelve 19:10 K · una compra farmacia, cada 28 días cada uno: inofensivo cruzar identidad + condición «esta persona concreta, en tratamiento crónico» lo que ningún hecho dijo solo
Figura 30.4. El ataque por agregación: un L lugar, un T horario y una K compra (inofensivos por separado) convergen y reconstruyen una identidad y una condición que ninguno revelaba solo. Es el frente que ningún modelo enlazable resuelve por completo.

Esto no lo resuelve bien nadie. Y WQuestions, justo por facilitar el enlace desde el diseño, está obligado a tomárselo más en serio, no menos.

Hay defensas serias en el momento de responder una consulta. El k-anonimato: no contestar si la respuesta señala a menos de k personas. La privacidad diferencial: añadir algo de ruido a las cifras agregadas para que nadie quede al descubierto.

Pero son eso, defensas, no soluciones. Por eso este problema pertenece con todas las letras al capítulo siguiente. Es parte de lo que falta.

El veredicto

En limpio, esto es lo que el grafo compartido sí ofrece, y lo que todavía no:

El grafo compartido es un idioma, no una base central. La privacidad empieza por la forma de la red: cada parte controla lo suyo y solo lo une con consentimiento.

El permiso, el consentimiento y la auditoría son hechos del propio grafo. Se escriben en el mismo modelo que los datos, no en una capa aparte que se desincroniza con el tiempo.

El control fino por eje y el borrado dirigido por crypto-shredding son más viables aquí que en lo relacional. El modelo sabe con exactitud dónde vive cada dato.

Pero esa misma facilidad para enlazar, que es su fuerza, convierte la inferencia por agregación en el riesgo central. Y sigue sin solución cerrada para nadie.

La conclusión práctica es incómoda y conviene decirla en voz alta. Una arquitectura de información que no piensa la privacidad desde el primer día no merece adoptarse.

Un modelo que vuelve fácil preguntar cualquier cosa sobre cualquiera sirve tanto para la mejor medicina como para el peor abuso. La diferencia no está en la potencia del grafo, sino en quién puede preguntar qué.

Que esa pregunta se responda con el mismo modelo, y no con un sistema aparte pegado con cinta, es la mejor noticia de este capítulo. Que la inferencia por agregación siga abierta es la peor.

Las dos cosas son verdad a la vez. Y la página siguiente empieza, justamente, por admitir todo lo que falta.

La diferencia entre la mejor medicina y el peor abuso no está en la potencia del grafo, sino en quién puede preguntar qué.El veredicto