Sésame Éclair
Un secreto, una lectura, cero rastro: la clave nunca sale del enlace y el servidor solo guarda un bloque ilegible.
- Año
- 2026
- Stack
- Next.js · React · TypeScript · WebCrypto · WebAssembly · PostgreSQL
- Diseño de producto
- Criptografía aplicada
- Desarrollo web
- Seguridad de aplicaciones
- Accesibilidad
- SEO multilingüe

- sin cuenta, sin publicidad
- 0 €
- clave del enlace, nunca enviada al servidor
- 256 bits
- lecturas simultáneas aceptadas en un secreto de lectura únicaPrueba automatizada contra Postgres.
- 1 de 100
- idiomas del sitio
- 7
Lo que había que resolver.
El contexto
Sésame Éclair es un servicio gratuito para compartir secretos de lectura única, publicado por KAYZEN desde Lyon. Se pega una contraseña o una clave y se obtiene un enlace cifrado de extremo a extremo que desaparece tras la lectura o al llegar la caducidad elegida. Es el producto hermano de Sésame, el gestor de contraseñas de KAYZEN: Sésame guarda lo que debe durar, Éclair transmite lo que debe desaparecer. El software es gratuito pero propietario. Solo la aplicación web está en línea, en siete idiomas; la extensión, las aplicaciones de escritorio y móviles y la línea de comandos están desarrolladas pero aún no publicadas.
La limitación
Una contraseña enviada por correo electrónico o por Slack nunca desaparece del todo: permanece en los historiales, las copias de seguridad y los índices de búsqueda, y cualquier persona que algún día acceda al buzón puede leerla. Existen servicios de enlaces de un solo uso, pero algunos cifran en sus propios servidores, como precisa por ejemplo la página de Onetime Secret consultada el 6 de octubre de 2026, y muchos reservan los archivos, las solicitudes de secretos o el dominio personalizado a un plan de pago. Hacía falta un servicio gratuito y sin cuenta, cuya confidencialidad se mantenga aunque no se confíe en el editor.
La respuesta
La clave nunca sale del enlace. El navegador genera una clave aleatoria de 256 bits, cifra el secreto y luego coloca esa clave después del signo # de la dirección, la parte que los navegadores nunca envían a los servidores. El servidor solo almacena un bloque cifrado y algunas fechas; lo entrega una vez y lo elimina en la misma operación. Todo lo demás se deriva de esta regla: la página del enlace nunca contiene el secreto, el servidor no puede probar el código PIN y cada límite del sistema está escrito en el sitio en lugar de silenciarse.
Las puntuaciones registradas en la entrega.
Puntuaciones Lighthouse del sitio en producción. Las publicamos tal cual: cuando una es baja, su causa y su plan de corrección se explican más abajo en lugar de silenciarse.
Cada decisión de diseño, y su porqué.
La familia Sésame, un acento para la marca
Azul marino #1F3B61 para los títulos, terracota #B7481F para la acción principal: la identidad visual de kayzen-lyon.com y de Sésame. El ámbar «éclair» #F2C14E se reserva para el logotipo. El tema claro se muestra por defecto, sea cual sea el ajuste del sistema; el tema oscuro es una elección del usuario, que se recuerda.
El formulario es la primera pantalla
A este sitio se viene a enviar un secreto, no a leer una presentación: la zona de entrada ocupa la cabecera. Las opciones están plegadas pero resumidas en una línea legible, «1 lectura · caduca en 24 horas · sin código», y solo se despliegan para cambiar el número de lecturas, la caducidad, la protección o los destinatarios.
Lo que aún no existe se marca como tal
La página Funciones clasifica cada función como «Disponible» o «Previsto». La página Descargar muestra la extensión, Windows, macOS, la línea de comandos, Android e iPhone como «Próximamente», con un enlace a la aplicación web. En un producto de seguridad, anunciar una función inexistente costaría más confianza de la que aportaría.
Un movimiento que no estorba la lectura
Curvas de animación nítidas, botones que se hunden ligeramente al pulsarlos, efectos al pasar el cursor reservados al ratón, tarjetas que se asientan al desplazarse en CSS puro, sin fundido, para no reducir nunca el contraste. Todo se desactiva cuando el sistema pide reducir las animaciones.
Paleta del proyecto
Tinta
#1F2937
Texto
Marino
#1F3B61
Títulos
Terracota
#B7481F
Acción principal
Ámbar éclair
#F2C14E
Logotipo
Verde
#1F6B48
Confirmación
Sistema tipográfico
Titulares
Outfit 800
Texto de lectura
Plus Jakarta Sans 400
Las familias de kayzen-lyon.com, en versiones variables servidas desde el dominio: la política de seguridad no autoriza ninguna fuente de terceros.
Lo que hay bajo el capó.
- Next.js
- React
- TypeScript
- WebCrypto
- WebAssembly
- PostgreSQL
AES-256-GCM, la clave en el fragmento
El contenido se cifra mediante WebCrypto con AES-256-GCM, con un vector de inicialización aleatorio de 96 bits y datos asociados vinculados al identificador del secreto. Las claves se derivan con HKDF-SHA-256. Antes del cifrado, el contenido se rellena por tramos (1, 4, 16, 64 KiB…) para que el servidor no conozca su longitud real. El formato se publica, con sus vectores de prueba, en la página «Formato criptográfico v1».
Un código PIN que el servidor no puede probar
El código pasa por Argon2id (64 MiB, 3 pasadas), ejecutado en WebAssembly y cargado solo si se solicita un código. El verificador enviado al servidor se calcula a partir del código y de la clave del enlace: sin esa clave, el servidor no puede ni verificar un código ni probar ninguno. Cuenta los errores y destruye el secreto al quinto intento. El límite está escrito en la página Seguridad: quien posea a la vez el enlace y una copia de la base de datos puede descifrar sin conexión un código corto.
Una sola lectura, incluso con cien a la vez
La página de un enlace, obtenida por GET, nunca contiene el texto cifrado: este solo se entrega tras un clic en «Revelar», mediante una solicitud POST. Los robots de previsualización de Slack, Teams u Outlook no consumen, por tanto, la lectura. La entrega y la eliminación se hacen en una única consulta SQL; una prueba lanza 100 revelaciones simultáneas sobre un secreto de lectura única y solo acepta una. Enlace desconocido, caducado, leído o destruido: la respuesta es la misma.
Ningún script de terceros, una política cerrada
Content-Security-Policy con nonce por solicitud, sin unsafe-inline ni unsafe-eval para los scripts; solo se admite wasm-unsafe-eval, para Argon2id. connect-src limitado al dominio, frame-ancestors en none, HSTS de dos años con preload, Referrer-Policy en no-referrer. El precio se asume y se documenta: las páginas se generan en cada solicitud en lugar de generarse de forma estática.
Alojado en la Unión Europea, sin direcciones IP en la base de datos
La aplicación se ejecuta en Vercel, en París; la base de datos Postgres está en Neon, en Fráncfort. Ninguna columna contiene una dirección IP: la limitación de frecuencia se basa en una huella no reversible que cambia cada día. El acceso a los datos pasa por Drizzle y un Postgres estándar, lo que mantiene el proveedor de alojamiento sustituible.
Un núcleo criptográfico, varios clientes en preparación
Todo el cifrado reside en un único módulo, packages/crypto, probado con vectores deterministas. En el código, el mismo módulo ya da servicio a una extensión Manifest V3, a aplicaciones de escritorio Electron, a aplicaciones Capacitor para Android e iOS y a una línea de comandos con servidor MCP. Ninguna está publicada a día de hoy: el sitio las presenta como próximas.
Cómo se hace encontrar la web.
Una página por intención de búsqueda
Cinco comparativas (Onetime Secret, Password Pusher, scrt.link, Bitwarden Send, Password.link), cuatro páginas de casos de uso (agencias, DevOps, soporte informático, particulares), dos herramientas gratuitas que funcionan en el navegador (generador de contraseñas, comprobador de robustez) y un blog. Cada comparativa indica la fecha de consulta, sus fuentes y una línea «¿Un error? Escríbanos».
Siete idiomas, enlazados entre sí
Francés en la raíz; inglés, alemán, español, italiano, portugués y neerlandés bajo su prefijo. Cada página declara sus equivalentes mediante hreflang, con un x-default, y el mapa del sitio las recoge todas. Las traducciones automáticas se señalan «en revisión»; para los textos legales, solo la versión francesa es vinculante.
FAQPage, SoftwareApplication y llms.txt
Las preguntas frecuentes llevan marcado FAQPage; el producto se declara como SoftwareApplication con un precio de 0 €. Un archivo llms.txt describe a los asistentes lo que el servicio garantiza, pero también sus límites: ausencia de auditoría externa, software propietario, aplicaciones aún no disponibles.
Utilizable por todo el mundo.
Desde junio de 2025, la Ley Europea de Accesibilidad (European Accessibility Act) exige la accesibilidad digital a buena parte de los servicios en línea. La abordamos desde el diseño, no como un parche posterior.
WCAG 2.2 AA verificado en 44 páginas
Las pruebas de extremo a extremo pasan axe-core en los niveles WCAG 2.0, 2.1 y 2.2 AA en 44 páginas, en varios idiomas, así como en la página de inicio en tema claro y en tema oscuro. La navegación con teclado, el foco visible y el enlace para saltar al contenido figuran en la declaración de accesibilidad.
Contrastes verificados por una prueba
Cada pareja de tokens de color tiene su ratio mínimo, controlado automáticamente: 7:1, nivel AAA, para el texto corriente y los títulos sobre fondo claro; 4,5:1 para el texto secundario, los enlaces de acento y los mensajes de estado, en ambos temas.
Una declaración que no se sobrevalora
A falta de una auditoría RGAA realizada por un organismo independiente, la declaración de accesibilidad indica que el sitio «no es conforme» en el sentido del referencial, aunque se haya diseñado para serlo. Es la regla del producto aplicada a la accesibilidad: ninguna afirmación sin prueba.
Lo que se entregó.
- Inicio — crear un secreto, tres pasos, minicomparativa
- Funciones — «Disponible» o «Previsto», función por función
- Seguridad — primitivas, amenazas, límites; formato v1 y vectores de prueba
- Lo que ve el servidor — la solicitud real, mostrada en directo
- Solicitar un secreto — enlace de depósito cifrado solo para quien lo solicita
- Comparativas, casos de uso, preguntas frecuentes, precios, blog, herramientas
- Estado del servicio, transparencia, novedades, hoja de ruta
- Aviso legal, condiciones de uso, privacidad, accesibilidad, denuncia
El desarrollo del proyecto.
Cimientos
Monorepo, integración continua con análisis estático, módulo criptográfico y formato v1 con sus vectores de prueba, tokens de diseño, decisiones de arquitectura y modelo de amenazas.
Servidor y aplicación
Base de datos Postgres, revelación atómica, código PIN con cinco intentos, enlace de seguimiento, purga programada, política de seguridad con nonces; pantallas de creación, revelación y seguimiento.
Sitio público
Funciones, seguridad, comparativas fechadas, preguntas frecuentes, casos de uso, herramientas, páginas legales, «Lo que ve el servidor», estado del servicio y transparencia.
Puesta en línea
Alojamiento real declarado (París para la aplicación, Fráncfort para la base de datos), siete idiomas, presupuesto de rendimiento controlado en cada modificación, maquetación alineada con kayzen-lyon.com.
Otras plataformas
Extensión, escritorio, móvil y línea de comandos desarrollados sobre el mismo núcleo; publicación en las tiendas pendiente. Auditoría externa prevista antes de la versión 1.0.
Lo que nos preguntan a menudo.
Otros proyectos
Ciberseguridad y aplicación multiplataformaSésame
Un gestor de contraseñas que no puede leer sus contraseñas: la prueba era la arquitectura.
Cumplimiento del RGPD y SaaSKonsent by Kayzen
Un proveedor de banners que audita banners es juez y parte: la independencia era el producto.
Ciberseguridad ofensiva y SaaSSentinel by Kayzen
Vender un producto de seguridad a ingenieros: cada afirmación tenía que poder demostrarse.
El mismo nivel de exigencia, para su web.
Auditoría gratuita de su web actual, presupuesto en 24 horas y un razonamiento por escrito, como el que acaba de leer. Pago en tres plazos sin intereses; ayudas locales verificadas antes de la firma.