我在最終用戶機器上將知識產權編碼爲.net 2.0完全受信任的程序集(.exe + dll),我希望避免被黑客攻擊/反向工程(WebService /雲計算解決方案不是一種選擇)。以下是我爲了實現此目標而收集的技術列表。.Net程序集安全 - 防止黑客攻擊/反向工程
我的問題是:
- 是我的假設是正確的,還是我做錯事的一個或多個的技術?
- 此列表是否足以防止惡意攻擊,或者我應該添加其他保護措施嗎?
在此先感謝。
-
建議的方法
- 註冊使用相同的強名稱密鑰的所有組件。
這有兩個好處:- A.確保任何修改組件將使其無效,
- B.所有組件將具有相同的公鑰,通過它們可以相互識別。
- 對程序集進行數字簽名:兩者都讓用戶知道執行的代碼來自正確的源代碼,並且 - 添加另一個標識組件,通過該組件可以識別對方。
- 通過抓取調用堆棧並驗證所有調用者在「社區」中來強制執行上述操作。
可能的潛在客戶:- Hallgrim的想法this S.O. thread。
- 丹尼爾布魯克納在this S.O. thread的增加。
- 這.Net Security Blog Post,它結合了這兩種解決方案。
- 使用AOP(例如Spring.NET)將調用堆棧搜尋代碼注入某些/所有方法。
- 這主要是因爲在.NET程序集中沒有單個入口點(如Win32 DLL的DllMain())。
- 混淆所有程序集以阻止反向工程和反射執行嘗試(強制名稱簽名將在混淆後執行)。
- 集成System.ComponentModel.LicenseProvider機制。
- 利用「InternalsVisibleTo」程序集級別屬性爲了在預定義的程序集集中公開內部信息。
- 可能使用NGEN將解決方案轉換爲本地代碼。
要考慮的問題
- 實現上述將最有可能引入性能損失,所以對時間要求嚴格的處理,例如,應小心處理的部分或全部。
- 對於這種完全信任的程序集,CAS似乎並不重要。
這不是博客。請遵循發佈指南(摘自常見問題解答):「您應該只根據您面臨的實際問題提出實際的,可回答的問題。聊天,開放式問題會降低我們網站的實用性,並將其他問題推到首頁。 「 – Joe 2012-02-16 19:19:58
「這不是單一/最佳答案類型的文章。」然後,StackOverflow *不是這種幫助的最佳位置。 – Joe 2012-02-16 23:54:53
需要採取的措施,我將重新說明這個問題。 – AVIDeveloper 2012-02-17 00:25:53