可证明的“F”Ine

2020-07-02 23:49:50

有时人们潜入Signal的代码中寻找域名,然后他们给我们发来截图,询问他们是否应该担心:我们回复时会给出一个简短的解释,说明为什么没有问题,但我们理解其中的混乱。没有人会为在家庭作业中得到这样的分数而感到兴奋--而且你必须在下课后留下来问老师,在你关于暑假的报告中,“T”到底是什么意思(“T”对学校来说很酷吗?)。让我们更深入地看看到底是怎么回事。这个屏幕截图(和其他类似的截图)来自SSL实验室服务器测试等SSL扫描实用程序。SSL测试是快速检查服务器配置的有用资源。然而,他们有一个很大的盲点,因为他们中的大多数倾向于关注Web浏览器的兼容性和Web浏览器的性能。在应用程序开始接管之前,这曾经是一个更可靠的假设,但当你现在把一个新的服务器放到互联网上时,很有可能网络浏览器不会在连接的另一边。这一区别很重要。Web浏览器可以与之通信的端点数量基本上是无限的。人们可以输入随机的URL,并点击链接到已经在互联网上的数百万个网站中的任何一个。新网站一直都在上线(如果你打开你一直在考虑的博客,这个数字会增加1),所以在大多数情况下,我们无法提前知道连接的另一端会出现什么公钥。取而代之的是,浏览器附带了来自“证书颁发机构”的预定义信任根证书列表,并有效地将验证外包给这些第三方提供商。这些清单会变得很大。例如,Mozilla Firefox包括175多个受信任的根证书。这是很大的信任!让事情变得更复杂的是,浏览器供应商和操作系统通常维护自己的独特列表,而且每当添加或删除任何内容时,都会涉及到大量的策略和宫廷阴谋。有时,宫廷阴谋甚至涉及领导人住在真正宫殿的国家。现在您正在尝试建立到新博客的安全连接(恭喜BTW),但是有大量不同的根证书可以为您的域生成证书。任何行为不端、恶意或受损的证书颁发机构都可能通过单方面颁发默认接受的“有效”证书来启用静默的中间人攻击,因为该证书是由受信任实体颁发的。像证书透明化这样的努力旨在通过揭示一个完全不透明的过程来帮助减轻这种威胁,但它们不能检测到每一个不良行为的实例。这有点像在一本儿童书中寻找隐藏的物体,然后得知有超过175个不同的插图画家,他们可能会画出你试图寻找的真实沃尔多/沃利的相同版本。在这一片混乱之中,仍然有可能在每个SSL扫描仪中轻松获得“A”。只需从俱乐部中的某个证书颁发机构获得证书,将正确的魔术行粘贴到配置文件中,您就可以开始工作了。它不需要这么乱,也不需要这么冒险。与Web浏览器不同,应用程序需要与之通信的端点数量通常可以用一只手来计算-更重要的是,应用程序开发人员控制着连接的两端!这改变了一切。不再需要生活在攻击者可以发出假消息的世界中(但是要工作!)。通过危害任何根证书获得SSL证书。取而代之的是,开发人员可以将他们选择的证书颁发机构直接“固定”到应用程序中,并告诉应用程序拒绝任何不匹配的证书。这看起来好多了。如果开发人员选择了主要浏览器信任的证书颁发机构,“A”级仍然只需扫一扫即可。不过,还有改进的空间。通过生成您自己唯一的脱机信任根并将签名证书固定到应用程序中,可以进一步缩小潜在危害的范围。这种方法从证书签名等式中完全消除了第三方信任,这正是Signal所做的。使用我们自己的信任根是处理SSL/TLS连接的一种更安全的方式。以浏览器为中心的证书扫描工具总是认为有问题,但一切都是“F”。浏览器信任无关紧要,因为Signal不是Web浏览器。有时我们白日做梦,想着解决这个扫描仪难题的可能方法。如果有一种方法可以指示扫描器何时域是应用程序端点(而不是浏览器端点),或者何时域正在使用嵌入到应用程序中的自定义信任根以提高安全性,那就太好了。至少现在我们会有一个更详细的解释准备好下次我们的屏幕截图