2013-02-11 175 views
2

參照answer of this question公鑰軟件許可解密我不明白,如果私有密鑰保存在許可服務器和公鑰運在應用軟件許可方案如何能工作可執行文件,而不是反之。存儲在應用程序二進制

我嘗試做以下的軟件許可方案:

  1. 用戶在購買後得到一個產品ID(基於GUID),並使用該應用程序內將其激活。
  2. 應用程序連接到使用RSA公鑰發回加密文本的許可證服務器。該文本(許可證)將存儲在用戶的硬盤上。
  3. 每次應用程序啓動時,它需要使用RSA私鑰解密該許可證,以便提取不同的參數,如產品版本,產品限制,註冊什麼公司等

如何應用此解密如果它沒有私鑰但是公鑰有許可證文本?

謝謝!

編輯:

  1. 如果使用許可加密密鑰僅適用於服務器端,而不是市民,我們可以稱之爲一個私鑰?在這種情況下,如果一方擁有加密密鑰,而另一方(公衆)擁有解密密鑰,那麼擁有解密密鑰的一方是否可以獲得加密密鑰?關注點基於stackoverflow上的各種主題,在給定私鑰的情況下生成公鑰並不困難。如果你有私鑰,你可以有兩個密鑰。
  2. 這個想法是,一旦軟件被激活,它不應該再需要連接到許可證服務器。

回答

4

申請應明文存儲的細節。

在註冊時,服務器應簽署使用私鑰那些細節(包括機器標識)。

每個應用程序啓動時,它應該使用公共密鑰驗證簽名。

+0

我需要加密的那些細節,它們包含有關應用程序使用的限制,如基本版,企業版等信息,如果是在純文本應用程序可以通過簡單地改變文本解鎖。 – 2013-02-11 14:43:06

+2

@MarcusFrenkel服務器簽名不會驗證數據是否被更改。 – 2013-02-11 18:32:10

+0

@MarcusFrenkel:簽名就是這樣。如果用戶修改任何內容,簽名將不再匹配,並且用戶不能在沒有服務器的公鑰的情況下重新簽名。 – SLaks 2013-02-11 18:35:51

3

我真的沒有看到所有這些東西的需要。

爲什麼不在驗證時簡單地建立與服務器的連接,讓服務器生成一個包含所需參數的文件(甚至是純文本),然後讓服務器簽署該文件並將其返回給軟件?

客戶機可以讀取文件,然後簡單地驗證使用的許多數字簽名算法是在那裏一個TE簽名。

+1

我會做就像你所建議的那樣,我必須先接受其他答案,非常感謝你。 – 2013-02-11 19:43:38

+0

不用擔心,祝你的解決方案得到實施和部署。 – 2013-02-11 19:44:34