2012-01-09 7 views
12

私の現在のアプリケーションでは、非常に簡単なスキームを使用して新しいユーザーを登録します。新しいユーザーが登録すると、電子メールがキーとともに送信されます。このキーが正しいことを確認するために、一種のチェックサムが計算され(3-7-11桁チェック)、キーの最後の2桁として追加されます。キーのそれ以上の妥当性についてのチェックはありません。アプリケーションは、キーが無効になったかどうかをチェックしません。Delphiでユーザ登録キーを生成する方法は?

シンプルなスキームで、誰かがコードを逆アセンブルすることで時間を割いた。新しいアプリケーションに別のスキームを使用したいのですが、これを実行する最良の方法は何か分かりません。

  • 私は使用できるDelphiライブラリがありますか?
  • 彼の名前のように、キーにユーザーが入力した情報を使用することをお勧めしますか?
  • ユーザー登録のベストプラクティスはありますか?
  • 他にも私が忘れてしまったことはありますか?
  • 一部の登録スキームでは、Webサーバーでキーがまだ有効かどうかを毎回確認する必要があります。私はそれがサーバー側で多くの努力を必要とするので、それほど遠くに行かないだろう。

    新しいユーザーを登録するための堅牢な方法の提案やリンクは大歓迎です。

    +0

    何をしますか?登録ユーザーは簡単です。データベースに保存するだけです。ソフトウェアで使用するライセンスキーを取得しますか? (それを "活性化する"?) –

    +4

    あなたが何をしても、それはひどくなります。問題は、それがどれくらいあなたに関係するのでしょうか? –

    +0

    @Davidあなたは完全に正しいので、登録されていない製品ごとにお金を逃すことになります。だからこそ私は何らかの保護方法を望んでいる。 – Arnold

    答えて

    11

    より良い登録方式は、非対称暗号(通常はRSAアルゴリズム)に基づいています。このアイデアは、有効な鍵を生成できるのは誰でも、鍵が有効であることを誰もが確認できます(非対称暗号ではこのトリックが可能です)。したがって、トレントで有効なキーを使用してプログラムを参照すると、このキーを与えられた顧客のサポートが取り消されます。

    +0

    これは興味深いと思います。アルゴリズムなどのリンクはありますか? – Arnold

    +2

    +1 RSAのこの特定の使用のための例やリンクはありますか? –

    +0

    お客様は訴訟で勝利する可能性が高いです! –

    4

    Delphiと、ソフトウェアを保護するための非デルファイライブラリ(つまりProtexis)があります.Cで動作するほとんどすべてがDelphiでも動作することを覚えておいてください。しかし、健全なコピープロテクションスキームは達成するのが難しいかもしれません。シンプルなキーは機能しないかもしれませんが、通常、それは特定のシステムでのみ使用できるようにマシンの指紋を一緒に使用します。

    優れたキージェネレーターアルゴリズムでは、予測しにくいキーを生成する必要がありますが、有効であればチェックできます。周りにはさまざまなものがありますが、一般的なものではなく、ニーズに応じて異なります。また、情報の有効化や有効期限を設定する機能もあります。いくつかのキーは文字列にすることができ、他のキーは(Delphi自体で使用される)ライセンスファイル全体にすることができます。とにかく、アルゴリズムを推測しようとするためにコードを逆アセンブルし、それを難読化して理解しにくくするいくつかの技法を使用することができます。

    また、簡単なキーチェックでは、実行ファイルのパッチを簡単にバイパスすることができるため、十分ではありません。コピープロテクションが本当に必要な場合は、コードのすべてのチェックを分散させ、キーを使用してデータやコードセクションを暗号化して解読する必要があります。これはkeygenに対してあなたを保護するものではなく、コードの変更が必要です起動時に1つの関数を呼び出す。

    保護レベルはあなた次第です。単純な登録メカニズムが必要なだけで、ソフトウェアがひどく壊れていても気にしないなら、単純なものを使うことができます。より安全なものが必要な場合は、より洗練されたものがあります。

    +0

    リンクをありがとう。私は誰かがプログラムを解体するのに苦労したことを知ったとき、私はむしろ焦っていました。それはひび割れが常に可能であることを私に教えました、しかし私は彼らの人生を少し難しくすることができます。あなたのヒントは助けになります。 – Arnold

    +0

    ハードウェアフィンガープリンティングはユーザーを悩ませ、より多くのサポートコール/電子メール/チケットを生成することに注意してください。したがって、サポートコールごとに利益(販売あたり)が半減する低コストアプリと比べて、高価値アプリにとっては魅力的です。 –

    +0

    @Arnold、私は一度ターゲットとして私のアプリを使用するクラッキングチュートリアルを発見しました。クラッカーは私のアプリの非常に無料だった、と彼のクラッキング活動のためにどのように非常に有用だったかを説明した。 –

    4

    あなたの目標がインターネットからのキージェネレータではなく、インターネットからクラックされたEXEをダウンロードすることを強制するのであれば、非対称暗号化があなたの答えです。

    野生にリリースされたシリアル番号を無効にすること、インストール数を制限すること、またはユーザーに実際の「支払う」シリアル番号を強制することが目的であれば、有効化があなたの答えです。それでも、彼らがあなたのEXEをクラックした場合、彼らはこれを回避することができます。

    あなたは誰かがあなたのEXEをクラックするという点までしかコントロールできません。これを受け入れて進んでいく必要があります。より手頃な価格のバージョン、付加価値のあるサポートオプション、Webサービス、およびソフトウェアの価格が公正であることをユーザーに納得させるその他の方法など、お客様に手を差し伸べる他の方法を理解しなければなりません。 。

    私の最新リリースでは、アクティベーションを使用しているため、一意性がチェックされていても電子メールアドレスに関連付けられていますが、シリアル番号はランダムに生成されます。

    この後、アプリケーションはわずか4.99ドルですが、個別サポートはありません。目標はそれを手頃な価格にして、使用したい場合は1回ですら、それは良い値です。

    +0

    これは合理的なアプローチです。私は低価格も考えていましたが、複雑なアプリケーションでは20ドルほどではありません。私は今までに活性化を使用しましたが、代わりに、したがってこの質問を調査することに決めました。あなたの考えをありがとう。 – Arnold

    2

    私たちは、OreansのWinLicenseを2年間使用してきました。これはかなり満足しています。キー生成(ユーザー名が埋め込まれている)、試用版のタイムアウト、ハードウェアキー(送信するキーがコンピュータ固有のもの)、VM検出などを処理します。また、さまざまな手法を使用して、暗号化されたVMで選択したコードをラップするなど、コードを逆アセンブルするのが難しくなります。

    特定のキーが「盗まれた」と判断した場合は、無効にすることもできます。これを実行すると、あなたが提供する将来のアップデートはそれらのキーではもう動作しなくなります。

    私たちのソフトウェア「電話の家」は、特定の時間にキーが盗まれているかどうかを確認するために用意されています。

    保護スキームは、決定され、十分に熟練している人が壊す可能性があります。しかし、私たちはWinLicenseが私たちに与えてくれるセキュリティの程度に満足しています。彼らのサポートはまた優れたです。ライブラリはDelphiから呼び出し可能です。

    関連する問題