是否可以创建一个依赖 HTML5 网络套接字的安全聊天网络应用程序?

信息安全 tls javascript html-5 网络套接字
2021-09-10 11:36:05

是否可以仅使用 HTML5 和 Javascript 创建安全的聊天 Web 应用程序?

如果服务器不存储消息,只是使用 websockets 中继它们,并且通过 SSL 完成传输,可能会有哪些安全漏洞?

促使我问这个问题的原因是我想知道为什么 Cryptocat 被实现为浏览器插件。我认为它被认为比纯 HTML5 解决方案更安全,但为什么呢?

2个回答

实际上,这与将 CryptoCat 移至浏览器插件/扩展无关。甚至根本与 SSL 无关。考虑到这一点,斯蒂芬的回答有些误导。我会尝试解决这个问题。CryptoCat 仍然是 JavaScript 和 HTML。

请全神贯注,假设 SSL 正在完成它的工作,并且您 100% 确定您正在连接到真正的 CryptoCat 服务器。如果 Nadim(CryptoCat 背后的人)被法律强制透露您未来的对话,他只会检测您何时连接(从您的 IP)并向您发送一些恶意 JavaScript,这将使您的浏览器使用自定义密钥并因此给自己解密您的对话并将其提供给 FBI、NSA、CIA 等的能力。

这种形式的安全性称为基于主机的安全性,您完全信任服务提供商。是的,你的东西是加密的,但是加密/解密逻辑来自服务提供商,他们可以向你发送他们想要的任何东西。CryptoCat为此受到 Schneier和其他安全研究人员的批评。

通过将代码移动到浏览器插件,现在您只需在第一次下载代码时信任源代码。您和服务器之间仍然进行通信,加密和解密仍然在您的浏览器中进行,代码仍然是 JavaScript 和 HTML5。这里唯一的区别是下次连接到 CryptoCat 服务器时,您不需要信任他们发送给您的代码。浏览器中的代码,您可以随时审核并检查它。

Patrick Ball就这个主题写了一篇非常有趣的文章他解释了基于主机的安全性和其他相关问题的概念。它将帮助您了解有关此事的大局。

直接回答你的问题,是的,有可能。CryptoCat 就是一个很好的例子。

本质上,实现这种事情的唯一方法是将 Javascript 和 HTML 发送到浏览器。

但内在的问题是整个系统的安全性完全依赖于向浏览器提供HTML 和 Javascript。这归结为 SSL 和证书颁发机构系统。所以充其量,任何纯 HTML 和 Javascript 应用程序的安全性并不比我们现有的 CA 系统好——如果你可以利用 CA 系统(已经完成),你就可以破坏这种聊天的安全性应用。