10

アクティベーション アルゴリズムを作成する方法についていくつかのアイデアが必要です。たとえば、デモ証明書があります。アプリケーションがデモ モードで実行されていることを前提としています。フル バージョンの証明書が提供されると、アプリケーションはフル モードで実行されます。それは可能であり、このシステムを作成するにはどうすればよいでしょうか?

単純な 1 つは、暗号化された文字列が 2 つあるだけだと思っていたのですが、デモの公開鍵証明書を使用して復号化が成功すると、アプリケーションはデモ モードで実行されます。

編集: C# と Windows 7 の使用

4

7 に答える 7

9

次のようなことができます:

  1. 公開鍵と秘密鍵のペアを生成する
  2. 秘密鍵の所有者として、これらの「アクティベーション証明書」に署名できます (以降、AC と呼びます)。
  3. アプリでは、公開鍵を使用して、署名が正しいかどうかを確認できます

Overbose が述べたように、リバース エンジニアリングを防ぐことはできません。一般に、誰かが機能を取得して自分のアプリに入れ、可能なアクティブ化アルゴリズムを排除することができます。したがって、これは努力する価値がないほど難しいと想定する (または作成する) ことしかできません (これは暗号化の場合と同じです。メッセージを解読するコストを、メッセージを取得する利益よりも大きくすると、十分に保護されています)。

したがって、次のことができます。

  1. 実行可能な自己検証を行います (ハードコードされた公開鍵に基づいて、あなたが署名し、自己チェックします (1 つのこと: 自己チェック時にはこの値をスキップする必要があります))。
  2. ポインターを使用していくつかのトリックを実行します (アクティベーション関数をポイントし、7 番目のビットに移動して、その値を別のポインターの値に基づいて何かに変更します。奇妙な場所では、ハードコードされた値を、他の場所でのいくつかのビットの発生に基づいた値に変更します)コードの; 一般的に -- 16 進エディタで実行可能ファイルのビットを単純に変更するよりも壊れにくくします)
  3. サーバーがアプリに関する質問 (「自分自身の 293 バイトの値を教えてください」) と回答の確認に使用するプロトコルを作成してみてください。
  4. 想像力を働かせて、今まで誰も使っていなかった変なセルフチェック方法を考えてみてください :)

前述のように、これはどれも認証部分を切り離すことから安全ではありません。しかし、何もそうではなく、これはクラッカーにとってより困難になる可能性があります.

于 2011-08-12T12:56:30.557 に答える
5

背景: サーバー、データベース、電子商取引の統合など、サードパーティのライセンス システムの上に構築されたアクティベーション ベースのシステムを展開しました。また、RSA キーを使用して C# アクティベーション システムを個別に作成しましたが、展開したことはありません。

製品のアクティベーションとは、通常、特定のマシンでソフトウェアをアクティベートする必要があることを意味します。それがあなたの言いたいことだと思います。「デモ」と「購入済み」を意味する 2 つの文字列があれば、数時間以内に復号化されて配布されます (製品に価値があると仮定します)。意味がありません。

そう。「アクティベーション」が必要な場合、ユーザーがソフトウェアを購入するときに、次のプロセスを実行する必要があります。

  1. 注文処理ソフトウェアは、サーバーに「購入キー」を生成してユーザーに送信するよう指示します
  2. ユーザーが「購入キー」をソフトウェアに入力
  3. ソフトウェアは、購入キーと一意のマシン ID をサーバーに送信します。
  4. サーバーは、購入キーとマシン ID を組み合わせて文字列にし、証明書で署名してユーザーに返します。
  5. ソフトウェアは、サーバーの公開鍵を使用して署名が有効であることを確認します。
  6. ソフトウェアは多くの場所でチェックできます。多くの場所で sig をロードし、他の場所でチェックします。

購入キーを生成するとき、サーバーは購入した農産物だけでなく、どのレベルの製品も保存できます。また、期間限定の「無料」製品を用意して、ユーザーがソフトウェアのフル バージョンを 30 日間試用できるようにすることもできます。

C# を使用しているため、dotfuscator または同等のツールを使用してバイナリを難読化してください。ただし、それでも、断固たるハッカーに対してできることは何もありません。あなたの目標は、無料のユーザーに自分自身をハッカーにするか、クラックされたバージョンを使用する危険を冒さなければならないことを強制することだと思います。YMMV。

チェックを行うコードは、保護が必要なすべてのアセンブリに含まれている必要があります。そうしないと、攻撃者は、チェックを行うアセンブリを置き換えることで、簡単に保護を削除できます。必要に応じて、コードをカット アンド ペーストします。

または、何かを購入するだけです。

