23

私はCで小さなアプリケーションを実装しています。これは、後でリーズナブルな価格でシェアウェアとして販売したいと考えています。それは30日間のトライアルから始まりますが、私はそれをどのように実装するかについてすでにかなり確信しています。

ただし、私が抱えている問題は、プロダクトキーの検証を実装する方法がよくわからないことです。私が念頭に置いているのは、顧客が私のWebページにサインアップして(しばらく製品を試した後)、製品の代金を支払い、e経由でaaaaa-bbbbb-ccccc-ddddd-eeeeeの形式でプロダクトキーを取得できることです。 -メール(または私のウェブサイトの彼のプロフィールから入手できるかもしれません)。今のところ問題ありません。次に、彼/彼女は私のアプリの適切なキーフィールドにキーをドロップし、アプリが登録されていることをブームします。

私がこれまでに収集できたものから、人々はこれにAESまたはRSAのいずれかを推奨します。正直なところ、私は大学で別の方向に進んでおり(暗号化ではありません)、私が受けた暗号化のクラスは少し前でした。しかし、私が覚えていることから、AESは対称暗号化アルゴリズムです。つまり、暗号化と復号化のためのキーは1つだけですよね?次に、何千ものプロダクトキーを生成し、アプリでそれらを検証するにはどうすればよいでしょうか(ちなみに、インターネットアクセスは必要ありません。サーバーにチェックバックする必要はありません)。

それで、RSAが進むべき道だと思いますか?しかし、RSAはかなり長いキー(少なくとも上から必要な25文字よりも長い)を生成しませんか?

別のスレッドで、一部の製品はプロダクトキーの生成/検証に暗号化を使用せず、代わりに「2.と17.の文字を追加し、合計でxになる」などのチェックを使用することを読みました。

ここに行くための最も速く、最も簡単で、最も安全な方法は何ですか?:-)コードサンプルは砂糖になります!

よろしく、

セバスチャン

PS:ああ...そして、ある時点で私の鍵がどのようにクラックされる可能性があり、どのようにクラックされるのか教えてはいけません.....私はそれについて知っています、それが主に私が多くの時間を過ごしたくない理由ですこの問題ですが、同時に、時折クラッカーが簡単になりすぎないようにしてください。

4

5 に答える 5

35

対称アルゴリズムには制限があり、逆アセンブラーを使用する初心者のクラッカーは、キー(またはキーの生成に使用されるアルゴリズム)を見つけて「keygen」を作成できます。

このため、非対称暗号化が進むべき道です。基本的な前提は次のようなものです。

  • ユーザーがあなたからライセンスを購入すると、ユーザーやその環境に関する特定の識別情報を収集します(通常、これは単なるフルネームですが、会社の場合もあります)。
  • この情報の128ビットMD5ハッシュを作成します。
  • 128ビットの楕円曲線暗号を使用して、サーバー上の秘密鍵を使用してこのハッシュを暗号化します。
  • 128ビットの暗号文は、文​​字と数字で構成される25文字の文字列としてユーザーに表すことができます(さらに読みやすくするためにダッシュを区切ります)。26文字+10桁=36個の個別の値、および36 ^ 25> 2^128であることに注意してください。
  • ユーザーは、このプロダクトキーを登録ダイアログに入力します。クライアントソフトウェアはそれを128ビットの数値(16バイト)に変換し直し、EC暗号の公開鍵を使用して復号化し、その結果をユーザーの個人情報のMD5ハッシュと比較します。これは登録に使用されたものと一致する必要があります。

もちろん、これは基本的な考え方です。詳細とソースコードについては、楕円曲線暗号に基づくプロダクトキーを参照してください。

于 2009-03-14T19:19:41.127 に答える
1

ソリューションを購入するだけで、生活はよりシンプルになります。

http://www.kagi.com/kagisolutions/index.php

カギはあなたが支払いを集めることを可能にし、彼らはあなたが鍵を管理するのを助けます。

于 2009-03-14T15:41:05.117 に答える
0

はい、RSAとAESは2つの非常に異なるものです。

  • RSAは公開鍵暗号であり、公開鍵と秘密鍵が関係しており、かなり低速です。主な用途は、対称暗号化セッションキーの安全な交換を設定することです。
  • AESは対称暗号化であり、高速で安全です。

アプリはパブリックチャネルを介して通信せず、暗号化の使用は製品のアクティベーション/登録に限定されているため、対称暗号を使用することをお勧めします。公開鍵暗号の利点は、Webサイトまたは電子メールで処理する鍵管理にあります。

すべての顧客に同じキーを配布する必要はないことに注意してください。登録情報の一部のハッシュを生成し、それを他の何か(おそらく固定セッションキー)とXORすることができます。それを顧客に送信すると、プログラムは同じハッシュを生成でき、XORは、元の固定キーを生成するために送信したキーを生成します。

暗号化を扱うことは、軽く行うべきことではありません。あなたが言うように、あなたはこれがひび割れることを期待しています。あなたがあなた自身をしているなら、これはほぼ確実に起こります。独自の実装を使用して「正直な人を正直に保つ」ことはできますが、それはあなたが得る限りのことです。より強力なものが必要な場合は、ソリューションを徹底的に調査した後、ソリューションを購入する必要があります。

于 2009-03-14T16:23:43.313 に答える
0

ある男が、登録番号の質問をどのように処理したかについてブログに書いています。彼のブログエントリの1つは、一意の登録番号の生成です。

于 2009-03-14T15:54:41.370 に答える
0

こちらのコード プロジェクトの記事をご覧ください。ソフトウェアが実行されるマシンの MAC アドレスに基づくソフトウェア キーの実装について説明します。作者自身が認めているように、この方法は理想的ではなく、探しているものとは少し異なりますが、役立つ可能性があります。

于 2009-03-14T18:39:17.527 に答える