2010-03-23 66 views
1

我正在嘗試決定如何爲我編寫的某些軟件實現非常基本的許可解決方案。該軟件將運行在我的(假想的)客戶機器上,想法是如果客戶機在大於n臺機器上運行它,軟件將立即退出(用友好的消息)(n是它們的許可證數量)已購買)。此外,客戶對「基本」足夠好的點非技術嫺熟。基本軟件許可實施的想法

這是我目前的設計,但考慮到我沒有什麼這個話題沒有經驗,我想問問這之前,我開始它的任何發展:

  • 遠程服務器承載一個MySQL數據庫一個包含兩列的表格:客戶端密鑰和許可證數量
  • 客戶端應用程序在啓動時連接到MySQL數據庫,提供它的客戶端密鑰,我已將其放入打包到分發包中的屬性文件中(我將創建每個新客戶的新分配)
  • 機會是,我需要第二個表來存儲VA使用一些簡短的邏輯,軟件可以決定它是否可以在給定的機器上運行(可能是每24小時使用該軟件的n臺機器的滑動窗口)
  • 如果軟件無法建立與MySQL數據庫,或決定它每天允許n臺機器,它關閉
  • 託管MySQL數據庫的遠程服務器的連接信息應該硬編碼到應用程序中? (這聽起來像是一個壞主意,但除此之外,他們可以指向其他一些始終驗證成功的服務器)

我認爲這大概涵蓋了我的初始設計。目的是雖然它當然不是完全的證明,但我認爲我至少有點難以創建一個易於共享的解決方案。另外,我可以輕鬆調整給定客戶端/密鑰對的許可證金額。

我得知這個問題已經完成了一百萬次,所以告訴我一個更好的解決方案,它的實現同樣簡單,並且提供相同(低)的安全性。在使用外部庫的情況下,我更喜歡Java,因爲這是該軟件編寫的內容。

回答

5

我建議它可能不值得麻煩。客戶可能並不是那些精通技術的人,但如果他們值得他們這樣做,他們會繞過它,如果不是這樣,他們無論如何都不會使用你的軟件。

你不討論配置過程 - 你怎麼知道哪臺機器包含MySQL數據庫。如果MySQL數據庫出現故障,您不會討論會發生什麼情況。

坦率地說,第一次出現問題時,他們可能會發現他們不喜歡該軟件足以繼續使用該軟件,或者他們將解決如何繞開該系統。即使最終用戶不懂技術,他們也可能擁有內部技術支持人員。

我不會浪費你的時間。如果你想要一個許可證管理系統 - 使用一個專業的。否則,就信任和合理的法律條款工作。

+1

我認爲你已經說服我迫使我們的項目進入無許可或支付第三方供應商解決方案之間的決定。感謝您的建議! – Ross 2010-03-23 14:02:29

3

我建議不要實施這樣的計劃。如果你的客戶端會遇到一些連接問題或者你的MySQL數據庫出現故障怎麼辦?你最終會遇到一些生氣的客戶。

但是,如果你要在這裏實現這樣的方案是一些建議:

  1. 不要讓你的鑰匙順序,無論是隨機生成的密鑰,或做類似E(K,H(clientID的+ licenseID)),其中E是加密函數,K是一些祕密密鑰,H是散列函數。

  2. 如果您擔心將應用程序指向一些始終確認服務器,那麼您會認爲它們足夠精通技術。那麼,什麼會阻止他們將所有到您服務器的連接重新路由到在出站路由器上使用類似IPTABLES的同一只驗證服務器,或者更改他們的/ etc/hosts文件。硬編碼靜態IP假定你的服務器永遠不會移動。如果您決定更換ISP,會怎樣?此外,即使您不ISP有時會出於各種原因重新編號他們的網絡。

  3. 爲避免#2中提到的問題,您必須實施某種挑戰響應系統。通過客戶端向服務器發送隨機字符串以及許可證數據並對服務器進行加密或使用一些已知密鑰對其進行哈希處理。更好地使用公鑰方案。

  4. 如果您的服務器實際上爲您的程序執行了一些計算,這些方案通常會起作用。選擇一些不經常執行的內容,這樣你的服務器就不會陷入困境。它也必須是不重要的東西,所以這將是破解者不會僅僅在假服務器中實現它。當然,它必須是必不可少的,否則你的程序將無法運行。

+1

所有的有效積分。我從這些答案中得到的一般想法是:除非我真的知道我在做什麼許可解決方案時所做的事情,否則不值得;) – Ross 2010-03-23 14:03:30

1

我在這裏擔心的主要事情是:(a)如果客戶想在沒有連接到互聯網的情況下運行,該怎麼辦?那麼,也許你的應用程序固有地需要連接到互聯網去做有意義的工作。但是,如果沒有,是否有可能您的客戶希望在旅途中在筆記本電腦上運行應用程序,或者其他一些無法連接互聯網的情況?或者,也許他們的聯繫目前剛剛好。等等

(b)如果您的驗證服務器出現故障,該怎麼辦?當反盜版功能混亂起來,並且在完全合法的情況下阻止我使用軟件時,我非常惱火,而且我聽到了許多其他人的類似投訴。另一方面,雖然製作需要某種「許可證密鑰」的方案很容易,但防止用戶在兩臺機器上使用相同的許可證密鑰更爲困難。我不知道任何方式來控制已安裝或正在運行的實例的數量,而沒有像您描述的那樣監視它們的某種「許可證服務器」。

您認爲盜版問題有多大?您的應用程序是否大多數客戶只會使用一個或兩個副本,或者可能需要很多?如果前者,所有額外的努力可能都不值得。如果後者,不同的故事。

我在某些商業產品上看到的一種技術是讓客戶在他們自己的本地網絡的一個盒子上安裝一個「許可證服務器」,然後這臺服務器裝載了許多許可證密鑰,客戶驗證這一點。它不需要一個輝煌的黑客來打敗這個 - 只需設置兩個許可證服務器,複製密鑰,並將一些客戶端指向一個或另一個,但它使誠實的用戶可以遵守許可證限制,而無需擔心互聯網中斷。

我曾嘗試過的一個想法是設置一個驗證服務器,就像您描述的一樣,但是如果連接嘗試失敗,我們會記錄並放棄它,並且只在某段時間內阻止訪問 - 我認爲這是一個星期 - 沒有設法建立連接。這樣臨時的互聯網中斷不會給用戶帶來不便。

簡答:您的想法應該可行,但有潛在的影響。

+1

該軟件確實需要有連接才能使用。我擔心的是,運行許可MySQL數據庫的機器出於任何原因停機。我認爲,與實施我自己的授權令人頭疼的事情相比,盜版潛在的銷售損失可能更小。 – Ross 2010-03-23 14:01:02

+0

另一個想法:盜版有多大可能?坦率地說,如果你正在銷售視頻遊戲,那麼客戶可能會爲他們的朋友製作副本等。如果你的主要客戶是大公司,他們通常不會冒着如果他們得到的法律問題冒險爲了在合法副本上節省幾美元而被抓到。 – Jay 2010-03-23 16:03:46