6

初めての質問なのでお手柔らかにお願いします...

ある種のライセンス スキームを使用して保護したいソフトウェアに取り組んでいます。基本的なスキームは、ユーザーに対して「一意の」キーを生成することです。ユーザーは、ソフトウェアを登録したいときにこのキーと登録コードを送信し、アクティベーション コードを受け取ります。

アプリケーションが実行されると、「一意の」キーとアクティベーション コードを復号化して受信したデータブロブを比較することで、アクティベーション コードを検証します。

これは公平で実装が非常に簡単で、さまざまな暗号アルゴリズムなどを選択できますが、このスキームには次の 2 つのプロパティがありません。

  1. ユーザーがハードウェア署名などを偽装して、別のコンピューターで同じ「一意の」キーを生成した場合、同じライセンス データを使用できます。
  2. ユーザーがアプリケーションをアンインストールして別のコンピューターに移動したい場合、古いコンピューターで古いライセンス データを再度使用し、新しいインストール用の新しいライセンス データを取得することを妨げるものは何もありません。

これらの問題を解決する方法について何か提案はありますか?

私が持っていた1つのアイデアは、「一意の」キーにランダムデータを追加することでした。このランダムデータは、ユーザーがアプリケーションを削除すると、このランダムデータが削除され、以前のランダムとのある種のハッシュが削除される場合、あいまいな方法で保存されます。データとライセンス データが生成され、それを送信して、彼が本当にアプリケーションをアンインストールしたことを確認し、ランダム データが変更されたため、以前のライセンス データを再び使用できないことを確認しました。

とりあえず…

編集:私は現在、機能するスキームを持っています。最も一般的な製品は、ハードウェアの変更が非常にまれな組み込み環境にインストールされ、ハードウェアの障害が発生した場合、マシンが壊れていることが最も確実であることに言及する必要があります. しかし、ハードウェア キー スキームを変更して考慮し、いくつかの変更を許可することはできます。

また、このため、ソフトウェアは VM 内で実行されない可能性が高いですが、良い点ですが、私はそれについて考えていません。

アプリケーションは定期的に呼び出しません。ネットワーク接続が利用可能な場合、ユーザーはより自動登録を行うオプションを取得します。それ以外の場合、ユーザーは登録キーを取得し、それをソフトウェアに入力して、提供されたインストール ID を取得します。 、登録コード + インストール ID により、ユーザーが私から取得したアクティベーション キーが生成され、ソフトウェアのロックが解除されます。

私が探しているのは、2 つの点に対する優れた/実行可能なソリューションです。ハードウェアのスプーフィング、ライセンス キーの取り消し、つまりユーザーが同じ regcode+activationcode を使用できないようにする。

フィードバックをお寄せいただきありがとうございます

する必要はありません

4

5 に答える 5

3

まず、何を保護しようとしているのかを明確にする必要があります。どうやら、アプリケーションを購入するたびに、アプリケーションがインストールされて実行可能なコンピューターが 1 台だけになるようにしたいと考えているようです。

各ユーザーの一意のキーの一部としてハードウェア署名を使用することを提案します。ハードウェアに障害が発生した場合 (ハードディスクの破損など) はどうなりますか? ハードウェアに問題が発生してアプリケーションを使用できなくなった場合、アプリケーションを購入するつもりはありません。そのため、少なくともキーの変更リクエストを処理する準備ができている必要があります。アプリケーションが重要な場合、ダウンタイムを最小限に抑えたいので、迅速に対応してください。また、私のハードウェアが故障していることを確認するようにあなたを招待しているわけではないので、私の言葉を信じてください. つまり、ハードウェア障害を口実にして、すべてのユーザーが時々無料のライセンスを取得できるということです。

仮想マシンはどうですか?現在存在するすべての仮想マシン構成を検出することはおそらく実行可能ですが、時々いくつかの誤検知のリスクがあります。仮想マシンを禁止する場合、これをユーザーにどのように正当化しますか? 仮想マシンを許可する場合、ユーザーが VM 全体の複数のコピーを作成できないようにするにはどうすればよいですか? (これは、休止状態の物理マシンでも発生する可能性があります)。

