Seguridad

    Enlaces que expiran: el secreto se destruye, no solo se redirige

    Al expirar, un enlace secreto destruye el secreto; un enlace corto expirado solo deja de redirigir. Cómo elegir el plazo y los casos límite.

    W. Miller · Actualizado el · Sobre LinkPilot

    Un enlace secreto que expira destruye el secreto en el plazo fijado: en LinkPilot se sobrescribe el texto cifrado almacenado, así que no queda nada que recuperar. Un acortador de enlaces que empieza a devolver 410 Gone solo ha dejado de redirigir. Todo enlace que lleve un secreto debería tener una expiración, porque sin ella la garantía de «un solo uso» se debilita sin que nadie lo note con cada día que el enlace pasa sin leerse. Este artículo explica qué protege realmente la expiración, cómo elegir un plazo que puedas justificar, los casos límite que dan problemas en la práctica y las situaciones en que los enlaces que expiran no son la herramienta adecuada. Si quieres ver primero cómo funciona, el generador gratis de enlaces secretos de un solo uso aplica una expiración a cada secreto que crea.

    ¿Qué protege realmente una expiración?

    La expiración limita el tiempo durante el que algo se puede filtrar. Un enlace que funcionó cinco minutos vale mucho menos para un atacante que uno que funcionó una semana, aunque los dos fueran enlaces «de un solo uso».

    Piensa dónde acaba una URL con un secreto después de enviarla: en la bandeja de entrada del destinatario, en los servidores de su proveedor de correo, quizá en una copia reenviada, en un historial de chat sincronizado con un teléfono, en el historial del navegador. No controlas ninguna de esas copias. Lo que sí controlas es durante cuánto tiempo sigue funcionando cualquiera de ellas. Con una expiración de una hora, cualquier copia suelta de esa URL deja de servir sesenta minutos después de crearse, acabe donde acabe.

    La expiración también cubre un fallo humano real que la destrucción tras la lectura no puede cubrir: el destinatario nunca abre el enlace. La destrucción tras la lectura solo se activa cuando alguien lo lee. Un enlace sin leer y sin expiración se queda en una bandeja de entrada indefinidamente: sigue activo, se puede buscar y está a un reenvío de llegar a la persona equivocada.

    La expiración y la destrucción tras la lectura cubren fallos distintos

    Estos dos controles se confunden constantemente. Son independientes, y la configuración más sólida usa los dos:

    Fallo¿Lo cubre la destrucción tras la lectura?¿Lo cubre la expiración?
    El destinatario lo lee y el enlace se queda después en la bandeja de entradaSí, ya no funcionaSí, al final
    El destinatario nunca lo abreNo, sigue activo para siempreSí
    La persona equivocada lo abre primeroEn parte: se destruye y el historial de auditoría lo muestraNo
    La URL se filtra semanas después desde una exportación del correoSolo si se había leídoSí, hace tiempo que no funciona

    Fíjate en la fila de la persona equivocada: ninguno de los dos controles impide esa lectura. Para eso está una frase de contraseña enviada por otro canal. La expiración limita el tiempo, la destrucción limita las lecturas y la frase de contraseña limita quién. Son tres ajustes separados.

    Lo que dure la entrega prevista más un retraso razonable, y nada más. Una regla práctica, según el caso:

    CasoPlazoMotivo
    Entrega en tiempo real (chat, llamada, pantalla compartida)1 hora (el plazo predefinido más corto)El destinatario está presente; la destrucción tras la lectura cierra el enlace en cuanto lo lee
    Correo a un destinatario conocido y activo1 horaCubre el retraso de la bandeja de entrada sin dejar el enlace abierto toda la noche
    Entrega programada (incorporación mañana a las 10:00)24 horasAguanta si el horario se retrasa; aun así, al día siguiente ya no funciona
    Destinatario en una zona horaria lejana24-48 horasPuede que su jornada laboral no coincida en absoluto con la tuya
    Cualquier cosa que necesite > 7 díasDetenteEl enlace no es la herramienta adecuada; usa una bóveda

    La lógica de la tabla: fija el plazo en el tiempo previsto de la entrega más un retraso razonable, no en «lo bastante largo como para no tener que volver a pensar en ello». Los plazos elegidos por comodidad acaban tendiendo al infinito.

    Una entrega con plazo, paso a paso

    Un ingeniero nuevo empieza mañana a las 10:00. Tienes que darle la contraseña de solo lectura de la base de datos de producción.

    1. 09:55: crea el enlace secreto desde tu cuenta de LinkPilot con la destrucción tras la lectura activada, una frase de contraseña y una expiración personalizada a las 11:00. La expiración a una hora concreta y la frase de contraseña son funciones de Pro; los plazos predefinidos con sesión iniciada son 1 hora, 24 horas o 7 días, y el generador sin cuenta fija 7 días.
    2. 09:56: envía el enlace por correo.
    3. 09:58: envía la frase de contraseña por SMS o por mensaje directo de Slack, un canal distinto al del enlace, para que un solo canal filtrado no baste.
    4. 10:05: el destinatario abre el enlace, escribe la frase de contraseña y lee la contraseña una vez. El enlace se destruye.
    5. 10:30: revisas el historial de auditoría. Una visualización, a la hora correcta y desde una ubicación plausible. Listo.
    6. Si a las 10:30 no se ha leído: revoca el enlace, avísale y vuelve a compartirlo en directo. No te limites a esperar a que expire; un enlace activo sin leer es una puerta abierta.

    El plazo es tan corto que un correo filtrado no sirve de nada una hora después. La frase de contraseña cubre la interceptación del enlace dentro de esa hora. La destrucción cubre las lecturas repetidas. Cada control cubre lo que los otros no cubren.

    Casos límite que conviene conocer

    Los escáneres de correo no consumen el plazo, ni el secreto

    Las herramientas de seguridad del correo corporativo abren las URL en cuanto llega un mensaje. Un enlace secreto bien hecho trata esas peticiones como consultas de metadatos: el endpoint de LinkPilot para mostrar el secreto solo devuelve el estado en un GET, y una visualización solo se registra con un POST explícito para mostrarlo. Así, un escáner que visita el enlace a las 09:56 ni lo destruye ni obtiene nada útil. Lo que no se puede impedir es que los escáneres vean que se envió una URL, y ese es otro motivo para mandar la frase de contraseña por otro canal.

    El destinatario en el minuto 59

    La expiración se aplica en el momento de mostrar el secreto, no mediante una limpieza en segundo plano de la que tengas que esperar que se haya ejecutado. En LinkPilot, un secreto expirado pasa al estado expired en el siguiente acceso y el contenido se elimina en esa misma escritura. Si alguien empieza a mostrar el secreto antes del plazo y termina después, el resultado es uno u otro, sin ambigüedad: no existe un estado de expiración a medias.

    Cálculos de zona horaria

    «Expira en 24 horas» no deja lugar a dudas; «expira mañana por la tarde», sí. Fija los plazos como duraciones a partir de ahora y, cuando se lo digas al destinatario, indícale la hora límite en su zona horaria. Un número sorprendente de quejas del tipo «el enlace ya no funcionaba cuando lo abrí» son errores de cálculo con las zonas horarias.

    El aspecto del cumplimiento normativo

    La expiración es también la forma práctica de aplicar dos principios que aparecen en la mayoría de las normativas modernas de privacidad: la minimización de datos y la limitación del plazo de conservación (en el RGPD, artículos 5(1)(c) y 5(1)(e)). Si tienes que transmitir datos personales, como un documento de identidad, la ficha de un cliente o una credencial de acceso vinculada a una persona, un enlace que deja de existir de forma demostrable al cabo de un plazo limitado es mucho más fácil de explicar a un auditor que «está en algún sitio del sistema de correo». Un historial de auditoría con los eventos de creación, visualización y expiración de cada envío convierte lo que dices sobre la conservación de datos en una prueba, no en una simple afirmación. Nada de esto hace que una herramienta «cumpla el RGPD» por sí sola, porque el cumplimiento depende de todo tu proceso, pero los plazos de vida limitados y los registros de eventos son la materia prima.

    En qué no ayuda la expiración

    La expiración no sustituye a:

    • La rotación. Si el propio secreto está comprometido, la expiración del enlace no invalida la credencial. Cámbiala en el sistema de origen. La expiración limita el tiempo durante el que el medio de entrega está activo, pero no dice nada del contenido una vez entregado.
    • La protección con frase de contraseña. La expiración limita el tiempo; la frase de contraseña limita el acceso. Son independientes y combinarlas cuesta poco.
    • El registro de auditoría. La expiración no te dice quién vio el secreto ni cuándo. Para eso están los eventos de auditoría de cada enlace: LinkPilot registra los eventos de creación, visualización, frase de contraseña incorrecta, destrucción, expiración y revocación, con marcas de tiempo y hashes de las IP.

    El antipatrón de «ya lo amplío»

    Es tentador y casi siempre un error. El destinatario aceptó un plazo. Ampliarlo sin avisar rompe el modelo de confianza: dio por hecho que el enlace ya no funcionaba y puede haber tratado el secreto en consecuencia, o haber dejado de vigilar la bandeja de entrada donde está.

    La forma correcta: revoca el enlace antiguo, crea uno nuevo con una nueva expiración y avisa al destinatario. El historial de auditoría sigue siendo fiel: un enlace, un plazo y un resultado por envío. Por eso LinkPilot te deja acortar un plazo activo o revocar al instante, pero a propósito no tiene un botón para ampliarlo.

    Una lista honesta de límites:

    • Acceso recurrente. Si alguien va a necesitar el valor también la semana que viene, guárdalo en un gestor de contraseñas y comparte el elemento de la bóveda. Reenviar enlaces periódicamente es una bóveda con más pasos y peores garantías.
    • Consumidores automáticos. Los pipelines de CI y los servicios deben obtener los secretos de un gestor de secretos (o del almacén de secretos nativo de la plataforma), no de URL de un solo uso.
    • Distribución amplia. Un enlace que necesitan quince personas no es una entrega de un secreto; es control de acceso, y debe estar en un sistema que lo tenga.

    Los enlaces que expiran destacan en una sola tarea: llevar un dato confidencial de una persona a otra, una vez, con un alcance limitado si algo sale mal.

    Referencias

    Herramientas para este artículo

    Preguntas frecuentes

    LinkPilot envía un enlace secreto que desaparece en cuanto se abre.

    Cifrado en tu navegador, se muestra una vez y después se destruye. Sin cuenta.

    Crear un enlace secreto

    Sigue leyendo