网络安全与Web应用

Sésame Éclair

一个机密,一次读取,零痕迹:密钥从不离开链接,服务器只保留一个无法读取的数据块。

年份
2026
技术栈
Next.js · React · TypeScript · WebCrypto · WebAssembly · PostgreSQL
  • 产品设计
  • 应用密码学
  • Web 开发
  • 应用安全
  • 无障碍
  • 多语言 SEO
https://eclair.kayzen-lyon.com/
Sésame Éclair网站首页——网络安全与Web应用,由KAYZEN制作
无需账户,没有广告
0 €
链接密钥,从不发送给服务器
256 位
单次读取机密上被接受的同时读取针对 Postgres 的自动化测试。
100 次中 1 次
种网站语言
7
出发点

需要解决的问题。

背景

Sésame Éclair 是 KAYZEN 在里昂开发并发行的免费阅后即焚机密分享服务。粘贴一个密码或一把密钥,即可得到一个端到端加密的链接,它会在被读取后或在所选期限届满时消失。它是 KAYZEN 密码管理器 Sésame 的姊妹产品:Sésame 保管需要长久留存的东西,Éclair 传递应当消失的东西。该软件免费,但属于专有软件。目前只有 Web 应用上线,提供七种语言;扩展、桌面与移动应用以及命令行工具已经开发完成,但尚未发布。

限制

通过电子邮件或 Slack 发送的密码从未真正消失:它会留在历史记录、备份和搜索索引中,任何日后能进入该邮箱的人都能读到它。一次性链接服务早已存在,但其中一些是在自己的服务器上加密的——例如 2026 年 10 月 6 日查阅的 Onetime Secret 页面就说明了这一点——而且很多服务把文件、机密请求或自定义域名留给付费方案。我们需要的是一个免费、无需账户的服务,即使用户不信任发行方,其机密性依然成立。

对策

密钥从不离开链接。浏览器生成一把 256 位的随机密钥,加密机密内容,然后把这把密钥放在地址中 # 号之后——浏览器从不把这一部分发送给服务器。服务器只存储一个加密数据块和几个日期;它只交付一次,并在同一个操作中将其删除。其余一切都源于这条规则:链接页面从不包含机密内容,服务器无法试探 PIN 码,而且这套机制的每一项局限都写在网站上,而不是避而不谈。

实测,而非自称

交付时测得的评分。

以下为线上网站的Lighthouse评分。我们如实公布:若某项分数偏低,其原因与改进计划会在下文写明,而不是避而不谈。

PageSpeed
96
性能:96分(满分100分)
100
无障碍:100分(满分100分)
100
最佳做法:100分(满分100分)
100
搜索引擎优化:100分(满分100分)
设计与艺术指导

每一个设计取舍,及其理由。

  1. Sésame 家族,品牌的一抹强调色

    标题使用海军蓝 #1F3B61,主要操作使用赤陶色 #B7481F:这是 kayzen-lyon.com 和 Sésame 的视觉规范。“闪电”琥珀色 #F2C14E 仅用于标志字。无论系统设置如何,默认显示浅色主题;深色主题由用户自行选择,并会被记住。

  2. 表单就是首屏

    人们来到这个网站是为了发送机密,而不是阅读介绍:输入区占据了首屏主视觉。选项默认折叠,但以一行易读的摘要呈现——“1 次读取 · 24 小时后过期 · 无 PIN 码”——只有在需要修改读取次数、期限、保护方式或收件人时才需要展开。

  3. 尚不存在的功能,如实标注

    “功能”页面把每项功能归为“可用”或“计划中”。“下载”页面把扩展、Windows、macOS、命令行、Android 和 iPhone 标为“即将推出”,并引导用户使用 Web 应用。在一款安全产品上,宣传一项并不存在的功能,失去的信任会多于它带来的信任。

  4. 不妨碍阅读的动效

    干脆利落的动画曲线、按下时轻微下沉的按钮、仅针对鼠标的悬停效果、滚动时以纯 CSS 落定的卡片;不使用淡入,以免降低对比度。当系统要求减少动画时,这一切都会被关闭。

