2009-02-17 67 views
5

我有這個java swing應用程序,我打算通過互聯網銷售。目前我傾向於使用java webstart部署應用程序。該產品將被授權用戶在一臺計算機上一次只能使用該程序。我對這種模式的盜版感到擔憂。我想安裝一些安全功能來執行許可證模式。目標至少是讓授權用戶難以將安裝的產品(包括許可證密鑰)複製到未經授權的用戶。下面是我在看現在的選項:如何防止java webstart應用程序盜版

  1. 強制用戶在每次程序啓動時間驗證到母船與一個用戶名/密碼。

  2. 只需在用戶PC上的某個地方(隱藏?)安裝許可證密鑰,然後他們已經註冊並付款。在運行時,驗證是否安裝了有效的許可證密鑰。

  3. 使用/構建基於用戶計算機的硬件指紋的安全軟件包。每次啓動應用程序時都會計算此指紋,並使用某種散列與本地安裝的許可證密鑰進行比較。此許可證密鑰將僅對此硬件指紋有效。

這裏的一個問題是,一旦安裝了該應用程序,沒有任何運行時需要對應用程序聯繫母船,不是檢查使用Java Webstart的應用程序更新等。應用程序執行的所有操作都是在本地執行的,並使用swing將結果顯示給用戶。因此,涉及母船的任何解決方案基本上都意味着建立一個服務器基礎設施,僅用於許可證驗證。

我想我正在尋找的是基於java的東西,至少有點安全,易於部署,對用戶來說不是一件痛苦的事情。你使用了什麼安全/授權方法?

編輯:我應該補充一點,我並不一定會尋找一顆銀子彈來防止絕對每個人都擊敗安全。總會有人有足夠的時間來找到完成任務的方法。我不太關心這些人。我基本上是想讓一個臨時用戶很難複製許可密鑰併發送給他的好友。正確實施,解決方案應該說服臨時用戶購買它比較簡單。

+0

計算您的硬件指紋並與母艦進行談判僅用於許可目的的軟件?聽起來像一個**的痛苦,並讓我想起那個Windows激活的東西。請不要這樣做。 – 2009-11-25 22:08:14

回答

10

我會說(2)是你最好的選擇。如果用戶購買了新的主板,那麼您已經說過(1),(3)會導致問題。 (2)對合理的計算機用戶不會有太大的保護,但它也不應該引起太多問題。

但是最終,你所能做的任何事情都不會阻止一個確定的用戶盜用你的軟件。

事實上,最有效的反盜版軟件的發展戰略是所有最簡單的一個:

  1. 有一個偉大的產品再用。
  2. 爲此收取公平的價格。

- Jeff Atwood

9

IMO試圖在客戶端執行復制保護可能比它的價值更麻煩。你會花費無數小時試圖超越你的客戶(你可以花費數小時改進你的產品),但最終海盜總是贏。

您還有其他的選擇,但:

  1. 有一個有吸引力的定價模式,並使其非常簡單人們購買你的產品。如果您擁有足夠低的進入門檻,並以尊重和信任的態度對待客戶,而不是懷疑,則可以將盜版風險降至最低。
  2. 將您的產品綁定到某種在線服務上。放棄客戶,但收取服務費用。這就是暴雪在魔獸世界中所做的,這也是少數幾個沒有盜版問題的遊戲之一(他們有很多其他問題,但這是另一回事)。
+0

只是一個挑剔的問題,但第二點的例子是錯誤的:暴雪向客戶收取您的費用,他們確實存在盜版問題,這就是爲什麼他們追求編寫服務器仿真軟件的人。 – Powerlord 2009-02-17 17:36:07

+0

他們確實存在盜版問題,但這些人無法獲得與支付費用相同的經歷。他們被困在人口較少的僞劣私人服務器上。 – ryeguy 2009-02-17 17:42:23

+0

我的關於魔獸世界的例子可能並不完全準確,但我的觀點是,在PC遊戲公司中,暴雪的盜版問題比其他大多數問題要少得多(與Crysis這個盜版率很高的旗艦遊戲的慘淡銷量相比)。 – 2009-02-18 08:02:28

