13

私の会社は、私たちが開発したいくつかのソフトウェアの配布を開始しようとしており、購入する前にソフトウェアを試用できるようにしたいと考えています。また、コピーして顧客の顧客に配布できないようにしたいと考えています。

私たちが見たモデルの 1 つは、ライセンスを MAC アドレスに結び付けて、ソフトウェアが 1 台のマシンでのみ動作するようにするものです。

私が疑問に思っているのは、ライセンスの有効期限、MAC アドレス、さまざまなソフトウェア制限など、さまざまな情報が埋め込まれたライセンス キーを生成する良い方法は何ですか?

4

10 に答える 10

17

私はMacrovision(以前のGlobetrotter)のFLEXlmとReprise Softwareの新しいRLM(私が理解しているように、FlexLMの元の作者によって書かれた)の両方を使用しました。どちらもMACアドレスまたは物理ドングルのいずれかをキーオフでき、ノードロック(1台のマシンのみに接続)または「フローティング」(ネットワーク上の許可されたマシンは中央のライセンスサーバーによってライセンスを取得できます)のいずれかです。同時にチェックアウトされるコピーの最大数は、支払った金額によって決まります)。有効期限、個々のサブライセンス機能など、さまざまな柔軟な設定方法があります。アプリケーションへの統合はそれほど難しくありません。これらは私が使用した2つだけですが、他にも同じように機能するものがあると確信しています。

