2009-03-14 60 views
20

私はCで小規模なアプリケーションを実装していますが、これは後でリーズナブルな価格でシェアウェアとして販売したいと考えています。それは30日間の試行で始まります。私はすでにそれを実装する方法についてかなり確信しています。プロダクトキーの実装

私の問題は、プロダクトキー検証の実装方法がわかりません。私が念頭に置いておくべきことは、顧客が私のウェブページにサインアップして(製品をしばらく試した後で)、製品を払い、aaaaa-bbbbb-ccccc-ddddd-eeeeeという形式のプロダクトキーをe -mail(または私のウェブサイトの彼のプロフィールを介して利用可能かもしれません)。これまでのところ問題ありません。彼/彼女は私のアプリの適切なキーフィールドにキーをドロップし、ブームアプリが登録されています。

私が今までに集めることができたことから、人々はAESまたはRSAのどちらかを推奨しています。正直言って、私は大学の別の方向(暗号ではない)で、私が取った1つの暗号のクラスはしばらく前です。しかし、私が覚えていることから、AESは対称暗号化アルゴリズムであり、暗号化と復号化のための鍵が1つしかないことを意味します。どのようにして何千ものプロダクトキーを生成し、それでもアプリで検証することができます(途中でインターネットアクセスは必要ないため、サーバーをチェックする必要はありません)。

だから私はRSAが行く方法だろうと思いますか?しかし、RSAはかなり長いキーを生成しません(少なくとも上記の25文字よりも長いキー)。

another thread製品の中には、製品キーの生成や検証に暗号化を使用しないものもありますが、代わりに「2.と17.文字を追加して合計する必要があります。

ここに行くのに最も簡単で簡単で安全な方法は何ですか? :-)コードサンプルは砂糖でしょう!

よろしく、

セバスチャン

PS:ああ...と、私はそれについて知っている.....私のキーは、いくつかの点でひび割れされることができる方法を教えないでください私はこの問題で多くの時間を費やしたくないのが主な理由ですが、それと同時に、時折クラッカーになるのは簡単すぎません。

答えて

30

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

このため、非対称暗号技術は、移動するための方法です。

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

これは当然のちょうど基本的な考え方です。詳細とソースコードについては、Product Keys Based on Elliptic Curve Cryptographyを参照してください。

+0

情報に感謝します。何らかの理由でEECを使用できないとします.RSAキーの最小長は1024ビットであるため、RSAは25文字のキーメソッドに適していません。 – Sebastian

+0

RSA *は384ビットしかできませんが、それでもユーザーが入力したキーは長すぎます。あなたが大文字と小文字を区別しても(62個の控えめなキャラクタを生む)、65キロの鍵が必要です。 384ビットのRSAは*非常に弱いので、あなたの秘密鍵はとにかく損なわれる可能性があります。 –

+1

私はここでECCの無料実装を見ています:http://www.codeproject.com/KB/security/Elliptic_Curves.aspx。私はそれがどれほど優れているかをチェックしていない。ちょっと掘ってみると、確かに他の人が出てくるだろう。かなり安いものがあります:http://ellipter.com/。 –

1

ソリューションを購入するだけで人生はより簡単になります。

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

Kagiのは、あなたが支払いを収集することを可能にし、彼らはあなたが鍵を管理するのに役立ちます。

+0

申し訳ありません、オプションではありません。アプリの見積もり価格は4.99€で、Kagiの料金はその価格帯の製品で高くなる。 – Sebastian

+1

この中で最も面白いのは、カギがもう存在しないということです。 – dimiguel

0

はい、RSAおよびAESは、2つの非常に異なるものです:

  • RSAは、公開鍵と秘密鍵を含む、公開鍵暗号であり、かなり遅いです。主な用途は、対称暗号化セッション鍵の安全な交換をセットアップすることです。
  • AESは対称暗号化であり、高速かつ安全です。

あなたのアプリは、パブリックチャネルを介して通信しないと暗号の使用は、あなたが対称暗号と一緒に行きたいと思うでしょう、製品のライセンス認証/登録に制限されているので。公開鍵暗号の利点は鍵管理にあり、Webサイトや電子メールで処理します。あなたはすべての顧客のために同じ鍵を配布する必要はありません

注意。いくつかの登録情報のハッシュを生成し、他のものとXORすることができます(固定セッションキー、おそらく)。これを顧客に送信すると、プログラムは同じハッシュを生成し、元の固定キーを生成するために送信したキーがXORになります。暗号の対処

は軽く行われるべきものではありません。あなたが言及しているように、あなたはこれがクラックされることを期待しています。あなたが自分自身をやっているなら、これはほとんど確実に起こります。独自の実装を使用して「正直な人を正直に保つ」ことができますが、それが実現する限り実現します。あなたが何かより強いものが必要な場合は、ソリューションを徹底的に調べてからソリューションを購入する必要があります。

0

あなたはこのCode Project記事をチェックアウトすることができます。これは、ソフトウェアが実行されるマシンのMACアドレスに基づいてソフトウェアキーの実装を記述します。この方法は理想的ではありませんが、君自身が認めているように、それはあなたが探しているものとは少し異なりますが、おそらくそれはあなたを助けることができます。