もう 1 つのオプションは、サーバーに「購入キー」を事前に生成させて注文フルフィルメント サービスに提供させることですが、そのキーを顧客の詳細にリンクすることはできません (少なくとも顧客が登録するまで)。購入が行われたときに e コマース サーバーがサーバーにヒットし、サーバーがそれを送信するようにすることをお勧めします。

難しいのはアクティベーション キーの生成ではなく、サーバー、データベースの作成、e コマース ソフトウェアとの統合、そして何よりも人的問題です。購入キーごとに無制限のインストールを許可しますか? 1のみ?1つだけの場合は、カスタマーサポートと、ユーザーが新しいマシンにインストールできるようにする方法が必要です. それはたった1つの問題です。あらゆる種類の楽しみ。

于 2011-08-25T09:58:42.530 に答える
3

この男は、同様のアイデアについてブログ投稿を書き、独自の商用ソフトウェアで何をしたかを説明しています。また、最も明白なクラッキング手法に関する推奨事項のリストも作成しました。それが役に立てば幸い。

于 2011-08-12T13:46:19.277 に答える
1

単純な 1 つは、暗号化された文字列が 2 つあるだけだと思っていたのですが、デモの公開鍵証明書を使用して復号化が成功すると、アプリケーションはデモ モードで実行されます。

簡単な解決策かもしれません。しかし、この方法では、誰かがバイナリをリバース エンジニアリングして、実行を正しい行にジャンプさせるのを防ぐことはできません。誰もがあなたのプログラムを持っていて、その完全なバージョンを持っているので、この単純なメカニズムを壊す方法を見つけるだけです。

おそらく、単純な文字列ではなく、完全なアプリケーション バージョンを使用するために必要なバイナリの一部を暗号化することをお勧めします。この方法でアプリケーションの完全なバージョンを実行するには、誰かがそれらのバイナリを解読して実行する必要があります。

その解決策でも十分ではないことを考慮してください。それには他にも問題があります:

  1. ツールのすべてのバージョンが同じ暗号化キーを共有しますか? すべてを壊すためにそれらの1つを壊す..
  2. リリースされたバイナリ アプリケーションごとに異なるキーを使用しても、暗号化されたバイナリは同じですか? クラックされた暗号化されていないバイナリは、すべての分散アプリケーションで再利用できます。

これらの問題を解決するには?簡単な解決策はありません。高度な保護システムを備えた重要な商用ソフトウェアのほとんどは、リリースされてからわずか数時間または数日後に破損します。

于 2011-08-12T12:20:21.633 に答える
1

製品のアクティベーションは、非対称暗号化で解決できる問題ではありません。非対称暗号化とは、敵から秘密を守ることです。問題は、敵対者のマシンに保存されている秘密を保持できないことです。これは、あいまいさにもかかわらずセキュリティになります。

製品のアクティベーションを行う正しい方法。サーバー上のデータベースに保存される暗号ナンスを生成することです。顧客が製品を購入するときにこのナンスを顧客に渡し、オンラインでアクティブ化します。このアクティベーション プロセスにより、攻撃者が新しい機能を「ロック解除」するために必要なコピーを変更することがより困難になる新しい素材がダウンロードされる可能性があります。

ただし、製品の使用中にオンラインである必要がある DRM システムを使用している場合でも. 「フロム ダスト」のような新しいゲームで見つかったもののように、リリースから数時間以内にまだ壊れています。

于 2011-08-21T19:04:31.410 に答える
0

公開鍵暗号化の利点の 1 つは、特定のデータの出所を検証できることです。したがって、アセンブリに公開キーを保存し、特定のデータ (認証コードやシリアル番号など) に署名すると、アセンブリは、ハッカーではなく、そのデータを作成したのはあなたであると検証可能に判断できます。実際のデータ自体はそれほど重要ではありません。単純な合格/不合格の値である可能性があります。

これは、実際には .NET で非常に簡単に行うことができます。x509 証明書を使用するか、 RSACryptoServiceProviderのDeployLX Licensingで使用するような証明書を使用できます。

商用製品を購入することを強くお勧めします (DeployLX は優れていますが、どの製品でも問題ありません)。

  1. 優れた開発者であっても、最初は間違いを犯す可能性があります。そして、自分でロールバックすることで享受できたかもしれない節約は、その間違いから回復するために失われます.
  2. 独自のシステムの作業にはるかに多くの時間を費やすことになります。製品を優れたものにするために費やすべき時間です。

ソフトウェアを保護するための第 2 段階は、作成したとおりに実行され、ハッカーによって変更されていないことを確認することです。ハッカーif( licensed )if( true ).

于 2012-03-07T22:01:14.183 に答える
-2

AsProtectを使用してこの問題を解決できます。これは良いスターポイントです。

于 2011-08-22T17:52:17.420 に答える