2009-02-23 30 views
5

有几个问题(C#Java)涵盖了如何实现自动更新。它似乎最初很容易提供自动更新,似乎没有好的理由不为大多数软件提供自动更新。自动更新 - 什么是“足够”的安全性?

但是,似乎没有涵盖自动更新的安全方面。

  • 安全性如何是自动更新呢?
  • 他们应该安全多少?
  • 它们有多安全?

我的主要问题是,对于所有的意图和目的,互联网是一个狂野的西部,不能对任何他们接收到的数据进行任何假设。通过互联网自动更新似乎具有固有风险。

公司计算机受到感染,欺骗DNS(只有一小部分胜利),并使其他公司计算机相信公共应用程序的更新服务器在别处,他们下载'新'应用程序并成为感染。

作为一个开发者,有什么可能的攻击都在那里,我应该采取什么措施来保护我的客户不受侵害?

- 亚当

回答

6

正确使用密码术,您的更新可能非常安全。使用SSL保护您通过SSL分发更新的网站。使用GPG/PGP或其他方式签署所有更新,使您的客户在应用更新之前验证签名。采取措施确保您的服务器和密钥保持非常安全。

充足,是非常主观的。什么是适合网络游戏,可能完全适合我们的核导弹安全系统。如果有人设法破坏您的安全,您必须决定可能会发生多大的损害。

2

最明显的攻击是攻击者通过他的“恶”更新服务器提供改变的二进制文件。因此,您应该确保使用数字签名可以验证下载的数据是否源于您。

为了确保安全,显然你应该避免分发签名密钥。因此,您可以实施一些变体RSA message signing

1

通过SSL连接到您的更新服务器就足够了,只要你的客户会拒绝,如果他们得到一个无效的证书,并且服务器需要协商连接的安全性处于合理水平(和客户端也支持)来连接。

然而现实几乎任何你做将是至少通过该用户获得第一无论如何安装软件的路径一样安全。如果您的用户最初通过普通的http下载安装程序,现在就开始保护更新的安全已经太迟了。

也是如此,即使他们得到通过您INTIAL软件在一定程度上HTTPS或数字签名 - 为大多数用户可以很容易地说服单击OK几乎他们上看到任何安全警告。

1

似乎没有很好的理由不为大多数软件提供自动更新。

有很好的理由不强制更新。

  1. bug修复可能会破坏代码
  2. 用户可能不想冒险破坏依赖旧的功能
+0

这是一个好点的生产系统 - 的原因,以避免自动更新覆盖相当不错这里:HTTP ://stackoverflow.com/questions/558535/should-a-web-app-have-automatic-updates – 2009-02-23 18:20:00