Una vez que una pantalla se fotografía o se captura y se comparte fuera, los datos han salido. La única pregunta significativa que queda es esta: ¿quién los produjo? Sin esa respuesta, el incidente se convierte en un enigma irresoluble — y la ausencia de consecuencias se convierte por sí misma en un incentivo para la siguiente fuga.
La respuesta tradicional — marcas de agua visibles con el nombre del usuario en la pantalla — funciona como elemento disuasorio. Pero recortar la imagen por su parte sin marca de agua o fotografiarla de tal forma la elimina. El usuario lo sabe; el valor disuasorio se erosiona con el tiempo.
La identificación del origen moderna requiere dos capas. Una marca visible que haga sentir al usuario que es identificable, más un rastro invisible incrustado en los datos de píxel reales que sobreviva a los ataques obvios contra lo visible. ZeroLeak añade ambas: la marca visible disuade las fugas fáciles, el rastro invisible atrapa a los cuidadosos.
Ambas capas de marca de agua se aplican en el mismo punto: el visor noVNC que recibe el navegador del usuario. Ninguna capa vive en el DOM de la aplicación web protegida, de modo que ningún sitio web puede interferir con ellas y ninguna política de front-end puede eliminarlas. La capa visible se configura por servicio protegido; la identidad de rastreo invisible se genera por sesión.
El nombre de usuario, el identificador de sesión o un texto personalizado se superponen sobre la página renderizada usando mix-blend-mode — de modo que permanecen visibles tanto en contenido claro como oscuro. El usuario sabe que es identificable personalmente en cada pantalla que ve — un elemento disuasorio continuo y potente contra la captura de pantalla fácil.
En los datos de píxel reales de cada fotograma que el usuario ve se escribe un patrón específico de la sesión. Este patrón está diseñado para soportar el recorte, el escalado, la recompresión JPEG y el refotografiado. Cuando una captura de pantalla aparece después, la identidad incrustada identifica la sesión que la produjo — incluso si la marca de agua visible se recortó para eliminarla.
La marca de agua visible admite hasta tres capas independientes; cada una con su propio texto, posición, rotación, fuente, opacidad y tamaño de mosaico. Cuando se usan juntos un nombre de usuario en diagonal, un identificador de sesión en el centro y una marca de tiempo en una esquina, recortar la marca visible para eliminarla sin perder espacio de pantalla útil se vuelve mucho más difícil.
Recortar la marca de agua visible para eliminarla, reducir la imagen para una aplicación de mensajería, fotografiar el monitor con el teléfono — la identidad de rastreo invisible sobrevive a todos ellos, porque es parte de los propios datos de píxel y no una superposición. Decodificar la identidad de rastreo de la imagen recuperada identifica la sesión.
Cada elemento siguiente se puede configurar de forma independiente por servicio protegido. Para contenido de baja sensibilidad donde la disuasión es suficiente, use solo la capa visible; para contenido de alta sensibilidad donde la identificación del origen debe ser posible, use las dos capas juntas.
El texto de la marca de agua visible se compone de la identidad del usuario autenticada al inicio de la sesión, el identificador de sesión, la marca de tiempo o cualquier combinación seleccionada en el momento de la política. La marca de agua en pantalla no es un logo genérico, sino que refleja a la persona concreta que está mirando.
La marca de agua usa mix-blend-mode, que se invierte a sí misma según el color de fondo. Una marca de agua que normalmente sería invisible en una página negra o blanca permanece legible en todas partes — el ojo ve una marca consistente, sin importar lo que muestre la página debajo.
Se pueden configurar hasta tres capas visibles juntas. Cada capa tiene su propio texto, color, opacidad, fuente, rotación, tamaño de mosaico y posición. Las capas pueden repetirse en diagonal, centrarse o fijarse en una esquina — recortar la captura de pantalla para eliminar una capa todavía deja las demás.
En los fotogramas renderizados que el usuario ve se incrusta un patrón de rastreo específico de la sesión. El proceso de incrustación está diseñado para resistir los ataques comunes de fuga de pantalla — recorte, reducción de tamaño para aplicaciones de mensajería, recompresión JPEG y refotografiado del monitor con la cámara del teléfono; todos dejan suficiente patrón como para recuperar el identificador de sesión.
Cuando se encuentra una imagen filtrada, el operador la pasa por el decodificador. El decodificador lee el patrón de rastreo incrustado y devuelve el identificador de sesión que la produjo. El operador busca la sesión en el registro de auditoría para encontrar la identidad del usuario, la marca de tiempo y el servicio protegido correspondiente.
Ambas capas de marca de agua se aplican en el visor noVNC que recibe el navegador del usuario — no en el DOM de la aplicación protegida. La aplicación protegida no sabe de la marca de agua y no puede interferir con ella. Los frameworks de front-end, las políticas de trusted-HTML, las extensiones de navegador en la aplicación protegida — ninguno puede acceder a la marca.
Diferentes canales de fuga distorsionan la imagen filtrada de diferentes maneras. La identidad de rastreo invisible se diseñó contra ataques realistas; es honesta sobre lo que puede recuperar y lo que no.
Un atacante recorta la captura de pantalla hasta la región de datos que quiere y elimina todo el texto de la marca de agua visible. La identidad de rastreo invisible se distribuye por toda la superficie del fotograma y sobrevive al recorte — recuperar una región de tamaño razonable del fotograma original basta para decodificar la identidad.
La mayoría de las aplicaciones de mensajería reducen las imágenes compartidas y las recomprimen como JPEG. El patrón de rastreo está diseñado con redundancia para soportar las tasas de reducción comunes y los artefactos de compresión JPEG.
Un atacante que no quiere dejar rastro en el sistema de archivos apunta su teléfono a la pantalla y toma una foto. El patrón de rastreo está diseñado para soportar la captura óptica — las fotos de la cámara del teléfono conservan suficiente información de frecuencia espacial como para que el decodificador todavía pueda encontrar el identificador de sesión.
Un atacante que filtra solo una porción muy pequeña de la pantalla — una sola frase, una sola cifra — reduce la cantidad de patrón de rastreo disponible. El decodificador reporta baja confianza para regiones pequeñas; en el límite, el rastro se vuelve indecodificable. Un límite honesto — no toda fuga es identificable.
Un atacante que pasa la imagen filtrada por un desenfoque gaussiano intenso, un filtro de imagen de IA generativa o que redibuja a mano el contenido visible puede destruir el patrón de rastreo junto con gran parte de la información original. En ese punto, la imagen filtrada ya no es una copia fiel de lo que estaba en pantalla — lo único que se pierde no es solo la identificación del origen.
Documentos previos a la salida a bolsa, materiales de fusiones y adquisiciones, posiciones de inversión — información de alto valor leída por muchas personas antes de hacerse pública. Cuando una fuga aparece en la prensa, identificar de qué sesión vino es la diferencia entre un incidente irresoluble y una investigación accionable.
El personal sanitario lee legítimamente los datos de los pacientes en pantalla. Cuando un registro de paciente filtrado aparece fuera, la marca de agua visible disuade las fugas fáciles, la identidad de rastreo invisible identifica la sesión si una fuga ocurre — apoyando la rendición de cuentas de HIPAA para los roles con permiso solo de visualización.
Mesas de analistas donde varias personas ven el mismo contenido clasificado. Las marcas basadas en usuario concretan la rendición de cuentas individual; la identidad de rastreo invisible hace posibles las investigaciones cuando una fuga aflora en inteligencia de fuentes abiertas.
Partes externas a las que se da permiso solo de visualización en su entorno. La marca visible basada en usuario en cada pantalla que miran les recuerda que son identificables; la marca invisible hace la situación demostrable cuando una fuga aparece en sus propias subredes.
Vea la marca de agua forense de ZeroLeak en una demo en vivo. Abrimos una sesión, tomamos la captura de pantalla, la recortamos, la reducimos, la fotografiamos desde el monitor — y cada vez decodificamos la identidad de rastreo de vuelta a la sesión.