8

いつか販売したいアプリに取り組んでいます -- 遅かれ早かれ! それを保護するために、かなり単純なシリアル番号スキームを開発したいと思います。

  • 25 ~ 30 文字以内の単純な数字と文字の組み合わせ (Microsoft のプロダクト キーを考えてください)
  • 検証の一環として、ユーザーが個人情報 (電子メール アドレスなど) を入力する必要はありません。

私はこれについて少し (ほんの少し) 考えていましたが、公開鍵暗号化は始めるのに適した場所だと思います。ライセンスを識別する文字列 (SKU + プレーン ole の整数シリアル番号など) を生成し、それをハッシュして暗号化し、シリアル番号 + 識別子を 25 桁 (またはそれくらい) の英数字キーにエンコードすることができます。次に、アプリはキーをシリアル番号と「署名」にデコードし、識別子ハッシュを生成し、対応する公開キーを使用して「署名」を復号化し、生成された識別子ハッシュと比較します。

基本的に、プロダクト キーには 2 つのデータが含まれています。ユーザーが所有していると主張するシリアル番号と、プログラムがその主張を検証するために使用できる種類の署名です。25 文字の英数字 (現実的な合計 120 ビットに対してそれぞれ 5 ビットをエンコード) で十分かどうかはわかりません。ただし、暗号的に安全である必要はなく、コードが簡単に推測できない程度であれば十分です。短いキー長と短いハッシュで問題ありません。

実装に関しては、アプリは Mac OS X 用の Objective-C で書かれていますが、コードを Cocoa アプリに簡単に挿入できることを考えると、おそらく検証コードをそのまま C で書くことにします。

4

5 に答える 5

11

とにかくプログラムで解読する必要があるため、強力な暗号化は使用しません。これにより、キー生成または少なくともクラックが簡単になります。

私なら次のようにします。たとえば、25 桁の数字を取ります。次に、次のようないくつかのルールを追加します。

常にこれらのルールを使用してキーを生成してください。20 個以上のルールを使用します (多いほど良い)。アプリをデプロイするときは、キーが有効かどうかを確認するために、より少ない数のルール (たとえば 10) を使用します。これらのルールは分解され、keygen の作成に使用されます。

更新のたびに、以前に使用していなかったルールの 1 つを有効にします。ルールが正しく選択されている場合、keygens によって生成されたほとんどのキーが無効になります。

于 2009-02-17T23:29:42.593 に答える
2

私は @ bh213 の方法が好きですが、シリアル番号のルールを更新するときにキー生成が修正されるのを妨げることはありません。

より個人的な好みについて言えば、ハッカーがバイナリにパッチを適用する必要がある場合、ハッカーのパッチが不適切であり、その後のあなたとあなたの間の戦いのために、ソフトウェアの悪い評価を受ける可能性があるため、ルール セット メソッドに基づくキー ジェネレーターを好みます。ハッカー。

私の好みは、普遍的なソフトウェアの真実に基づいています。ソフトウェアは、十分に人気があればハッキングされる可能性があり、ハッキングされる可能性があります。これを防ぐための計画や巧妙な方法はありません。この戦いは、限られたリソースと限られた時間しか持たない開発者と、無制限の時間を手にしたハッカー グループとの間で行われます。

あなたのキー生成スキームは、正直な顧客を正直に保つためだけのものです。セキュリティにキー生成をサインオフさせるよりも、買掛金から小切手を取得する方が簡単です.

于 2009-02-18T00:03:58.203 に答える
1

Redbeard 0x0A が正しいように、CD-Keys は正直な顧客を正直に保つためのものです。keygen を見つけるよりも、製品を購入する方が少し難しくなければよいだけです。

製品をオンラインで販売する場合、シリアルを含むファイルを提供するのが最善の方法です。このようにして、シリアルは好きなだけ長くすることができ、有料の顧客はシリアルを入力する時間を無駄にする必要がありません.

シリアル スキームは非常に単純です。

  1. 大きなシリアル スペースがある (25 の英数字は約 10 44ですが、シリアル ファイルを使用して、10 2311のキー スペースに対して 80 文字 x 16 行を実行するだけです) 。
  2. いくつかのルールを選択して、有効なシリアル番号のスペースを、最大の夢で販売できると思うものの 100 倍に減らします

製品にオンライン コンポーネントがある場合 (ゲームにマルチプレイヤー オンラインがあるように)、暗号的に強力な乱数ジェネレーターを使用して有効なシリアル番号をさらに減らすことができます (ルール ベースのキーのサブセットを選択するため、製品はルールを使用してシリアルをチェックし、サーバーは使用します)。最終的な真のシリアル リスト)。製品がサーバーにサービスを要求すると、サーバーはシリアルをチェックできます。

于 2009-02-18T00:36:12.637 に答える
0

カスタム開発されたものであろうと暗号化ベースであろうと、すべてのルールを見つけて解読することができます。誰のためにアプリケーションを構築しているのかを考えてください。私の製品の多くは企業向けであるため、購入するかしないかのどちらかです。通常、ネットワーク上でハッキングされたバージョンを実行することはありません。keygen を探している人があなたの製品を購入する可能性は低いです。顧客がアプリを購入する気がなくなるほどイライラさせないようにする必要があります。

そうは言っても、AES 暗号化に基づいてアプリケーションで使用するために、この種のライブラリを作成しました。25 ドルで販売しており、パスフレーズとソルトを使用してシリアル番号を一意にしています。興味がある場合は、ここで見つけることができます: http://simpleserials.com

于 2010-10-26T12:27:00.240 に答える
0

sigpipe.macromates.comにブログ投稿があり、シリアル番号を確認するために秘密鍵/公開鍵暗号を使用する方法を説明しています。ユーザーとシリアル番号が一致することを確認できます。(署名/検証)。念のため、おそらく塩を追加します。

この投稿は 2004 年のものであるため、keylength.com で推奨されるキーの長さを検討する必要があります

于 2014-05-12T09:56:45.280 に答える