Resumen

  • Los descriptores de Ph trataban por separado quién podía ver un campo, usarlo para buscar, recibirlo por defecto, cambiarlo o descubrir que existía.
  • Turn, LocalPub, ForcePub y Sacred cambiaban la proyección según el contenido, la procedencia de la sesión y la vía de control.
  • Para auditar una respuesta hay que conservar el contexto de política; un resultado vacío no es un inventario del servidor.

Un número de teléfono doméstico podía ser público, utilizable en búsquedas y modificable por su titular. Bastaba, sin embargo, que el titular colocara un asterisco al comienzo del valor para ocultarlo a casi todos. El dato seguía allí. El propio titular y los operadores privilegiados podían verlo. Lo que cambiaba era la vista.

Ese mecanismo aparece en RFC 2378, la especificación informativa de septiembre de 1998 para el CCSO Nameserver, o Ph. El sistema organizaba información sobre personas y objetos en entradas con campos nombrados. La idea parece la de una guía telefónica conectada a Internet, pero su estructura tenía una ambición más fina: describir el comportamiento de cada campo mediante propiedades combinables.

Public permitía visualizar. Lookup permitía usar el campo en la selección de entradas. Indexed lo incorporaba al índice y toda consulta debía contener al menos un campo indexado. Default lo devolvía cuando el cliente no especificaba una lista; Always podía forzar su aparición. Change autorizaba al dueño de la entrada a editarlo. Unique rechazaba una modificación que creara un duplicado. NoMeta impedía comodines. Encrypt exigía tratamiento cifrado para la transmisión del valor.

No eran grados de una única escala de secreto. Eran ejes distintos. Algo puede ser visible y no localizable mediante búsqueda. Puede ser localizable y no aparecer por defecto. Puede existir en el esquema interno sin que un cliente externo conozca siquiera su nombre.

El carácter que no debía «limpiarse»

La propiedad Turn conectaba la decisión del usuario con el contenido almacenado. El ejemplo del documento marca home_phone como Lookup Public Change Turn. Al anteponer *, el propietario apagaba la visibilidad para todos salvo para sí mismo y los Heros, la figura administrativa de Ph.

Por eso el asterisco no era ruido tipográfico. Un proceso de normalización que lo borrara antes de aplicar la política convertiría un acto de privacidad en una publicación. Tampoco era borrado: una exportación privilegiada todavía encontraría el campo.

ForcePub revela la tensión complementaria. Esa propiedad hacía que un campo siguiera visible y consultable aunque el campo general de supresión de la entrada indicara lo contrario. La política particular del atributo podía vencer a la política de la ficha.

Lo importante no es adoptar hoy esas mismas reglas. Lo importante es registrar que la visibilidad nacía de varias fuentes: definición del campo, estado de la entrada, identidad del observador y privilegio excepcional. Una respuesta solo es comprensible si esas fuentes quedan unidas a ella.

El cliente externo recibía un diccionario más pequeño

LocalPub reservaba un campo para cualquiera dentro del dominio o espacio de direcciones considerado local. Fuera de esa frontera, el campo era completamente invisible. El comando que enumeraba descriptores no lo mostraba; tampoco se permitía nombrarlo en una consulta ni en la lista de retorno.

La diferencia no era solo una celda en blanco. El observador externo recibía un esquema distinto. No podía preguntar por aquello cuya existencia se le ocultaba.

El servidor ofrecía además una opción de sesión external para aplicar ese modo. Sin embargo, RFC 2378 no daba una prueba universal de localidad. La clasificación quedaba en manos de la operación del servidor. Dirección de origen, nombre del host, afiliación y derecho de acceso podían coincidir en un despliegue, pero no son el mismo hecho.

Esta separación era especialmente relevante porque Ph no hacía referencias automáticas a otros servidores. La base era local en ese sentido, aunque pudiera listar otros nameservers para que el cliente los consultara por su cuenta. Una ausencia local tampoco demostraba una ausencia global.

Sagrado no significaba inmutable

La propiedad Sacred prohibía cambios por invocación de red, pero aceptaba cambios realizados directamente mediante terminal, archivo o tubería del servidor. La garantía era sobre la ruta, no sobre la eternidad del valor.

Los Heros también tenían alcance variable. Un Hero completo podía ver y cambiar cualquier campo. Una delegación podía limitarse a un solo campo de una sola entrada ajena mediante ACL. Una auditoría que solo registrara «acción administrativa» perdería la diferencia entre una autorización precisa y poder total.

El capítulo de seguridad mantiene la misma modestia. El protocolo anunciaba métodos de autenticación débiles y fuertes. Sin autenticación mutua como Kerberos o GSS-API, no había forma de probar la identidad del servidor. Tampoco existía un mecanismo para demostrar que ese servidor era autoridad sobre el conjunto de información. Y, sin una capa de transporte añadida, el tráfico podía observarse o modificarse.

Autenticar al usuario, autenticar al servidor, proteger el canal, autorizar un campo y demostrar autoridad sobre los datos son recibos diferentes. Ninguno debe sustituir a los otros.

La respuesta como proyección comprobable

Una lectura rigurosa de Ph conserva varias capas: la entrada almacenada; los descriptores; los marcadores de supresión; la decisión local o externa; la identidad de sesión; el alcance ACL; los criterios de consulta; los campos solicitados; el endpoint; y el estado del transporte. Solo al final aparece la respuesta.

Por eso return all quería decir todos los campos visibles. No era una puerta trasera hacia el almacenamiento. Del mismo modo, que un campo estuviera indexado no lo hacía público, y que fuera público no autorizaba al titular a cambiarlo.

RFC 2378 documentó un sistema de su época, con debilidades explícitas. Pero fue preciso en algo que muchos sistemas posteriores ocultan: el directorio visto por el usuario es una construcción. Confundirlo con la base real convierte una política de acceso en una afirmación falsa sobre los hechos.