これらのプログラムは簡単に解読されます。つまり、ライセンスサーバーを偽装するために独自のライセンスをカットするか、ライセンスチェックをバイパスするためにバイナリにパッチを適用するだけで、プログラムを使用するアプリケーションのセキュリティをバイパスできるエクスプロイトが知られています(基本的に、ライブラリへのサブルーチン呼び出しを「return'true'」とだけ言うコードに置き換えます。それよりも複雑ですが、ほとんどの場合、それが要約されます。さまざまなWarezサイトに投稿された製品のクラックバージョンが表示されます。彼らはしばしばひび割れのためにひび割れに興味があり、あなたの製品の用途やそれをどうするかについての知識さえ持っていないので、それは非常にイライラし、意気消沈する可能性があります(これはあなたが十分に専門的なプログラムを持っている。)

このため、自分で作成する必要があると言う人もいれば、暗号化スキームを頻繁に変更することもあります。しかし、私は同意しません。自分でローリングするということは、FLEXlmまたはRLMに対する既知のエクスプロイトがアプリケーションですぐに機能しないことを意味するのは事実です。ただし、この種のセキュリティの完全な専門家でない限り(明らかにそうではないか、質問をしないでしょう)、経験が浅い場合は、安全性がはるかに低く、解読しやすいものになる可能性が高くなります。市場のリーダーよりもスキーム(彼らがそうであるかもしれないので弱い)。

あなた自身を転がさないもう一つの理由は、それが無限の猫とネズミのゲームであるということです。顧客と販売者にとっては、ライセンスのセキュリティに最小限の労力を費やし、その時間をデバッグや機能の追加に費やす方がよいでしょう。あなたは単に「正直な人々を正直に保つ」としてライセンス制度を理解する必要がありますが、断固とした亀裂を防ぐことはできません。とにかくクラッカーがソフトウェアの代金を払っていなかったことを受け入れてください。

誰もがこのような禅の態度を取ることができるわけではありません。誰かがどこかで何かを無料で手に入れていることを知って、夜眠れない人もいます。しかし、それに対処することを学ぶようにしてください。海賊行為を阻止することはできませんが、すべての著作権侵害を阻止しようとする時間/労力/費用と、製品をユーザーにとってより良いものにすることのバランスをとることはできます。最も海賊版のアプリケーションが最も人気があり、収益性が高い場合があることを忘れないでください。頑張ってよく眠ってください。

于 2008-09-08T14:15:47.550 に答える
8

私の会社では、何年もの間、次のアルゴリズムを1つのインシデントなしで使用してきました。

  1. コードに含めるフィールドを決定します。可能な限りビットパックします。たとえば、日付を「2007年からの日数」とすると、16ビットで処理できます。
  2. 「チェックサム」フィールドを追加します。(理由はすぐにわかります。)このフィールドの値は、他のフィールドからのパックされたバイトのチェックサムです。「MD5の最初の32ビット」を使用します。
  3. TEAを使用してすべてを暗号化します。キーには、顧客を識別するもの(たとえば、会社名+個人の電子メールアドレス)を使用します。そうすれば、誰かがインターWebにキーを投稿したい場合は、プレーンテキストで自分の連絡先情報を含める必要があります。
  4. 賢明な方法で16進数を文字列に変換します。まっすぐな16進数を使用することもできますが、わかりにくくするために16文字の別のセットを選択することを好む人もいます。また、電話で読みやすくするために、ダッシュなどを定期的に含めてください。

復号化するには、16進数を文字列に変換し、TEAで復号化します。ただし、次の追加手順があります。フィールドの独自のチェックサムを計算し(チェックサムフィールドを無視)、指定されたチェックサムと比較します。 これは、誰もキーを改ざんされないようにするための手順です

その理由は、TEAがビットを完全に混合するため、1つのビットが変更された場合でも、TEAの復号化中に他のすべてのビットが同じように変更される可能性があり、チェックサムは通過しません。

これはハッキング可能ですか?もちろん!ほとんどすべてがそうですが、これは十分にタイトで実装が簡単です。

連絡先情報を結び付けるだけでは不十分な場合は、「ノードID」のフィールドを含めて、MACアドレスなどにロックします。

于 2008-09-08T13:40:04.907 に答える
8

キーに必要な情報を取得し、md5 でハッシュしてから、最初の X 文字だけを取得することをお勧めします (X は、管理しやすいと思われるキーの長さです)。

暗号的には完璧にはほど遠いですが、これは、カジュアルな攻撃者を阻止するために最低限の努力を払いたい領域です。それ以上のものはすぐにブラック ホールになります。

ああ、指摘しておきたいのですが、このパスをたどる場合は、キーの一部として、有効期限 (および自分で読み上げたいその他の情報) をプレーンテキスト (または少し難読化) で提供する必要があります。 - md5 は、エンド ユーザーが有効期限を変更してライセンスを延長するのを防ぐためのものです。

最も簡単なのは、このようなキーファイルです...

# License key for XYZZY
expiry-date=2009-01-01
other-info=blah
key=[md5 has of MAC address, expiry date, other-info]
于 2008-09-08T13:09:12.983 に答える
4

MAC アドレスは使用しないでください。テストした一部のハードウェア (特に一部の IBM Thinkpad) では、再起動時に MAC アドレスが変わる可能性があります。これがなぜなのかをわざわざ調査することはありませんでしたが、調査のかなり早い段階で、それに頼らないように学びました。

必須の免責事項とプラグイン: 私が共同設立した会社は、OffByZero Cobalt ライセンス ソリューションを提供しています。したがって、ライセンスを外部委託し、コア コンピテンシーに集中することをお勧めすると聞いても、おそらく驚かないでしょう。

真剣に、これを正しく行うのは非常に難しく、間違った結果は非常に悪いものになる可能性があります. 少量で高価格の場合、いくつかの海賊版が収益に深刻な影響を与える可能性があります。また、低価格で大量に販売している場合、warez d00dz が楽しみと評判のためにソフトウェアをクラックするインセンティブがあります。

心に留めておくべきことの 1 つは、真にクラックプルーフなライセンスなどというものは存在しないということです。誰かがあなたのバイトコードを自分のハードウェアに入れると、あなたは彼らがそれを使って何をするかを完全に制御する能力を手放したことになります。

優れたライセンス システムとは、ハードウェアに感染した海賊版ソフトウェアの増加に伴い、ソフトウェアの購入がより良い選択肢となるようにハードルを十分に高くすることです。アプリケーションを保護するために、いくつかの対策を講じることをお勧めします。

  • 優れたサードパーティのライセンス システムを取得する
  • コードにスコープを含むチェックを追加します (たとえば、fIsLicensed のようなグローバル変数は 1 つもありません。機能を実装するコードの近くで機能のステータスをチェックしないでください)。
  • .NET または Java コードの場合、深刻な難読化を採用する
于 2009-09-29T22:37:09.793 に答える
2

私が働いていた会社では、実際にUSB ドングルを使用していました。これは次の理由で便利でした:

  • 私たちのソフトウェアもそのUSBスティックにインストールされました
  • プログラムは、(一意の) ハードウェア キーが見つかった場合にのみ実行されます (標準の USB キーにはハードウェア キーがあるため、特別なものを購入する必要はありません。どのスティックでもかまいません)。
  • コンピューターに限定されていませんでしたが、必要に応じて別のシステムにインストールできました

ほとんどの人がドングルを好まないことは知っていますが、この場合、私たちが納入した特別な目的のメディアプレーヤーに実際に使用されたため、非常に便利でした.USBキーはどのPCでもデモとして使用できましたが、 、クライアントが満足したら、実際のアプリケーション (つまり、実際のプレイヤー) で変更なしで使用できます。

于 2008-09-08T13:21:22.237 に答える
1

私はライセンス生成を行うさまざまな製品を使用し、独自のソリューションを作成しましたが、現在および将来的に最も柔軟性を提供するものは何かということになります。

独自のライセンス キーを生成するために注目すべきトピックは次のとおりです。

HEX フォーマット、楕円曲線暗号化、および AES/Rijndael、DES、Blowfish などの暗号化アルゴリズム。これらは、ライセンス キーの作成に最適です。

もちろん、キーを製品に関連付けて、作成したキー システムに基づいてロックするようにアプリケーションをプログラムする必要があるだけでは十分ではありません。

私は独自のソリューションを作成することをいじりましたが、最終的にソフトウェアでお金を稼ぐことになったとき、キーを生成して製品ラインを管理する時間を節約できる商用ソリューションを取得する必要がありました...

これまでのところ、私のお気に入りは SpearmanTech の License Vault ですが、FlexNet (コストがかかる)、XHEO (あまりにも多くのプログラミングが必要)、SeriousBit Ellipter も試しました。

結局、License Vault 製品を選択したのは、他の製品よりもはるかに安価であり、.NET 3.5 でほとんどの作業を行っているため、単純に提供できるものが多かったからです。

于 2010-01-04T16:50:33.677 に答える
1

すべてのライセンス データを XML に保存し (読みやすく管理しやすい)、XML 全体のハッシュを作成してから、ユーティリティで暗号化します (これも独自のシンプルな方法です)。

これも完璧にはほど遠いですが、しばらくは維持できます。

于 2008-09-08T13:12:31.430 に答える
1

ほぼすべての商用ライセンス システムはクラックされています。私たちは何年にもわたって多くのライセンス システムを使用してきましたが、最終的にはすべてクラックされます。一般的なルールは、自分で作成し、リリースごとに変更することです。

本当に安全なものはありません。最終的に大企業である Microsoft などを見てください。彼らは正直な人がお金を払い、他の人がコピーするモデルを採用しています。あまり力を入れないでください。

あなたのアプリケーションが人々のためにお金を払う価値があるなら。

于 2008-09-08T13:16:37.117 に答える
0

製品でインターネットを使用する必要がある場合は、マシンの一意のIDを生成し、それを使用してライセンスWebサービスで確認できます。

そうでない場合は、市販の製品を使用するのが道だと思います。はい、彼らはハッキングされる可能性がありますが、それをハッキングすることを絶対に決心している人にとって、彼らが支払うことはありそうにありません。

使用したもの:http ://www.aspack.com/asprotect.aspx

また、sdk製品で関数呼び出しを使用して、マシンの一意のIDを取得します。

彼らの最初の製品が「AsPack」と呼ばれて以来、明らかに英語を母国語としないが、良い会社である。

于 2008-09-08T14:08:24.090 に答える
0

製品や顧客について何も知らずに、適切な回答を提供することは困難です。技術者に販売されるエンタープライズ ソフトウェアの場合、かなり複雑なライセンス システムを使用できます。ほとんどコンピューターに詳しくない消費者向けソフトウェアの場合、はるかに単純なシステムが必要です。

一般に、正直な人々を正直に保つための非常に単純なシステムを作るという慣行を採用しています。本当にあなたのソフトウェアを盗もうとする者は、どんな DRM システムも回避する方法を見つけるでしょう。

以前は、C++ プロジェクトに Armadillo (現在は Software Passport) を使用していました。現在、C# プロジェクトに XHEO を使用しています。

于 2008-09-08T13:12:22.850 に答える