インターネットで販売する予定のこの Java Swing アプリケーションがあります。現時点では、Java webstart を使用してアプリケーションをデプロイする方向に傾いています。製品は、ユーザーが一度に 1 台のコンピューターでのみプログラムを使用するためにライセンスされます。このモデルの著作権侵害が心配です。ライセンス モデルを適用するために、いくつかのセキュリティ機能をインストールしたいと考えています。目標は、ライセンスを取得したユーザーがライセンス キーを含むインストール済みの製品をライセンスを取得していないユーザーにコピーすることを少なくとも困難にすることです。ここに私が今見ているオプションがあります:
プログラムが起動されるたびに、ユーザーにユーザー名/パスワードを使用して母船への認証を強制します。
ユーザーが登録して支払いを済ませた後、ライセンス キーをユーザーの PC のどこかに (隠して?) インストールするだけです。実行時に、有効なライセンス キーがインストールされていることを確認します。
ユーザーのコンピューターのハードウェア フィンガープリントに基づくセキュリティ パッケージを使用/構築します。このフィンガープリントは、アプリが起動されるたびに計算され、何らかのハッシュを使用してローカルにインストールされたライセンス キーと比較されます。このライセンス キーは、このハードウェア フィンガープリントでのみ有効です。
ここでの問題の 1 つは、このアプリケーションがインストールされると、Java webstart を使用してアプリケーションの更新を確認する以外に、アプリケーションが母船に接続するためのランタイムの必要がないことです。アプリが行うことはすべてローカルで行い、swing を使用して結果をユーザーに表示します。したがって、母船が関与するソリューションは基本的に、ライセンス認証のみを目的としてサーバー インフラストラクチャを構築することを意味します。
私が探しているのは、少なくともある程度安全で、展開が簡単で、ユーザーにとって苦痛ではないJavaベースのものだと思います。どのようなセキュリティ/ライセンス アプローチを使用していますか?
編集: 誰もが絶対にセキュリティを破ることを防ぐための特効薬を探しているわけではないことを付け加えておきます。それを成し遂げる方法を見つけるのに十分な時間がある人は常にいます。私はこれらの人たちにあまり関心がありません。私は基本的に、カジュアルなユーザーがライセンス キーを単純にコピーして友人に送信することを困難にしようとしています。正しく実装されたソリューションは、カジュアルなユーザーに、購入する方が簡単であると納得させるはずです.