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

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