Sésame Éclair
Eén geheim, één keer lezen, geen sporen: de sleutel verlaat de link nooit, de server bewaart alleen een onleesbaar blok.
- Jaar
- 2026
- Stack
- Next.js · React · TypeScript · WebCrypto · WebAssembly · PostgreSQL
- Productontwerp
- Toegepaste cryptografie
- Webontwikkeling
- Applicatiebeveiliging
- Toegankelijkheid
- Meertalige SEO

- zonder account, zonder advertenties
- € 0
- sleutel van de link, nooit naar de server gestuurd
- 256 bits
- gelijktijdige leespogingen geaccepteerd voor een geheim dat één keer gelezen mag wordenGeautomatiseerde test tegen Postgres.
- 1 op 100
- talen van de site
- 7
Wat er opgelost moest worden.
De context
Sésame Éclair is een gratis dienst om geheimen te delen die één keer gelezen kunnen worden, uitgegeven door KAYZEN vanuit Lyon. U plakt er een wachtwoord of een sleutel in en krijgt een end-to-end versleutelde link die verdwijnt na het lezen of op de gekozen vervaldatum. Het is het zusterproduct van Sésame, de wachtwoordmanager van KAYZEN: Sésame bewaart wat moet blijven, Éclair verstuurt wat moet verdwijnen. De software is gratis maar propriëtair. Alleen de webapp is online, in zeven talen; de extensie, de desktop- en mobiele apps en de opdrachtregel zijn ontwikkeld maar nog niet gepubliceerd.
De beperking
Een wachtwoord dat per e-mail of in Slack wordt verstuurd, verdwijnt nooit echt: het blijft staan in geschiedenissen, back-ups en zoekindexen, en iedereen die ooit toegang krijgt tot de mailbox kan het lezen. Diensten met links voor eenmalig gebruik bestaan, maar sommige versleutelen op hun eigen servers, zoals bijvoorbeeld de pagina van Onetime Secret vermeldt die op 6 oktober 2026 is geraadpleegd, en veel diensten reserveren bestanden, geheimaanvragen of een eigen domein voor een betaald abonnement. Er was een gratis dienst zonder account nodig, waarvan de vertrouwelijkheid standhoudt, ook als u de uitgever niet vertrouwt.
Het antwoord
De sleutel verlaat de link nooit. De browser genereert een willekeurige sleutel van 256 bits, versleutelt het geheim en plaatst die sleutel na het #-teken van het adres, het deel dat browsers nooit naar servers sturen. De server slaat alleen een versleuteld blok en enkele datums op; hij geeft het één keer af en verwijdert het in dezelfde bewerking. De rest volgt uit die regel: de linkpagina bevat nooit het geheim, de pincode kan niet door de server worden getest, en elke beperking van het systeem staat op de site in plaats van te worden verzwegen.
De scores bij oplevering.
Lighthouse-scores van de website in productie. Wij publiceren ze zoals ze zijn: als een score laag is, staan de oorzaak en het verbeterplan hieronder beschreven in plaats van verzwegen.
Elke keuze, en de reden erachter.
De Sésame-familie, één accent voor het merk
Marineblauw #1F3B61 voor de titels, terracotta #B7481F voor de hoofdactie: de huisstijl van kayzen-lyon.com en van Sésame. Het amber “Éclair” #F2C14E is voorbehouden aan het logo. Het lichte thema wordt standaard getoond, ongeacht de systeeminstelling; het donkere thema is een keuze van de gebruiker, die wordt onthouden.
Het formulier is het eerste scherm
Wie naar deze site komt, wil een geheim versturen, geen presentatie lezen: het invoerveld vult de hero. De opties zijn ingeklapt maar samengevat in één leesbare regel, “1 keer lezen · verloopt over 24 uur · zonder code”, en u klapt ze alleen uit om het aantal keren lezen, de vervaldatum, de beveiliging of de ontvangers te wijzigen.
Wat nog niet bestaat, staat als zodanig aangegeven
De pagina Functies deelt elke functie in als “Beschikbaar” of “Gepland”. De pagina Downloaden toont de extensie, Windows, macOS, de opdrachtregel, Android en iPhone als “Binnenkort”, met een verwijzing naar de webapp. Bij een beveiligingsproduct zou het aankondigen van een ontbrekende functie meer vertrouwen kosten dan het oplevert.
Beweging die het lezen niet hindert
Strakke animatiecurves, knoppen die licht inveren bij het indrukken, hovereffecten alleen voor de muis, kaarten die bij het scrollen op hun plaats vallen in pure CSS, zonder infaden, zodat het contrast nooit daalt. Alles wordt uitgeschakeld wanneer het systeem vraagt om animaties te beperken.
Kleurenpalet van het project
Inkt
#1F2937
Tekst
Marine
#1F3B61
Titels
Terracotta
#B7481F
Hoofdactie
Amber Éclair
#F2C14E
Logo
Groen
#1F6B48
Bevestiging
Typografisch systeem
Koppen
Outfit 800
Lopende tekst
Plus Jakarta Sans 400
De families van kayzen-lyon.com, in variabele versies geserveerd vanaf het eigen domein: het beveiligingsbeleid staat geen enkel lettertype van derden toe.
Wat er onder de motorkap zit.
- Next.js
- React
- TypeScript
- WebCrypto
- WebAssembly
- PostgreSQL
AES-256-GCM, de sleutel in het fragment
De inhoud wordt via WebCrypto versleuteld met AES-256-GCM, met een willekeurige initialisatievector van 96 bits en geassocieerde gegevens die aan de identificatie van het geheim zijn gekoppeld. De sleutels worden afgeleid met HKDF-SHA-256. Vóór de versleuteling wordt de inhoud in stappen opgevuld (1, 4, 16, 64 KiB…), zodat de server de werkelijke lengte niet kent. Het formaat is gepubliceerd, met de bijbehorende testvectoren, op de pagina “Cryptografisch formaat v1”.
Een pincode die de server niet kan testen
De code gaat door Argon2id (64 MiB, 3 passes), uitgevoerd in WebAssembly en alleen geladen als er om een code wordt gevraagd. De verificatiewaarde die naar de server gaat, wordt berekend uit de code en de sleutel van de link: zonder die sleutel kan de server een code niet controleren en ook niet uitproberen. Hij telt de fouten en vernietigt het geheim bij de vijfde poging. De beperking staat op de pagina Beveiliging: wie zowel de link als een kopie van de database heeft, kan een korte code offline kraken.
Eén keer lezen, ook met honderd tegelijk
De pagina van een link, opgehaald met GET, bevat nooit de versleutelde inhoud: die wordt pas geleverd na een klik op “Onthullen”, via een POST-verzoek. De voorbeeldrobots van Slack, Teams of Outlook verbruiken het lezen dus niet. Afgifte en verwijdering gebeuren in één SQL-query; een test start 100 gelijktijdige onthullingen van een geheim dat één keer gelezen mag worden en accepteert er maar één. Onbekende, verlopen, gelezen of vernietigde link: het antwoord is hetzelfde.
Geen scripts van derden, een gesloten beleid
Content-Security-Policy met een nonce per verzoek, zonder unsafe-inline of unsafe-eval voor scripts; alleen wasm-unsafe-eval is toegestaan, voor Argon2id. connect-src beperkt tot het domein, frame-ancestors op none, HSTS van twee jaar met preload, Referrer-Policy op no-referrer. De prijs wordt bewust aanvaard en gedocumenteerd: de pagina's worden bij elk verzoek gerenderd in plaats van statisch gegenereerd.
Gehost in de Europese Unie, zonder IP-adres in de database
De applicatie draait bij Vercel, in Parijs; de Postgres-database staat bij Neon, in Frankfurt. Geen enkele kolom bevat een IP-adres: de rate limiting berust op een niet-omkeerbare vingerafdruk die elke dag verandert. De gegevenstoegang verloopt via Drizzle en een standaard Postgres, waardoor de hostingpartij vervangbaar blijft.
Eén cryptografische kern, meerdere clients in voorbereiding
Alle versleuteling zit in één module, packages/crypto, getest met deterministische vectoren. Dezelfde module bedient in de code al een Manifest V3-extensie, Electron-desktopapps, Capacitor-apps voor Android en iOS, en een opdrachtregel met MCP-server. Geen ervan is tot nu toe gepubliceerd: de site presenteert ze als toekomstig.
Hoe de website vindbaar wordt.
Eén pagina per zoekintentie
Vijf vergelijkingen (Onetime Secret, Password Pusher, scrt.link, Bitwarden Send, Password.link), vier pagina's met gebruiksscenario's (bureaus, DevOps, IT-support, particulieren), twee gratis tools die in de browser draaien (wachtwoordgenerator, sterktetester) en een blog. Elke vergelijking vermeldt de controledatum, de bronnen en een regel “Een fout gezien? Schrijf ons”.
Zeven talen, onderling gekoppeld
Frans in de root, Engels, Duits, Spaans, Italiaans, Portugees en Nederlands onder hun eigen prefix. Elke pagina geeft haar equivalenten op via hreflang, met een x-default, en de sitemap vermeldt ze allemaal. Machinevertalingen zijn gemarkeerd met “wordt nagekeken”; voor de juridische teksten is alleen de Franse versie rechtsgeldig.
FAQPage, SoftwareApplication en llms.txt
De FAQ heeft FAQPage-markup; het product is gedeclareerd als SoftwareApplication met een prijs van € 0. Een llms.txt-bestand beschrijft voor assistenten wat de dienst garandeert, maar ook zijn beperkingen: geen externe audit, propriëtaire software, apps nog niet beschikbaar.
Bruikbaar voor iedereen.
Sinds juni 2025 verplicht de Europese toegankelijkheidsrichtlijn (European Accessibility Act) digitale toegankelijkheid voor een groot deel van de onlinediensten. Wij regelen dat in het ontwerp, niet achteraf.
WCAG 2.2 AA gecontroleerd op 44 pagina's
De end-to-endtests laten axe-core draaien op WCAG 2.0, 2.1 en 2.2 AA op 44 pagina's, in meerdere talen, en ook op de homepage in licht en donker thema. Toetsenbordnavigatie, zichtbare focus en een link om naar de inhoud te springen staan in de toegankelijkheidsverklaring.
Contrasten gecontroleerd door een test
Elk paar kleurtokens heeft een eigen minimale verhouding, automatisch gecontroleerd: 7:1, niveau AAA, voor lopende tekst en titels op een lichte achtergrond; 4,5:1 voor secundaire tekst, accentlinks en statusmeldingen, in beide thema's.
Een verklaring die niet overdrijft
Bij gebrek aan een RGAA-audit (het Franse toegankelijkheidskader) door een onafhankelijke instantie vermeldt de toegankelijkheidsverklaring dat de site “niet conform” is in de zin van het kader, ook al is hij ontworpen om dat wel te zijn. Het is de regel van het product, toegepast op toegankelijkheid: geen bewering zonder bewijs.
Wat er is opgeleverd.
- Home — een geheim aanmaken, drie stappen, mini-vergelijking
- Functies — “Beschikbaar” of “Gepland”, functie per functie
- Beveiliging — primitieven, dreigingen, beperkingen; formaat v1 en testvectoren
- Wat de server ziet — het echte verzoek, live getoond
- Een geheim aanvragen — versleutelde inleverlink, alleen voor de aanvrager
- Vergelijkingen, gebruiksscenario's, FAQ, prijzen, blog, tools
- Status van de dienst, transparantie, nieuws, roadmap
- Colofon, gebruiksvoorwaarden, privacy, toegankelijkheid, misbruik melden
Het verloop van het project.
Fundamenten
Monorepo, continue integratie met statische analyse, cryptografische module en formaat v1 met testvectoren, design tokens, architectuurbeslissingen en dreigingsmodel.
Server en app
Postgres-database, atomaire onthulling, pincode met vijf pogingen, volglink, geplande opschoning, beveiligingsbeleid met nonces; schermen voor aanmaken, onthullen en volgen.
Publieke site
Functies, beveiliging, gedateerde vergelijkingen, FAQ, gebruiksscenario's, tools, juridische pagina's, “Wat de server ziet”, status van de dienst en transparantie.
Livegang
Werkelijke hosting vermeld (Parijs voor de applicatie, Frankfurt voor de database), zeven talen, prestatiebudget gecontroleerd bij elke wijziging, opmaak afgestemd op kayzen-lyon.com.
Andere platforms
Extensie, desktop, mobiel en opdrachtregel ontwikkeld op dezelfde kern; publicatie in de stores in afwachting. Externe audit gepland vóór versie 1.0.
Wat ons vaak gevraagd wordt.
Andere projecten
Cybersecurity & Multiplatform-appSésame
Een wachtwoordmanager die uw wachtwoorden niet kan lezen: het bewijs was de architectuur.
AVG/GDPR-compliance & SaaSKonsent by Kayzen
Een bannerleverancier die banners audit, is rechter en partij: onafhankelijkheid wás het product.
Offensieve cybersecurity & SaaSSentinel by Kayzen
Een securityproduct verkopen aan engineers: elke bewering moest aantoonbaar zijn.
Hetzelfde niveau van zorg, voor uw website.
Gratis audit van uw huidige website, offerte binnen 24 uur en een schriftelijke onderbouwing — zoals die u net hebt gelezen. Betaling in drie termijnen zonder extra kosten; lokale subsidies gecontroleerd vóór ondertekening.