2012-08-02 51 views
0

我有一個客戶端 - 服務器應用程序,它允許用戶通過網絡在服務器上運行任何代碼。我想保護用戶免受連接到其他服務器的影響,該服務器的行爲與真實情況類似,但竊取密碼,我該怎麼做? 服務器和客戶端都不能訪問互聯網,證書頒發機構是不可能的。有沒有其他方法可以驗證它是我正在與之交談的代碼,即使有人獲得源代碼?如何保護來自欺騙服務器的密碼

回答

0

最簡單的解決方案是將SSL與自簽名證書一起使用。然後將服務器的證書硬編碼到客戶端。大多數SSL庫提供了一些方法來推出自己的證書驗證邏輯,或更改有效CA的集合。

這假定您可以保留服務器的證書的祕密。


原則上SRP可能是一種替代方案。但是你不應該自己實現它,因爲很容易發生似乎可以工作的細微錯誤,但是會使系統不安全。一些SSL庫(如GnuTLS)支持SRP。

+0

確定什麼是保護服務器證書的方式?任何人都可能購買一臺服務器並擁有管理員和硬件訪問權。 – 2012-08-02 09:32:00

0

您的攻擊者是否可能獲得對真實服務器的root訪問權限?如果不是,那麼您可以建立一個自簽名證書(如CodesInChaos所建議的)並依賴操作系統權限來防止未經授權的用戶讀取私鑰文件。然後你可以確信你的客戶只能連接到你的真實服務器(通過SSL)。

如果攻擊者可以獲得對真實服務器的root訪問權限,則需要處理很多問題。首先,攻擊者可以隨意讀取進程內存,因此任何暴露在服務器內存中的敏感資料(例如您提到的密碼)都可以訪問。此外,攻擊者可以竊取您的私鑰並建立自己的服務器(但是,爲什麼他們只能窺探真實的服務器內存)。