2010-07-30 45 views
4

我可以分發一個使用用戶無法訪問的密鑰的.NET應用程序,但該應用程序可以嗎?如何在.NET中安全地使用二進制文件分發密鑰?

請注意,我使用單詞分發,意思是應用程序交付在用戶的計算機上運行,​​而不是在雲或羣集中運行。

+0

你試圖完成什麼?也許有你沒有考慮過的選擇。 – 2010-07-30 14:12:22

+0

@Lasse我希望只有一部分計算機可以訪問web服務。它們可以通過硬件序列號識別,可通過客戶端應用程序訪問。 – 2010-07-30 14:17:14

+1

這裏的問題不是傳遞密鑰,而是要檢測應用程序/用戶是否在說謊。我想你會發現這是不可能做到100%的。你所希望的只是一個「足夠好」的解決方案。 – 2010-07-30 14:20:29

回答

6

您的應用程序中的任何內容均可由熟練的用戶訪問。

這就是爲什麼遊戲等從存儲程序中的關鍵算法轉移到驗證遊戲製造商所擁有的外部服務器的原因。

如果你只是試圖阻止平均喬,只是散列和存儲它像任何其他變量..就像一個門上的掛鎖,它不會阻止確定的用戶,但保持誠實的男人誠實。

+0

我認爲你是對的。在遊戲認證中,如果一個密鑰被多臺計算機使用,他們不能只阻止盜版者,所以他們只能阻止盜版者和使用該密鑰的原始盜版者。所以即使這個服務器存儲機制雖然比替代方案更好,但仍然有其缺陷。 – 2010-07-30 14:14:38

+0

沒有什麼是完美的。這是遊戲開發世界的軍備競賽,也是遊戲製造商由於各種原因而失敗的原因。一般情況下,如果他們覈對密鑰,原始擁有者可以聯繫並在一段電話時間內獲得新的工作密鑰。 99.99%的時間,簡單的掛鎖是最好的選擇。有時加密狗附件是「要走的路」,但我覺得這些非常非常非常煩人,所以不會推薦它們。 – Caladain 2010-07-30 14:21:31

+0

很好的答案。安全性很少涉及創建一個超安全的系統,它通常是不值得花時間和精力去打破 – zebrabox 2010-08-01 22:52:51

1

根據您要加密的內容,您需要提供公鑰,保留私鑰並自由分發。你想要完成什麼?

1

不是。你可以讓煩人來檢索密鑰,但是如果它可以被程序使用,用戶也不可避免地閱讀它。

2

你的問題有兩個一般答案。

如果你的問題是這樣的:

是否有可能對我來說,通過沿着我的可執行文件的關鍵以任何方式,使得它100%不可能任何用戶訪問,但還是我的程序能訪問它?

然後答案是這樣的:不,你不能。

您的代碼可以做的任何事情,用戶也可以做得很好。

所有你能做的就是讓用戶很難。加密它,隱藏它。


如果你的問題是這樣的:

是否有可能對我來說,通過旁邊我以任何方式,使得它不太可能,用戶可以訪問可執行的關鍵,但仍然是我的程序可以訪問它嗎?

那麼答案是這樣的:請參閱第一個案例的答案,特別是關於使用戶難以做到的部分。

相關問題