LayerT 白皮书
设计上默认失败即关闭

在浏览器中生效的控制措施有一个明显的弱点:浏览器位于员工的笔记本电脑上。如果笔记本电脑可以悄悄停止接收策略,或接受一个不应接受的策略,这项控制就沦为了建议。本文介绍 LayerT 如何通过签名策略和故障时默认阻止(fail-closed)的默认行为弥补这些缺口,以及这在键盘前的人看来是什么样子。
为什么要在浏览器中执行
网络安全工具看到的是发往网站的加密流量。它们看不到登录表单中输入了什么,也看不到那是谁的账号。等到请求到达网络时,工作笔记本电脑上的个人登录与工作登录看起来毫无二致。
LayerT 运行在输入发生的地方。它的内容脚本能看到字段中的值,将其与您的规则进行比较,并在网站自身代码发送请求之前采取行动。这个位置是产品的优势,也正因如此,它所执行的策略必须值得信任。
一个策略,一个签名
管理员在控制台中以草稿形式编写规则。发布会将所有待处理的草稿变成贵组织策略的一个新版本。版本号只增不减,每次发布都会在加锁的情况下取下一个编号,因此两位管理员无法生成相同的版本。
- 控制台草稿规则、列表变更和例外撤销被暂存。可选的双人审阅。
- LayerT 云端编译规则、已批准的例外和人员的列表被组装成面向整个组织的一个文档。
- LayerT 云端签名规范 JSON(键按顺序排列,不含签名)使用 Ed25519 签名。
- 浏览器校验使用 Web Crypto,依据内置于扩展程序中的密钥进行检查。
签名后的文档包含其所属组织、版本、签发时间和过期时间。回滚不会倒转历史。它会将旧规则作为一个新的、更高的版本发布,并保留此后批准的所有例外。
浏览器检查什么
扩展程序每 15 分钟获取一次策略,另外在启动时和页面跳转后获取,使用条件请求,因此未变化的策略几乎不产生任何开销。在使用策略之前,它会校验:
| 检查项(按顺序) | 拒绝 |
|---|---|
| 版本 | 任何不比已有版本新的策略,因此旧策略无法被重放 |
| 组织 | 属于其他任何组织的策略 |
| 密钥 | 任何由扩展程序不认识的密钥签名的内容 |
| 签名 | 任何无法通过扩展程序内置公钥校验的内容 |
| 有效期 | 按笔记本电脑的时钟已超过过期时间的策略 |
被拒绝的策略会被丢弃,浏览器保留原有的策略。扩展程序可以同时内置多个公钥,因此签名密钥可以无缝轮换。在生产环境中,签名密钥由 Google Cloud KMS 保管,配置为硬件支持的保护,且无法导出:LayerT 的服务器向 KMS 请求每一次签名。此功能已构建,并将随 LayerT 的首次生产部署开启。开发构建使用本地密钥签名,而生产构建的扩展程序不信任该密钥。
默认阻止
每个策略在签发 7 天后过期。LayerT 会在此之前 48 小时自动重新签名,因此保持连接的浏览器永远不会遇到过期的策略。只有已经连续数天无法连接 LayerT 的浏览器才会遇到。
一旦遇到,LayerT 不会退回到“允许”。在受阻止或强制退出登录规则覆盖的任何页面上,它会阻止表单提交以及向该规则字段的粘贴,并显示一张说明原因的卡片:
需要网络连接。LayerT 无法更新此浏览器的策略,因此无法检查此操作。请连接到您的网络,然后重试。
警告和监视规则继续工作。当浏览器重新连接并获得新的策略后,卡片会在大约 30 秒内自行消失,无需重新加载页面。
我们选择只在阻止规则适用的地方默认阻止,而不是在整个网络上都这样做。笔记本电脑上过时的策略会阻止有风险的登录,但不会妨碍人员阅读新闻。
紧急停止
有时您需要立即在所有地方关闭执行:某条规则有误,正在阻止销售团队工作。所有者可以启用紧急停止。紧急停止本身也是一个签名策略版本,因此没有人能向浏览器发送伪造的停止指令来关闭 LayerT。它会被记录,浏览器会在下一次同步时收到它:15 分钟之内,如果人员进行页面跳转则会更快。停止指令在策略内被标记为紧急,但目前扩展程序获取它的速度并不比其他变更更快。
没有后门的例外
规则可以允许被阻止的人员申请访问。审批人选择时长:单次尝试(五分钟窗口)、15 分钟,或 1、8、24 小时。永久例外只能由合规官或所有者授予,IT 永远不能授予,因此编写规则的人不是为这些规则授予长期例外的人。
批准会在一个原子步骤中成为新签名策略的一部分,因此例外与它所放宽的规则具有完全相同的可信度。任何人都不能审批自己的请求,服务器会拒绝。无人处理的请求会过期。
页面无法说服其放行的执行机制
LayerT 在网站自身的处理程序运行之前对表单提交和粘贴采取行动,并在规则匹配时取消它们,因此网站的请求永远不会发出。解释阻止原因的提示在设计上能够抵御其所在页面的干扰:
- 页面脚本无法访问的封闭 Shadow Root;
- 只响应真实点击和按键的按钮;
- 永远没有密码字段,并有一行页脚说明 LayerT 从不索要密码;
- LayerT 自己工具栏图标上的琥珀色圆点,页面无法绘制。
记录哪些内容
每一次阻止、监视匹配和例外的使用都会连同网站、字段、匹配的值和人员一起被记录。这些值有意保持可读,以便审计人员能够确认被阻止的确实是个人账号。审计事件默认保留 365 天。
策略包里有什么,以及失陷的笔记本电脑能做什么
浏览器收到的签名策略称为策略包。它是面向整个组织的一个 JSON 文档:每一条规则、规则引用的列表、紧急停止设置、已吊销浏览器列表,以及每一个当前有效的已批准例外。它从不包含共享账号密码、验证器代码、设备凭据或签名密钥。这些内容单独传输,每次只用于一次登录,并且只保存在内存中。
这一设计带来了两个需要坦诚说明的后果。
每台笔记本电脑都保存着整个组织的策略包。 目前每个浏览器都会收到相同的策略包,因此每台受管笔记本电脑都保存着其他人的允许列表和组成员关系,以及每一个当前有效的例外及其被批准的值、审批人和给出的理由。按个人划分范围的策略包属于 LayerT 的设计,但尚未构建。请将策略包视为公司内部数据。
签名保护的是传输中的策略包,而不是静态存储的策略包。 浏览器只在策略包到达时检查一次,然后将其以普通 JSON 形式保存在浏览器配置文件中,并执行所保存的内容。静态存储时,只有笔记本电脑的磁盘加密对其提供保护。因此:
| 谁 | 他们能做什么 |
|---|---|
| 网页 | 对策略包无能为力。它无法读取扩展程序的存储,也无法向扩展程序发送消息 |
| 网络上的某人 | 将更新延迟最多 7 天,此后阻止规则会默认阻止。他们无法伪造、篡改或重放策略包 |
| 人员本人,或以其身份运行的软件 | 读取整个策略包。能够写入配置文件中扩展程序存储的软件可以更改它并关闭执行 |
| 管理员,或拥有管理员权限的恶意软件 | 在该笔记本电脑上使 LayerT 失效:编辑存储、移除策略、替换扩展程序或更改时钟 |
| 持有已锁定且启用磁盘加密的笔记本电脑的人 | 无法获取配置文件中的任何内容。仍然要吊销该浏览器 |
任何在浏览器内运行的控制措施都无法抵御同一台笔记本电脑上的管理员,LayerT 也不这样声称。它依赖每个受管设备群都应具备的控制措施:全盘加密、不给本地管理员权限、通过 MDM 强制安装 LayerT、禁用扩展程序开发者工具和开发者模式,以及一套同时完成吊销浏览器、停用人员和锁定笔记本电脑的处理流程。吊销浏览器会切断它与 LayerT 的联系并使其停止执行,但不会锁定它。
LayerT 自身服务器遭到入侵则是另一回事。控制 LayerT 应用程序的攻击者,只要保持这一访问权限,就可以请求 Cloud KMS 进行签名,而浏览器会接受他们签名的内容。他们无法将密钥复制出来,每一次签名请求都会被记录,移除其访问权限即可终止这一情况。完整的逐项分析请见策略包与设备失陷。
局限
- LayerT 评估的是表单提交以及向规则指定字段的粘贴。它不是通用的数据防泄漏方案。
- 紧急停止和新规则会在浏览器下一次同步时送达,而不是即时送达。
- 策略包在到达时校验,而不是每次读取时校验。能够写入浏览器配置文件中扩展程序存储的人,或拥有本地管理员权限的人,可以在该笔记本电脑上使执行失效。请不要让人员拥有本地管理员权限。
- 每个浏览器都保存着整个组织的策略包,包括其他人已获批准的例外。
- 有效期按笔记本电脑的时钟判断。
- 供 MDM 强制安装的签名扩展程序包已构建,将随 LayerT 的首次生产版本发布。强制安装可以防止人员在 Chrome 的设置中关闭 LayerT,但无法阻止管理员。
评判默认阻止设计的最好方法,就是尝试攻破它。欢迎带着您最棘手的问题来参加演示,我们会现场展示会发生什么。