项目配色

  • 墨色

    #1F2937

    文字

  • 海军蓝

    #1F3B61

    标题

  • 赤陶色

    #B7481F

    主要操作

  • 闪电琥珀色

    #F2C14E

    标志字

  • 绿色

    #1F6B48

    确认

字体系统

标题字体

Outfit 800

正文字体

Plus Jakarta Sans 400

kayzen-lyon.com 的字体家族,以可变字体版本从本域名提供:安全策略不允许任何第三方字体。

工程

幕后的技术实现。

  • Next.js
  • React
  • TypeScript
  • WebCrypto
  • WebAssembly
  • PostgreSQL
  1. AES-256-GCM,密钥放在片段中

    内容由 WebCrypto 以 AES-256-GCM 加密,使用 96 位随机初始化向量,以及与机密标识符绑定的关联数据。密钥通过 HKDF-SHA-256 派生。加密之前,内容会按档位(1、4、16、64 KiB……)进行填充,使服务器无法得知其真实长度。该格式及其测试向量公布在“格式 v1”页面上。

  2. 服务器无法试探的 PIN 码

    PIN 码经过 Argon2id(64 MiB,3 轮)处理,以 WebAssembly 运行,且仅在要求设置 PIN 码时才加载。发送给服务器的验证值由 PIN 码和链接密钥共同计算得出:没有这把密钥,服务器既无法验证 PIN 码,也无法尝试猜测。服务器会记录错误次数,并在第五次尝试时销毁机密。这一局限写在“安全”页面上:同时掌握链接和数据库副本的人,可以离线破解较短的 PIN 码。

  3. 只读一次,即使一百个请求同时到达

    通过 GET 获取的链接页面从不包含密文:只有在点击“显示”之后,密文才会通过一次 POST 请求交付。因此,Slack、Teams 或 Outlook 的预览机器人不会消耗读取次数。交付与删除在同一条 SQL 请求中完成;一项测试对一个单次读取的机密同时发起 100 次显示请求,只有一次被接受。无论链接未知、已过期、已读取还是已销毁,返回的响应都完全相同。

  4. 没有第三方脚本,策略严格封闭

    Content-Security-Policy 为每个请求生成 nonce,脚本既不允许 unsafe-inline,也不允许 unsafe-eval;唯一允许的是 wasm-unsafe-eval,用于 Argon2id。connect-src 限定为本域名,frame-ancestors 设为 none,HSTS 有效期两年并启用 preload,Referrer-Policy 设为 no-referrer。代价是明确承担并有文档说明的:页面在每次请求时渲染,而不是静态生成。

  5. 托管在欧盟境内,数据库中没有 IP 地址

    应用运行在位于巴黎的 Vercel 上;Postgres 数据库托管在位于法兰克福的 Neon。没有任何一列包含 IP 地址:限速依靠一种每天更换、不可逆的指纹。数据访问通过 Drizzle 和标准 Postgres 完成,因此托管商可以替换。

  6. 一个密码学核心,多个客户端在准备中

    全部加密逻辑都集中在单一模块 packages/crypto 中,并以确定性测试向量进行测试。在代码中,这个模块已经支撑着一个 Manifest V3 扩展、Electron 桌面应用、面向 Android 和 iOS 的 Capacitor 应用,以及一个附带 MCP 服务器的命令行工具。目前它们均未发布:网站将其介绍为即将推出。

搜索引擎优化

网站如何被搜索到。

  1. 每个搜索意图一个页面

    五篇对比(Onetime Secret、Password Pusher、scrt.link、Bitwarden Send、Password.link)、四个使用场景页面(代理机构、DevOps、IT 支持、个人用户)、两个在浏览器中运行的免费工具(密码生成器、密码强度测试器)以及一个博客。每篇对比都注明查阅日期和来源,并附有一行“发现错误?请写信告诉我们”。

  2. 七种语言,相互关联

    法语位于根路径,英语、德语、西班牙语、意大利语、葡萄牙语和荷兰语各在自己的前缀之下。每个页面都通过 hreflang 声明其对应版本,并设有 x-default,网站地图收录了全部页面。机器翻译的内容标注为“审校中”;法律文本仅以法语版本为准。

  3. FAQPage、SoftwareApplication 与 llms.txt

    常见问题带有 FAQPage 标记;产品以 SoftwareApplication 声明,价格为 0 €。一个 llms.txt 文件向智能助手说明该服务所保证的内容,也说明它的局限:没有外部审计、属于专有软件、各类应用尚未推出。