アプリケーションは起動するたびにコールバックしますか? あなたのアンインストールスキームから、そう思います。これは帯域幅と可用性のコストであり、一部のユーザーを先延ばしにすることにもなります。特に機密性の高い環境では、全員がオンラインになっているわけではありません。ただし、そのような複雑なスキームは必要ありません。サーバーは、実行中のアプリケーションのコピー数を追跡できますが、何らかの理由でアプリケーションが正常に終了しない場合 (アプリケーションのクラッシュ、 OS のクラッシュ、停電、接続の切断など)。

あなたの質問ではこれについて議論していませんが、誰かがデバッガーでライセンスチェックをバイパスできないように、アプリケーションの実行可能ファイルを保護する必要があります。

于 2010-08-06T20:01:12.957 に答える
1

シェアウェアの作成者であり、 ASPの長年のメンバーである私は、あなたのソリューションは間違った方向に進んでいると思います。これを実行可能にする唯一の方法は、既に提案されているようにハードウェア デバイスを使用することです。これまたは定期的なオンラインアクティベーションは、製品が非常に優れており、競合他社がなく、顧客が引き続き使用することを確認したい場合の唯一の方法です.

しかし、私たち (組織化された小さな ISV) が実践から学んだことは、やろうとしていることをやるべきではないということです。ハードウェアにバインドしないでください。コンピューターごとに 1 つのライセンスではなく、1 人あたり 1 つのライセンスを販売します。最終的には、ライセンスが緩和されるため、より多くの売上を上げることができます。

正直な人々が正直であり続けるために十分なことをしてください。したがって、試用バージョンを制限し (私は 1 時間後にアプリケーションを終了することにしました)、最終バージョンにはすべてのものを入れないようにします。有料の顧客に個別のダウンロードを提供するだけです。法的な制約によって利益を最大化する貪欲な会社ではなく、素敵な会社であること。

最初にいくつかのより優れた Windows 保護プログラムを使用しましたが、それらはすべて私のコードに深刻な問題を抱えていました。そして、彼らは遅かれ早かれクラックされると呼びます。だから全部あきらめた。

PS: 私は Windows でハードウェア フィンガープリント スキーマを使用しています。プログラムを制限するのではなく、30 日ごとに新しい試用キーを取得できないようにするためです。ナグ画面と一緒に動作するようです。フィンガープリントは、ユーザー名、Windows のインストール時間、システム ファイルの変更タイム スタンプ、およびハードディスクのシリアル ID の xor です。

于 2010-08-16T16:08:50.043 に答える
1

ソフトウェアをアプライアンス ハードウェアに配置し、ハードウェアに南京錠をかけます。アプライアンスを顧客に発送します。

顧客がアプライアンスをハックソーで開けてコードを取得すると思われる場合は、ストレージ メディアを暗号化することを検討してください。その後、箱をハックソーして鍵を見つける必要があります。TPM チップまたはセキュア USB トークンは、後者を支援する場合があります。

于 2010-08-09T21:11:26.837 に答える
0

登録コードをアクティベーション コードとします。

固有の登録コードは、販売時点で生成するか、製品に同梱されています。顧客は、その単一のコードを使用して、ワンステップであなた (またはあなたのサーバー) に登録/アクティブ化/非アクティブ化します。お客様のハードウェアでキーを生成する必要はありません。

再登録/再アクティブ化にはまだ連絡が必要なので、再インストールの試みを認識しています。

于 2010-08-09T21:02:20.857 に答える
0

あなたの問題に対する唯一の解決策は、暗号化ハードウェアドングルだと思います。通常は、コンピュータ間で簡単に転送できる USB ベースの改ざん防止チャレンジ/レスポンス ドングルです。

これらのデバイスの価格は、大量の場合は 1 ドル未満で、少量の場合は 10 ドル以下です。優れたものは、偽造が非常に難しく、アプリケーションへの埋め込みが非常に簡単で、通常、デバッグ防止機能とリバース エンジニアリング防止機能も備えた無料の EXE 暗号化ツールが付属しています。

于 2010-08-16T15:46:58.073 に答える