有一些问题(C#,Java)涵盖了如何实施自动更新的问题。最初似乎很容易提供自动更新,似乎没有充分的理由不为大多数软件提供自动更新。
但是,似乎都没有涵盖自动更新的安全方面。
我的主要问题是,无论出于何种目的,互联网都是一个狂野的西部,人们无法对他们收到的任何数据做出任何假设。通过互联网进行自动更新显然存在风险。
公司计算机被感染,欺骗DNS(只有一小部分获胜),并使其他公司的计算机认为通用应用程序的更新服务器在其他地方,他们下载“新”应用程序并被感染
作为开发人员,有哪些可能的攻击,以及我应采取哪些措施来保护我的客户免遭滥用?
- 亚当
答案 0 :(得分:6)
通过正确使用加密技术,您的更新可以非常安全。使用SSL保护您分发更新的站点。使用GPG / PGP或其他方式为您的所有更新签名,让您的客户在应用更新之前验证签名。采取措施确保您的服务器和密钥保持极其安全。
充足,非常主观。什么是足够的网络游戏,可能完全适合我们的核导弹的安全系统。如果有人设法破坏您的安全,您必须决定可能发生多大的潜在损害。
答案 1 :(得分:2)
最明显的攻击是攻击者通过他的“邪恶”更新服务器提供更改的二进制文件。因此,您应确保使用数字签名验证下载的数据是否来自您。
为确保安全,显然您应该避免分发签名密钥。因此,您可以实现RSA message signing
的某些变体答案 2 :(得分:1)
通过SSL连接到更新服务器就足够了,前提是如果客户端获得无效证书并且您的服务器需要协商合理级别的连接安全性(并且客户端也支持),则拒绝连接。
然而,实际上,您所做的几乎任何事情都至少与您的用户无论如何首次安装软件的路线一样安全。如果您的用户最初通过普通的http下载您的安装程序,那么开始保护更新的内容为时已晚。
即使他们通过https或数字签名获得您的初始软件,在某种程度上也是如此 - 因为大多数用户可以很容易地被说服在他们看到的几乎任何安全警告上点击OK。
答案 3 :(得分:1)
似乎没有充分的理由不为大多数软件提供自动更新。
有充分理由不强制更新。