架构

签名策略与执行

规则在控制台中编写,作为一个签名版本发布,由每个浏览器校验,并在表单发送之前在页面中执行。如果浏览器无法证明其策略是最新的,它会故障时默认阻止(fail-closed)。

本文描述截至 2026年9月19日 已实现的 LayerT。尚未实现的内容均已标注。

策略的生命周期

  1. 控制台起草IT 以草稿形式编写或修改规则。此时还不会下发到任何浏览器。
  2. 控制台发布发布会将所有待处理的草稿合并应用为一个新版本。可选的双人审阅可防止有人发布自己的草稿。
  3. LayerT 云端签名该版本被序列化为规范 JSON(canonical JSON),并使用 Ed25519 签名。
  4. 浏览器获取每 15 分钟一次,另外在启动时和页面跳转后获取,使用条件请求。
  5. 浏览器校验在使用任何一条规则之前,都会检查签名、密钥、组织、版本和有效期。
  6. 页面执行规则在网站自身代码运行之前作用于表单提交和粘贴操作。
一个策略版本的有效期为 7 天。LayerT 会在其过期前 48 小时自动重新签名。

什么是规则

一条规则说明它适用于哪里、监视哪些字段什么值会触发它,以及会发生什么

部分选项
哪里网站匹配模式:精确 URL、通配模式(如 https://*.postbox.example/*)或正则表达式
哪些字段该页面上字段的 CSS 选择器。管理员可以使用扩展程序的选取器直接在页面上点选来生成
什么值针对输入值的条件:等于、匹配某个模式、电子邮件域名、属于某个列表,以及用与/或/非进行组合。条件还可以与人员自己的目录身份进行比较,例如“只允许其本人的工作邮箱”
会发生什么监视(仅记录)、阻止阻止并允许申请(人员可以申请访问),或强制退出登录(清除该网站的 Cookie 和存储,然后显示已退出登录页面)

目前,LayerT 评估的是表单提交(submit 事件、提交按钮和在字段中按 Enter 键)以及向受监视字段的粘贴。内置规则涵盖个人 Google 账号登录、Telegram Web 和 WhatsApp Web。

警告. “警告”规则会在页面中向人员显示一条警告,并让其选择继续或返回。继续操作会被记录,因此警告是一种留有记录的提醒,而不是阻止。

签名

每个已发布的版本都会以确定性的方式序列化(键按顺序排列,不含签名字段),并使用 Ed25519 签名。策略包含版本号、所属组织、签发时间和过期时间。

  • 版本号只增不减。每次发布都会在加锁的情况下为贵组织取下一个编号,因此两位管理员无法发布同一个版本。
  • 回滚会将旧规则作为一个新的、更高的版本发布。此后批准的例外会被保留,除非恢复后的规则不再允许它们。
  • 在生产环境中,签名密钥由 Google Cloud KMS 保管且无法导出:LayerT 的服务器向 KMS 请求每一次签名。此功能已构建,并将随 LayerT 的首次生产部署开启。开发构建使用本地密钥签名,而生产构建的扩展程序不信任该密钥。

浏览器收到的签名版本称为策略包。其中包含什么(包括其他人的允许列表和已批准的例外)、它在笔记本电脑上存放在哪里,以及控制这台笔记本电脑的人能对它做什么,请见策略包与设备失陷

在浏览器中校验

扩展程序在使用每个策略之前,都会使用浏览器自身的 Web Crypto 实现对其进行检查。按顺序,出现以下情况之一时它会拒绝该策略:

  1. 其版本不比已有的版本新;
  2. 它属于另一个组织;
  3. 它使用扩展程序不认识的密钥签名;
  4. 签名无法通过扩展程序内置公钥的校验;或
  5. 按笔记本电脑的时钟,它已经过期。

被拒绝的策略会被丢弃,浏览器保留原有的策略。扩展程序可以同时内置多个公钥,因此签名密钥可以无缝轮换。

仅在到达时检查. 浏览器在策略到达时对其进行检查,然后将其以普通 JSON 的形式保存在浏览器配置文件中,之后执行所保存的内容而不再重新检查。能够写入该存储的人,或在笔记本电脑上拥有管理员权限的人,可以在那里使执行失效。策略包与设备失陷逐一说明了每种情况,以及用来弥补它们的设备控制措施。

默认阻止

无法获得最新且真实策略的浏览器,不会悄悄停止执行策略。

  • 策略在签发 7 天后过期,LayerT 会在此之前 48 小时自动重新签名。只有当浏览器已经连续数天无法连接 LayerT 时,才会遇到过期的策略。
  • 在受阻止强制退出登录规则覆盖的页面上,过期的策略会阻止所有表单提交,以及向该规则字段的所有粘贴,并显示一张“需要网络连接”卡片。卡片会说明发生了什么,并且只提供“返回”选项。
  • 监视规则继续记录。
  • 浏览器重新连接后,卡片会在大约 30 秒内自行消失,无需重新加载页面。
为什么默认阻止. 如果一台笔记本电脑只要离线或屏蔽某个域名就能逃避策略,那策略就形同虚设。LayerT 的宪章将默认阻止规定为不可妥协的原则。

紧急停止

所有者可以为整个组织关闭所有执行。紧急停止本身也是一个签名策略版本,因此没有人能向浏览器发送伪造的停止指令。它会被记录,并通知所有者和 IT 管理员。它只会关闭执行:不存在反过来锁定一切的开关。

浏览器会在下一次同步时收到它:15 分钟之内,如果人员进行页面跳转则会更快。停止指令在策略中被标记为紧急,但目前扩展程序获取它的速度并不比其他变更更快。吊销浏览器和回滚也以同样的方式送达。

在页面中执行

LayerT 的内容脚本会在网站自身代码看到提交和粘贴之前进行监听。当规则匹配时,LayerT 会取消该事件,因此网站的请求永远不会发出。端到端测试会检查请求确实没有发出。

LayerT 的提示在设计上使页面无法干扰它们:

  • 它们绘制在封闭的 Shadow Root 中,页面脚本无法访问。
  • 它们的按钮只响应真实的点击和按键,不响应脚本生成的事件。
  • 它们从不显示规则的内部名称,而是显示管理员编写的消息。
  • 它们从不索要密码,也从不包含密码字段。有一项测试会检查每个提示。
  • 当页面上显示提示时,LayerT 工具栏图标会显示一个页面无法伪造的琥珀色圆点。

申请访问

如果规则允许,被阻止的人员可以申请访问。

  1. 浏览器申请人员说明原因。请求有截止时间,默认为 30 分钟。
  2. 控制台或弹出窗口决定审批人选择:单次尝试(五分钟)、15 分钟、1、8 或 24 小时,或永久。
  3. LayerT 云端应用批准会在一个原子步骤中成为新签名策略中的一个例外。
  4. 浏览器重试提示会自行更新。如果人员已经离开,桌面通知会告知他们。
  • 任何人都不能审批自己的请求。服务器会拒绝这样的审批。
  • 永久例外只能由合规官或所有者授予,IT 永远不能授予。
  • 无人处理的请求会自动过期。
  • 审批人会通过控制台收件箱、扩展程序,以及电子邮件、Slack 或浏览器通知得知请求,具体方式由每个人自行选择。他们可以在控制台中或直接在 Slack 中做出决定,在 Slack 中做出的决定会被如实记录。

记录哪些内容

每一次阻止、监视匹配和例外的使用都会生成一条审计事件,包含网站、字段、匹配的值和人员。这些值有意保持可读,以便审计人员能看到被阻止的登录使用的是个人地址。审计事件默认保留 365 天,每个组织都可以更改这一期限。