3

老實說,除非該計劃實際上是從服務器需要數據的功能(如弗雷德鄰說,魔獸世界的需要;並且是真實的),那麼就什麼你可以做客戶端,這將是完全傻瓜證明。你有3個想法可以很容易繞過。服務器/登錄可能有點困難,但我甚至看到裂縫竟然在本地創建了一個虛擬登錄服務器,因此程序認爲它正在進行身份驗證。

防止盜版的唯一正確方法是讓程序需要運行一些服務器端邏輯。例如 - 你正在製作調整圖像大小的軟件(我知道,我知道)。如果原始圖像被運送到您的服務器並在那裏調整大小然後發送回客戶端(而不是客戶端進行調整大小),那麼您將是安全的,因爲您的服務器可以很容易地使用某種登錄系統進行保護。沒有一個有效的用戶名或密碼(或者如果他們試圖生成一個假的),該程序將是無用的。

如果您實現了客戶端功能,無論您做什麼,都可以訪問它。

2

的三種溶液:

首先需要的網絡連接做任何事情。如果用戶不能脫機使用,用戶不會很高興。谷歌必須處理它的辦公軟件。除非位置是隱藏的,並且隱藏的位置有其自身的困難(例如,一些人不喜歡安裝喜歡將事物隱藏在不同位置的應用程序),並且不是很'''',而是不''''''''''''''''''''''''''''''。無論如何都不安全。

第三個可能會工作,直到用戶做了一些改變指紋的計算機(我不知道你會檢查什麼),或者想要將應用程序從一臺計算機移動到替換。那麼你會有一個潛在的憤怒用戶。 (「我更換了硬盤驅動器/移動到不同的局域網連接/有系統故障/無論什麼,並且[刪除]已停止工作!」)

因此,雖然2號不會導致用戶問題,它不適用於複製保護方案。數字1和3會讓你不快樂的用戶,會給你帶來一定的麻煩,並且不會阻止有決心的人複製它。

3

我最好的選擇,實現一個簡單的解決方案,不含稅你太多,而且不會使顧客憤怒,勸阻偶爾盜版。任何更復雜的事情,這將是一場軍備競賽。一個太難贏了。

1

我會認真重新考慮許可要求,因爲執行這些要求會使您失去合法客戶。如果你是一家大公司,你可以負擔得起,但如果你是一家創業公司或個人,你不能。

一個辦法是提供個人許可證 - 適用於個人使用的所有機器。這無論好壞,都是人們認爲軟件「應該」被銷售的方式。如果你讓他們爲他們使用的每臺機器付費,他們會覺得你正在利用,那就是他們開始在網絡上拖動別人的許可密鑰。

如果合適,您還可以提供企業許可證,或10包許可證,或其他任何折扣,以單獨購買。這讓個人和組織都能合法地使用你的軟件,而不會讓他們覺得你不合理地擠壓它們。

0

考慮使用JNLP在您的應用程序中有時間限制的組件 - 許可證模塊? - 必須定期通過互聯網更新。更新版本的可訪問性需要註冊。讓

有一個很長的寬限期,允許用戶在禁用功能之前的一段時間內脫機(或不想升級)。

0

除非應用程序已經需要連接到網絡來完成它的實際工作,否則打電話回家可能很容易被歸類爲間諜軟件。

我不確定這是否適用於Java Web Start,但由於防火牆可能會阻止您的應用程序打電話回家,您的付費客戶仍可能會看到其應用程序被阻止。

所以:我不會使用那些時常回家的東西。 (關於許可證密鑰:如果一個密鑰只與特定的註冊名稱一起工作,並且如果該名稱顯示在某個關於對話框中,那麼我不會擔心使其依賴於硬件。當然,有幾個註冊名稱和他們的密鑰將被共享,但任何更花哨是不值得的努力。如果我的Mac失敗,然後我不會覺得看到我的一鍵式時間機器在新硬件上恢復,使您的應用程序無法啓動。)