我应该提供 https 下载吗?

信息安全 tls
2021-08-21 10:58:07

我看过几篇文章,如Linux 下载安全的悲惨状态,建议您应该通过 https 提供软件更新的下载。但是,如果您的网站不需要登录即可下载更新,这样做有什么意义吗?

3个回答

绝对有道理。正确配置的 HTTPS 包括身份验证检查,以确保服务器是您想要的站点。从技术上讲,它确认客户端指定的主机名(即:您页面的 URL 栏中的内容)与 SSL 证书上的名称匹配。假设一个站点的私钥没有被盗,当你使用 HTTPS 通信时,你就知道你在和谁说话,并且中间没有人 (MiTM)。当您使用直接 HTTP 时,您没有这样的保证。您可能正在与攻击者的站点交谈,或者可能有 MiTM 修改了真实站点发送给您的内容。

此 HTTPS 身份验证与网站身份验证相反,因为 SSL 身份验证向客户端验证服务器,而网站身份验证向服务器验证用户身份。唯一与下载相关的网站身份验证是您希望限制或以其他方式监控谁在执行下载。

为了补充@NeilSmithline 的答案,TLS(以及因此 HTTPS)还包括服务器身份验证之外的两个功能:加密(提供隐私/机密性)和完整性(确保数据不被篡改)。这两者都可能非常重要。

对于下载站点,加密的相关性实际上只是归结为提供下载的文件是否有人在某处可能关心其他人是否下载。例如,我下载了很多归类为“黑客工具”的东西,因为我的工作需要使用这些东西。一些政府反对人们下载此类工具。TLS 不会让人无法告诉我我访问了该站点——我会使用 Tor 或类似的东西——但它可以让我合理地否认我从该站点下载的内容。

诚信更为重要。虽然很多人没有意识到这一点,但加密本身并不能提供完整性。如果我(客户端)和您(提供下载的服务器)之间存在中间人攻击者,攻击者可以修改我的下载内容。根据使用的密码,如果服务器经过身份验证(MitM 只是不干扰 TLS 握手,但仍会监视所有内容)并且网络流量被加密(攻击者可以翻转密文中的位,特别是如果您使用的是流密码或反模式分组密码,并且您会将下载解密为与服务器发送的内容不同的内容)。例如,这可用于将恶意软件注入您的下载内容。

您可以尝试在不使用 TLS 的情况下提供完整性,方法是显示文件的加密摘要(例如 sha256sum)。理论上,如果服务器的文件散列与客户端的文件散列匹配,则文件没有被篡改。实际上,如果您不使用 TLS,客户端无法知道服务器的文件哈希是什么!攻击者可以像他们自己修改下载一样修改摘要,所以当我对我的下载进行哈希处理并看到哈希匹配时,这告诉我的只是下载与攻击者想要我看到的内容匹配。(此外,手动检查哈希需要用户费心去做,而 TLS 会自动且透明地执行所有完整性检查;您

许多站点在从镜像站点下载内容时会忽略 HTTPS。众所周知,当主站点产生过多流量并且镜像站点可以帮助用户快速获取内容时,镜像站点很有用。如果网站在下载内容时使用 HTTPS,那么几乎没有什么好处会导致用户喜欢

  • 内容的完整性将增强,因为内容将通过检查内容的校验和通过安全通道下载。微软等许多网站通过安全通道为 Windows 提供安全更新。目前,SHA-256 是理想的加密校验和。用户确信下载的内容不会被更改。

  • 在下载站点上使用 HTTPS 将检查下载链接、校验和、签名,用户将没有任何借口下载应用程序或其他内容。

  • HTTPS 增加性能开销的说法是神话,相反,计算机硬件和软件的不断增长的能力已经在名义上解决了这个问题。

  • HTTPS 下载还确保用户正在与他/她打算这样做的网站交谈。因此,不存在中间人攻击的问题。

大多数黑客将恶意软件隐藏在用户流量很大且用户总是在下载内容后的游戏或娱乐网站中。很少有发行版像 Fedora、elementary OS 在安全环境中提供 HTTPS 下载。