Sésame Éclair
Un secret, une lecture, zéro trace : la clé ne quitte jamais le lien, le serveur ne garde qu'un bloc illisible.
- Année
- 2026
- Stack
- Next.js · React · TypeScript · WebCrypto · WebAssembly · PostgreSQL
- Product design
- Cryptographie appliquée
- Développement web
- Sécurité applicative
- Accessibilité
- SEO multilingue

- sans compte, sans publicité
- 0 €
- clé du lien, jamais envoyée au serveur
- 256 bits
- lectures simultanées acceptées sur un secret à lecture uniqueTest automatisé contre Postgres.
- 1 sur 100
- langues du site
- 7
Ce qu'il fallait résoudre.
Le contexte
Sésame Éclair est un service gratuit de partage de secrets à lecture unique, édité par KAYZEN depuis Lyon. On y colle un mot de passe ou une clé, on obtient un lien chiffré de bout en bout qui disparaît après la lecture ou à l'échéance choisie. C'est le produit frère de Sésame, le gestionnaire de mots de passe de KAYZEN : Sésame garde ce qui doit durer, Éclair transmet ce qui doit disparaître. Le logiciel est gratuit mais propriétaire. Seule l'application web est en ligne, en sept langues ; l'extension, les applications de bureau et mobiles et la ligne de commande sont développées mais pas encore publiées.
La contrainte
Un mot de passe envoyé par e-mail ou dans Slack ne disparaît jamais vraiment : il reste dans les historiques, les sauvegardes et les index de recherche, et toute personne qui accède un jour à la boîte peut le lire. Les services de lien à usage unique existent, mais certains chiffrent sur leurs propres serveurs, ce que précise par exemple la page d'Onetime Secret relevée le 6 octobre 2026, et beaucoup réservent les fichiers, les demandes de secret ou le domaine personnalisé à une offre payante. Il fallait un service gratuit et sans compte, dont la confidentialité tienne même si l'on ne fait pas confiance à l'éditeur.
La réponse
La clé ne quitte jamais le lien. Le navigateur tire une clé aléatoire de 256 bits, chiffre le secret, puis place cette clé après le signe # de l'adresse, partie que les navigateurs n'envoient jamais aux serveurs. Le serveur ne stocke qu'un bloc chiffré et quelques dates ; il le remet une fois, puis le supprime dans la même opération. Le reste découle de cette règle : la page du lien ne contient jamais le secret, le code PIN ne peut pas être testé par le serveur, et chaque limite du dispositif est écrite sur le site plutôt que passée sous silence.
Les scores relevés à la livraison.
Scores Lighthouse du site en production. Nous les publions tels quels : quand l'un d'eux est bas, sa cause et son plan de correction sont écrits plus bas plutôt que passés sous silence.
Chaque parti pris, et sa raison.
La famille Sésame, un accent pour la marque
Bleu marine #1F3B61 pour les titres, terracotta #B7481F pour l'action principale : la charte de kayzen-lyon.com et de Sésame. L'ambre « éclair » #F2C14E est réservé au logotype. Le thème clair s'affiche par défaut, quel que soit le réglage du système ; le thème sombre est un choix de l'utilisateur, mémorisé.
Le formulaire est le premier écran
On vient sur ce site pour envoyer un secret, pas pour lire une présentation : la zone de saisie occupe le héro. Les options sont repliées mais résumées en une ligne lisible, « 1 lecture · expire dans 24 heures · sans code », et on ne les déplie que pour changer le nombre de lectures, l'échéance, la protection ou les destinataires.
Ce qui n'existe pas encore est marqué comme tel
La page Fonctionnalités classe chaque fonction en « Disponible » ou « Prévu ». La page Télécharger affiche l'extension, Windows, macOS, la ligne de commande, Android et iPhone en « Bientôt », avec un renvoi vers l'application web. Sur un produit de sécurité, annoncer une fonction absente coûterait plus de confiance qu'elle n'en rapporterait.
Un mouvement qui ne gêne pas la lecture
Courbes d'animation franches, boutons qui s'enfoncent légèrement à l'appui, survols réservés à la souris, cartes qui se posent au défilement en CSS pur, sans fondu, pour ne jamais abaisser le contraste. Tout est désactivé quand le système demande de réduire les animations.
Palette du projet
Encre
#1F2937
Texte
Marine
#1F3B61
Titres
Terracotta
#B7481F
Action principale
Ambre éclair
#F2C14E
Logotype
Vert
#1F6B48
Confirmation
Système typographique
Titrage
Outfit 800
Texte courant
Plus Jakarta Sans 400
Les familles de kayzen-lyon.com, en versions variables servies depuis le domaine : la politique de sécurité n'autorise aucune police tierce.
Ce qu'il y a sous le capot.
- Next.js
- React
- TypeScript
- WebCrypto
- WebAssembly
- PostgreSQL
AES-256-GCM, la clé dans le fragment
Le contenu est chiffré par WebCrypto en AES-256-GCM, avec un vecteur d'initialisation aléatoire de 96 bits et des données associées liées à l'identifiant du secret. Les clés sont dérivées par HKDF-SHA-256. Avant chiffrement, le contenu est complété par paliers (1, 4, 16, 64 Kio…) pour que le serveur ne connaisse pas sa longueur réelle. Le format est publié, avec ses vecteurs de test, sur la page « Format v1 ».
Un code PIN que le serveur ne peut pas tester
Le code passe par Argon2id (64 Mio, 3 passes), exécuté en WebAssembly et chargé seulement si un code est demandé. Le vérificateur envoyé au serveur est calculé à partir du code et de la clé du lien : sans cette clé, le serveur ne peut ni vérifier un code ni en essayer. Il compte les erreurs et détruit le secret au cinquième essai. La limite est écrite sur la page Sécurité : qui détient à la fois le lien et une copie de la base peut casser hors ligne un code court.
Une seule lecture, même à cent en même temps
La page d'un lien, obtenue par GET, ne contient jamais le chiffré : il n'est livré qu'après un clic sur « Révéler », par une requête POST. Les robots d'aperçu de Slack, Teams ou Outlook ne consomment donc pas la lecture. La remise et la suppression se font en une seule requête SQL ; un test lance 100 révélations simultanées sur un secret à lecture unique et n'en accepte qu'une. Lien inconnu, expiré, lu ou détruit : la réponse est la même.
Aucun script tiers, une politique fermée
Content-Security-Policy à nonce par requête, sans unsafe-inline ni unsafe-eval pour les scripts ; seul wasm-unsafe-eval est admis, pour Argon2id. connect-src limité au domaine, frame-ancestors à none, HSTS de deux ans avec preload, Referrer-Policy à no-referrer. Le prix est assumé et documenté : les pages sont rendues à chaque requête au lieu d'être générées statiquement.
Hébergé dans l'Union européenne, sans adresse IP en base
L'application s'exécute chez Vercel, à Paris ; la base de données Postgres est chez Neon, à Francfort. Aucune colonne ne contient d'adresse IP : la limitation de débit repose sur une empreinte non réversible qui change chaque jour. L'accès aux données passe par Drizzle et un Postgres standard, ce qui laisse l'hébergeur remplaçable.
Un cœur cryptographique, plusieurs clients en préparation
Tout le chiffrement vit dans un module unique, packages/crypto, testé contre des vecteurs déterministes. Le même module sert déjà, dans le code, une extension Manifest V3, des applications de bureau Electron, des applications Capacitor pour Android et iOS, et une ligne de commande avec serveur MCP. Aucune n'est publiée à ce jour : le site les présente comme à venir.
Comment le site se rend trouvable.
Une page par intention de recherche
Cinq comparatifs (Onetime Secret, Password Pusher, scrt.link, Bitwarden Send, Password.link), quatre pages de cas d'usage (agences, DevOps, support informatique, particuliers), deux outils gratuits qui tournent dans le navigateur (générateur de mots de passe, testeur de robustesse) et un blog. Chaque comparatif porte sa date de relevé, ses sources et une ligne « Une erreur ? Écrivez-nous ».
Sept langues, liées entre elles
Français à la racine, anglais, allemand, espagnol, italien, portugais et néerlandais sous leur préfixe. Chaque page déclare ses équivalents par hreflang, avec un x-default, et le plan du site les recense toutes. Les traductions automatiques sont signalées « en cours de relecture » ; pour les textes légaux, seule la version française fait foi.
FAQPage, SoftwareApplication et llms.txt
La FAQ porte un balisage FAQPage ; le produit est déclaré en SoftwareApplication avec un prix de 0 €. Un fichier llms.txt décrit aux assistants ce que le service garantit, mais aussi ses limites : absence d'audit externe, logiciel propriétaire, applications pas encore disponibles.
Utilisable par tout le monde.
Depuis juin 2025, l'European Accessibility Act impose l'accessibilité numérique à une large part des services en ligne. Nous la traitons à la conception, pas en rattrapage.
WCAG 2.2 AA vérifié sur 44 pages
Les tests de bout en bout passent axe-core aux niveaux WCAG 2.0, 2.1 et 2.2 AA sur 44 pages, dans plusieurs langues, ainsi que sur l'accueil en thème clair et en thème sombre. Navigation au clavier, focus visible et lien d'évitement figurent dans la déclaration d'accessibilité.
Des contrastes vérifiés par un test
Chaque couple de jetons de couleur a son ratio minimal, contrôlé automatiquement : 7:1, niveau AAA, pour le texte courant et les titres sur fond clair ; 4,5:1 pour le texte secondaire, les liens d'accent et les messages d'état, dans les deux thèmes.
Une déclaration qui ne surestime pas
Faute d'audit RGAA par un organisme indépendant, la déclaration d'accessibilité indique que le site est « non conforme » au sens du référentiel, même s'il a été conçu pour l'être. C'est la règle du produit appliquée à l'accessibilité : pas d'affirmation sans preuve.
Ce qui a été livré.
- Accueil — créer un secret, trois étapes, mini-comparatif
- Fonctionnalités — « Disponible » ou « Prévu », fonction par fonction
- Sécurité — primitives, menaces, limites ; format v1 et vecteurs de test
- Ce que voit le serveur — la requête réelle, affichée en direct
- Demander un secret — lien de dépôt chiffré pour le seul demandeur
- Comparatifs, cas d'usage, FAQ, tarifs, blog, outils
- État du service, transparence, nouveautés, feuille de route
- Mentions, CGU, confidentialité, accessibilité, signalement
Le déroulé du projet.
Fondations
Monorepo, intégration continue avec analyse statique, module cryptographique et format v1 avec ses vecteurs de test, jetons de design, décisions d'architecture et modèle de menace.
Serveur et application
Base Postgres, révélation atomique, code PIN à cinq essais, lien de suivi, purge planifiée, politique de sécurité à nonces ; écrans de création, de révélation et de suivi.
Site public
Fonctionnalités, sécurité, comparatifs datés, FAQ, cas d'usage, outils, pages légales, « Ce que voit le serveur », état du service et transparence.
Mise en ligne
Hébergement réel déclaré (Paris pour l'application, Francfort pour la base), sept langues, budget de performance contrôlé à chaque modification, mise en page alignée sur kayzen-lyon.com.
Autres plateformes
Extension, bureau, mobile et ligne de commande développés sur le même cœur ; publication sur les boutiques en attente. Audit externe prévu avant la version 1.0.
Ce qu'on nous demande souvent.
D'autres réalisations
Cybersécurité & Application multiplateformeSésame
Un gestionnaire de mots de passe qui ne peut pas lire vos mots de passe : la preuve était l'architecture.
Conformité RGPD & SaaSKonsent by Kayzen
Un éditeur de bandeau qui audite les bandeaux est juge et partie : l'indépendance était le produit.
Cybersécurité offensive & SaaSSentinel by Kayzen
Vendre un produit de sécurité à des ingénieurs : chaque affirmation devait être démontrable.
Le même niveau d'exigence, pour votre site.
Audit gratuit de votre site actuel, devis sous 24 h et un raisonnement écrit — comme celui que vous venez de lire. Paiement en trois fois sans frais, aides locales vérifiées avant signature.