Dot-Net

保護部署在“敵對”環境中的系統

  • June 1, 2012

在我的公司,我們正在開發一個由多台伺服器組成的大型系統。該系統由大約 5 個邏輯組件組成。數據儲存在 XML、MS SQL 和 SQLite 中。這是一個 .Net 系統(大部分),組件使用 WCF 和一些自定義 UDP 進行通信。客戶端主要通過自定義 UDP 或 WEB(ASP.NET & Silverlight)訪問系統。

保護通信很容易,一些 SSL 和 WCF 上的一些安全性,我們就完成了。

我們面臨的主要問題是系統需要部署在客戶的站點上,我們不一定信任的客戶。我們需要保護伺服器上的數據以及軟體本身免受逆向工程的影響。兩者對我們都至關重要。

我們還需要一個終止開關,我想要一些破壞數據和軟體的東西,根據命令,或者如果在一段時間內無法打電話回家。

我正在考慮的方向是使用 TPM 或類似的東西 - 一些硬體加密解決方案,結合我們可以在內部保留的另一個服務來加密伺服器上的所有軟體和數據,以便密鑰將來自我們的伺服器安全地在我們的站點中,並且可能會從 TPM 中屏蔽記憶體。

你建議如何解決這樣的問題?


更新04/02 我正在尋找實用的建議,或者對可以幫助我的產品提出建議,所以我開始賞金……

伙計們,我們基本上是把我們的機器放在客戶的網站上(出於商業和實用性的原因),我們擁有那台機器,客戶在幾小時內收到他支付的一切,他可以隨心所欲地處理數據。但是我在那台機器上執行的算法,以及儲存在那裡的一些數據是我們想要保護的商業機密。理想情況下,如果我不說沒問題,我希望機器根本不工作,甚至不啟動,如果沒有我的好,機器上的所有內容都保持加密狀態。記憶體窗簾看起來也是在執行時保護機器的好方法。

理想情況下,我希望所有機器上的 HD 和儲存在有人用螺絲刀靠近它們時立即爆炸…… :-) 但我認為這太過分了……


更新10/02 好的,在進行了一些研究之後,我認為我們將嘗試與 PS3 加密系統相同的方向,除了我們將引入用於解密軟體和來自我們伺服器的數據的密鑰。這樣做我們可以在我們的機器上決定我們是否信任請求密鑰的伺服器,我們可以通過重新安裝機器來獲得一個終止開關。這可能是基於 TPM 或類似的東西,也許是英特爾的 TXT ……我也對記憶體簾作為一個重要的安全功能很感興趣……

順便說一句,我們無法通過將系統的有價值部分移動到我們的站點來解決這個問題,這既是因為業務需求,也是因為它在技術上不可行——我們需要巨大的頻寬……

實際上,您所要求的是聖杯。這大致相當於對遊戲控制台所做的,在遊戲控制台中,您有一個在不受信任的環境中執行的受信任平台。

考慮一下您是否可以從第一天起就將機器視為受到損害。如果您可以在這種假設下工作,那麼事情對您來說會變得容易得多,但這在這裡聽起來不太可行。

在實際保護它方面,有幾個問題:

  • 您必須加密文件系統並使用硬體解密
  • 您必須將您的應用程序彼此隔離,以便一個安全問題不會危及其他應用程序
  • 您必須為安全問題的發生做好計劃,這意味著實施安全管理程序等緩解策略

我知道這些都相當模糊,但這確實是過去幾年遊戲機保護的歷史——如果你對如何一遍又一遍地解決(和破壞)這個問題感到好奇,看看遊戲機製造商.

它從未完全成功地完成,但您可以顯著提高進入門檻。

引用自:https://stackoverflow.com/questions/4868170