无障碍

人人都能使用。

自2025年6月起,《欧洲无障碍法案》(European Accessibility Act)要求大量在线服务实现数字无障碍。我们在设计阶段就着手处理,而非事后补救。

  1. 在 44 个页面上经 WCAG 2.2 AA 检验

    端到端测试在 44 个页面上、以多种语言,按 WCAG 2.0、2.1 和 2.2 AA 级别通过 axe-core 检查,首页的浅色和深色主题也同样通过。键盘导航、可见焦点和跳转链接均列入无障碍声明。

  2. 由测试验证的对比度

    每一对颜色令牌都有其最低对比度,并自动检查:浅色背景上的正文和标题为 7:1,即 AAA 级;次要文字、强调链接和状态消息为 4.5:1,两种主题皆然。

  3. 不夸大的声明

    由于尚未由独立机构进行 RGAA 审计,无障碍声明写明网站在该参照标准意义上“不符合”,尽管它的设计目标正是符合。这是产品规则在无障碍上的应用:没有证据,就不作断言。

网站结构

交付了哪些内容。

  • 首页——创建机密、三个步骤、简要对比
  • 功能——逐项标注“可用”或“计划中”
  • 安全——基本原语、威胁、局限;格式 v1 与测试向量
  • 服务器看到了什么——实时展示真实请求
  • 索取机密——仅供请求者使用的加密投递链接
  • 对比、使用场景、常见问题、价格、博客、工具
  • 服务状态、透明度、更新动态、路线图
  • 法律声明、使用条款、隐私、无障碍、举报
方法

项目的推进过程。

  1. 基础

    Monorepo、带静态分析的持续集成、密码学模块与格式 v1 及其测试向量、设计令牌、架构决策与威胁模型。

  2. 服务器与应用

    Postgres 数据库、原子化显示、限五次尝试的 PIN 码、追踪链接、定时清理、基于 nonce 的安全策略;创建、显示和追踪界面。

  3. 公开网站

    功能、安全、注明日期的对比、常见问题、使用场景、工具、法律页面、“服务器看到了什么”、服务状态与透明度。

  4. 上线

    如实声明实际托管情况(应用在巴黎,数据库在法兰克福)、七种语言、每次修改都受检查的性能预算、与 kayzen-lyon.com 一致的页面布局。

  5. 其他平台

    扩展、桌面、移动端和命令行均基于同一核心开发;应用商店发布尚待进行。外部审计计划在 1.0 版本之前进行。

问答

客户常问的问题。

不能,这取决于架构本身。机密在浏览器中加密,所用密钥保留在链接中 # 号之后——浏览器从不把地址的这一部分发送给服务器。服务器只接收一个加密数据块和几个日期;即使拿到数据库的完整副本,没有链接也无法读取任何机密。

还没有。目前尚未进行任何外部安全审计;审计计划在 1.0 版本之前进行,其报告将会公开。在此之前,密码学格式及其测试向量是公开的,代码由自动化测试和静态分析把关,网站本身也在“安全”和“常见问题”页面上写明了这一点。

还不能。它们基于与 Web 应用相同的密码学核心开发,但目前均未发布:“下载”页面将它们标为“即将推出”。如今,一切都在浏览器中完成,无需安装。该软件免费,但属于专有软件;其代码并不公开。

同样严格的标准,用于您的网站。

免费审核您现有的网站,24小时内报价,并附上书面分析——就像您刚刚读到的这篇。可分三期免息付款;可申请的地方补贴在签约前核实。

分享