2009-02-23 29 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