客户机和服务器的TLS连接在整个Internet的任意点上都存在着各种不明确的“中间框”。
这些中间盒的一个可能意图是执行协议标准,这在理论上听起来很棒,但在更新到新版本的协议时阻碍了快速采用--就像从TLS 1.2和更早版本迁移到TLS 1.3时所发生的情况一样。
解决方案(好,威慑)在未来再次发生这种情况是由RFC 8701指定的润滑脂协议(应用生成随机扩展和支持扩展TLS扩展性)。
它工作的关键在于可以添加新特性/构造的地方(TLS扩展、TLS版本、TLS密码等)。让TLS客户端偶尔发送由润滑脂rfc指定的随机值,以更经常地提示这些中间框错误,并将更多的注意力放在修复这些错误上,甚至阻止在发现未知值时丢弃数据包的行为。
我的问题是关于上面的斜体部分..。由于润滑脂RFC 显式列出并保留润滑脂值集。,中间盒可以被更新以忽略这些值,但继续删除其他未知值--实际上使我们回到了油脂原本要修复的初始问题上。
如果润滑脂随机选择要使用的值,但没有将值限制在预定义的列表中,我可以看出它如何阻止未来的中间人在看到未知值时丢弃数据包,因为它们总是“看到未知的值”。
但是由于“未知值”实际上是在RFC中已知和指定的.我情不自禁地认为我们只是在重复造成最初问题的情景。
发布于 2022-08-19 04:03:56
客户机和服务器的TLS连接在整个Internet的任意点上都存在着各种不明确的“中间框”。
我假设您指的是公司中的SSL拦截代理和SSL终端负载平衡器。
这些中间盒的一个可能意图是执行协议标准,这在理论上听起来很棒,但在更新到新版本的协议时阻碍了快速采用--就像从TLS 1.2和更早版本迁移到TLS 1.3时所发生的情况一样。
如果目的是强制执行协议标准,那么由于这些盒子与协议标准不一致,这一意图就失败了,也就是说,点脂正试图尽早检测。具有新密码器、签名算法、协议版本和扩展的扩展性已经成为TLS协议的一部分,如果不能很好地处理这一问题,就意味着不遵循协议标准。
请注意,这样的SSL拦截器是TLS连接的端点。因此,除了可能对协议版本或密码强度实施最低安全要求外,它们不需要强制执行特定的协议。任何他们不理解的东西都可以被忽略,就像TLS标准所定义的那样。
在现实中,这些问题通常不是由执行标准的意图造成的,而是通过假设如何使用这些标准以及在这些假设中可能实现的快捷方式和性能优化来造成的。在实践中,这导致了关于ClientHello大小的错误假设或不能简单地忽略不支持的TLS扩展。
..。中间盒可以被更新以忽略那些值,但是继续删除其他未知的值
从理论上讲,这是可以做到的。在实践中,这不仅意味着像以前那样忽略TLS的可扩展性,而且还显式地拒绝扩展性。不过,这些中间盒并不主要是为了阻止连接,而是为了控制连接,并最终允许大多数连接。因此,意识到可扩展性并明确否认它不符合这类中间盒的用户和客户的利益,并将导致代价高昂的支持和错误修复。因此,供应商不太可能简单地围绕油脂工作,但更有可能的是,润滑脂会及早发现错误的假设--即它的目的。
发布于 2022-08-19 00:25:18
这些“中间盒”称为“路由器”,不涉及TLS连接。它们的任务是将数据包从一个网络路由到另一个网络,以便目标服务器能够接收它们并建立连接。或者,TLS连接可以终止在负载均衡器,在这种情况下,负载平衡器成为服务器。
是什么使服务器不能忽视实际未知的实例而忽略连接呢?
没什么。这只是一种很糟糕的行为方式。这是一种“两个世界上最糟糕的情况”。正如你在问题中所述,油脂存在的原因是有一种已知的方法来发现潜在的难以诊断的问题。所以利用它是个好主意。
为什么不选随机值呢?
因为这可能会干扰未来的TLS扩展。假设未来的扩展使用ID 0xCAFE
来标识自身,表明客户端支持CAFE扩展。如果GREASE随机使用0xCAFE,那么known就不再是测试端点对未知扩展的反应的工具,而是成为一个模糊测试工具--端点如何对已知扩展上的任意输入做出反应。
这是不可取的,因此列出并保留一组润滑脂扩展,并要求它们与未知的扩展不能有任何不同的处理方式,是在这里采取的最佳行动。
我们不是在重复同样的错误吗?
不,最初的错误是相信客户端总是会发送已知的扩展到端点。润滑脂应该通过随机发送“未知”扩展来解决这个问题。
这已经导致了很多bug被修复,这对每个人都有好处。以一种特殊的方式处理润滑脂扩展意味着选择退出免费的错误测试,这在任何方面都是不可取的。
发布于 2022-08-19 07:41:32
你写道:
可以更新中间框以忽略这些值,但继续删除其他未知值。
那完全没问题。只要连接仍然有效,它们就可以丢弃它们想要的任何值。
润滑脂ChromeStatus页 (归档这里)对整个油脂点有一个非常简短和很好的解释:
TLS客户端提供服务器选择的16位代码点(例如密码套件)的列表。为了保持可扩展性,服务器必须忽略未知值。但是,服务器可能有错误并拒绝未知的值。这些服务器将与现有客户端进行互操作,因此错误可能会在不知不觉中传播,从而破坏整个生态系统的可扩展性。我们将保留一些价值,随意宣传,以防止这类错误,以防止被破坏的服务器广泛存在。
https://security.stackexchange.com/questions/264198
复制相似问题