Cybersécurité & Application web

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
https://eclair.kayzen-lyon.com/
Page d'accueil du site Sésame Éclair — Cybersécurité & Application web, réalisé par KAYZEN
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
Le point de départ

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.

Mesuré, pas déclaré

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.

PageSpeed
96
Performance : 96 sur 100
100
Accessibilité : 100 sur 100
100
Bonnes pratiques : 100 sur 100
100
Référencement : 100 sur 100
Design & direction artistique

Chaque parti pris, et sa raison.

  1. 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é.

  2. 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.

  3. 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.

  4. 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.

Ingénierie

Ce qu'il y a sous le capot.

  • Next.js
  • React
  • TypeScript
  • WebCrypto
  • WebAssembly
  • PostgreSQL
  1. 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 ».

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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.

Référencement

Comment le site se rend trouvable.

  1. 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 ».

  2. 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.

  3. 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.

Accessibilité

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.

  1. 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é.

  2. 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.

  3. 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.

Arborescence

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
Méthode

Le déroulé du projet.

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

Questions

Ce qu'on nous demande souvent.

Non, et cela tient à l'architecture. Le secret est chiffré dans le navigateur avec une clé qui reste dans le lien, après le signe #, partie de l'adresse que les navigateurs n'envoient jamais aux serveurs. Le serveur ne reçoit qu'un bloc chiffré et quelques dates ; une copie complète de la base ne permet de lire aucun secret sans le lien.

Pas encore. Aucun audit de sécurité externe n'a été réalisé ; il est prévu avant la version 1.0 et son rapport sera publié. En attendant, le format cryptographique et ses vecteurs de test sont publics, le code est contrôlé par des tests automatisés et une analyse statique, et le site l'écrit lui-même sur ses pages Sécurité et FAQ.

Pas encore. Elles sont développées sur le même cœur cryptographique que l'application web, mais aucune n'est publiée : la page Télécharger les affiche « Bientôt ». Aujourd'hui, tout se fait dans le navigateur, sans installation. Le logiciel est gratuit mais propriétaire ; son code n'est pas public.

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.

Partager