2016-04-01 83 views
-1

我正在創建C#,Java桌面應用程序(exe),我需要加密用戶密碼和許可證相關信息,所以我找到了這個link。但問題是,如果我使用RSA公鑰/私鑰加密,那麼我將需要exe文件中的兩個密鑰來保持用戶和許可證信息可更改,但是如果有人反向工程師.exe文件並獲取私鑰,那麼數據將會損害。RSA安全私鑰在exe文件內

如何保護我的私鑰在.exe文件中?有沒有其他技術可以從反向工程中保存私鑰?

有一些混淆工具可以停止逆向工程,但仍然可以看到私鑰,使用這種工具非常昂貴。

回答

-2
  1. 我會使用服務器進行加密。然後,我可以向服務器發送發佈請求併發送密鑰,或驗證密鑰,或者刪除密鑰。錯誤:該應用程序是獨立的。
  2. 打包您的應用程序。例如在UPX中。錯誤:無法打包。
  3. 將密鑰存儲在註冊表中。錯誤:不安全。 您需要將其存儲在服務器上
+1

其獨立的桌面應用程序,可以運行沒有互聯網相同的反病毒應用程序。沒有服務器 –

+0

@VarunJain在用戶計算機上運行服務器也是一個選項,但我會編輯我的答案。 – HKYL

+0

無論如何,如果我使用本地服務器,然後直到有人可以逆向工程該服務器文件是給私鑰 –

1

對用戶密碼(如SHA)使用散列函數,並且不會在用戶系統上存儲私鑰。對於許可信息,生成RSA簽名的許可證數據並通過電子郵件或任何其他方式將其發送給用戶,您的應用程序只需要許可服務器的公鑰來驗證許可證數據。

+0

我正在使用許可證文件,並在應用程序啓動時,讀取並驗證當前時間戳並將其寫入同一文件中的加密格式,以便爲什麼我需要私鑰。 –

+0

有沒有解決方案,你的私鑰永遠不應該暴露。只要你的私鑰暴露出來,你的產品的安全性就完全消失了。 –

+0

我得到了關於用戶名和密碼的意見,但我如何處理許可證?因爲當用戶啓動應用程序時,我會跟蹤上次使用的日期,因此用戶無法使用系統日期進行播放。所以這就是爲什麼我需要加密這一點,所以我寫這個數據在同一個許可證文件。你能告訴我你的想法如何處理這些數據? –