これは、正直な顧客を正直に保つためだけのものです。
7 に答える
オペレーティング システムの制限はありますか? 次のアプローチは非常に簡単になると思います。
マシン ID を取得する方法を選択します。たとえば、これは
MachineGuid
のレジストリ エントリである可能性がありますHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography
。(一意のマシン ID の生成)ライセンス供与を計画している機能と、それらを識別する方法を定義します。名前を付けるだけです。製品がシンプルであれば、それ自体が機能になる可能性があります。
公開鍵と秘密鍵のペアを作成します。
何らかの方法で顧客のマシン ID を取得します。手動で送信するように依頼するか、単純なユーティリティを作成するか、アプリケーションの特別なコマンドにすることができます。
機能 ID とマシン ID を何らかの方法で組み合わせ、結果を秘密鍵で署名します。たとえば、連結によってその組み合わせを作成できます。その場合、結果の文字列は次のようになります: "YourApplicationName-12345678-9abc-def0-1234-56789abcdef0"
署名は一連のバイトになるため、テキスト形式で渡したい場合は、何らかの変換を行う必要があります。たとえば、署名をBase64文字列に変換できます。機能 ID、マシン ID、およびそれらの組み合わせの署名の組み合わせがライセンス キーになります。
アプリケーション配布に公開鍵を含め、ライセンス検証のロジックを追加します。ライセンスが有効な場合は、正しいマシンと正しいアプリケーションで使用されていることを確認する必要があります。
公開鍵/秘密鍵の操作の詳細については、こちらをご覧ください。
不明な点があれば教えてください。詳細な回答を提供しようとします。
編集:このすべての実装は 1 日でできると確信していますが、既存のソリューションを使用することを提案する他の人に同意します。さまざまなプラットフォームやプログラミング言語用にたくさんあります。
誰か他の人からもらってみませんか。あなたが一日だけ入れても構わないと思っているなら、あなたは良い製品を手に入れるつもりはありません。
ライセンスキーは、キーがサーバー名などのハッシュに関連付けられていない限り、顧客がソフトウェアを何度もインストールするのを妨げることはありません。
製品の機能 (ユーザー数、ホスト IP、有効期限など) をプレーン テキスト ファイルに入れます。公開鍵でファイルに署名し、実行時に署名を確認します。
やる気があれば、コードを逆コンパイルしたり、チェックを削除したりできますが、改ざんが防止され、すべてが見栄えがよく公式に見えます。
一日で良い仕事をすることはできず、全体的な効果がマイナスになる可能性があります. 忠実で正直な顧客を悩ませ、不誠実な顧客を止めることはできません。
代わりに、あなたの製品がどれだけ海賊行為を受けているかを何らかの方法で測定する方法を考え出すことにその日を費やしてください. これがわかれば、失う金額と、保護やその他のアプローチに実際にどれだけの労力を費やす必要があるかを見積もることができます。
それでもやりたい場合は、インストールに固有のデータ (OS ユーザー名、電子メール アドレス、CPU/マザーボードのシリアル番号など、関連付けたいものは何でも) を収集し、ユーザーに送信するよう依頼するのが最も簡単な方法です。秘密鍵で暗号化してライセンスキーを生成します。ソフトウェアは同じデータを収集し、ライセンスを公開鍵で復号化し、2 つの BLOB を比較する必要があります。
擬似コード(どの言語/プラットフォーム?)だけが必要な場合は、コンピューターのMACアドレス(一意であると想定)を取得して、他のコンピューターパラメーターを組み合わせた関数を作成し、アプリが実行されるたびに検証するようにしてください。自分のDBに対して、ユーザーの電子メールをその行に保持します。
何かが変更された場合(ソフトウェアは機能しませんが、ユーザーは同じメールで新しいキーを要求できます)、古いキーを取り消して新しいキーを渡すことができます。
最も単純なライセンス ジェネレーター: チェックサムがシードされた ini ファイルで、顧客名と有効になっているモジュールに関する情報が含まれています。ハッカーにとっては非常に簡単に破ることができますが、ハッカーでない人にとっては安全です。他の潜在的な顧客がライセンス ファイルを使用できないように、公開されているアプリからの出力に名前が表示される必要があります。