.NETのシリアル番号(登録キー)アルゴリズム[終了]
-
19-08-2019 - |
質問
IPセキュリティなどに関するタイムリーな投稿がいくつかありましたが、特にアルゴリズムに対処するものは見つかりませんでした。私の現在のプロジェクトの1つで、オフライン登録キーシステムのルートに進むことにしました。
最終的なユーザーベースのほとんどは正直になると思うので、あまりにも心配することはあまりないと思います。一方で、大量の汗と涙がなければ、カジュアルクラッカーにアクセスしてもらいたくありません。
では、キーを生成(および検証)する方法のオプションは何ですか?インストールモデルはイントラネットサーバー上のsamba共有から実行されるため、ハードウェアキーイングが最も可能性が高いです。また、キーの長さはどのくらいですか?
第二に、検証アルゴリズムが難読化されている場合でも、単純に反映される危険性はどのくらいですか?代わりに、アンマネージコードでアルゴリズムを記述する方が良いでしょうか?
解決
私の意見では、直面する主な問題は、登録アルゴリズムと難読化のレベル(または欠如)にありません。
これは、これです。コードのある時点で、実行または終了するという単純なバイナリ決定が行われます。システムをハッキングするには、この決定ポイントを見つけて調整するだけです。
他のすべて-難読化、強力な署名、改ざん検出-は、これをより困難にすることを目指していますが、それを 難しくすることはできません。
他のヒント
通常、やりたいことは、キーの所有者や有効期限など、キーに含めるデータを選択することです。場合によっては、アプリケーションが適切に動作するために必要なコードの一部であっても(したがって、作成が難しくなります)キーなしで動作します)。次に、RSAなどのデジタル署名スキームを使用して、会社の秘密キーでキーにデジタル署名します。アプリケーションの実行可能ファイルとともに公開鍵を配布します。次に、キーをロードするときに、署名が有効であることを確認してから、キーに含まれるデータを使用します。これには1024または2048ビットのキーで十分です。
もちろん、あなたのコードがどんなに洗練されていても、誰かは常にそれを破ったり、回避したりすることができます。それで、あなたが自問しなければならない質問は、あなたがそれをどのくらい難しくしたいのかということです(より難しいスキームはあなたのためにコーディングし維持するのが難しいことに留意してください)?収益が減少するポイントがありますが、通常はかなり低いです。プログラムがキーなしでは機能せず、キーが十分に複雑であるため、16進エディタでキーを偽造(または有効期限を変更)できない限り、おそらく大丈夫です。
キーをリファクタリングする限り、管理対象から管理対象外に呼び出しサイトを強制終了すると、管理対象外でキーを作成しても役に立たない場合があります。 Dotfuscatorプロフェッショナルを使用している場合の難読化のオプションの1つは、<!> quot;改ざん検出<!> quot;を有効にすることです。基本的に彼らはあなたのアセンブリにタグを付け、誰かが変更した場合、あなたのコードにさまざまなことをさせることができます。もちろん、ハッカーはこれを削除できますが、汗と涙がたくさんあります。
コードを非常にうまくロックダウンする方法を1つだけ見つけました。ほぼすべての形式のシリアル検証は、平均的な2年目のプログラマーによって簡単に解読できます。
私がやった方法は、.NETでライセンスオブジェクトを使用することです。自家製のライセンスオブジェクト内で、<!> quot; license <!> quot;を読み取ります。 <!> quot; home <!> quot;を見つけるためのファイル。です。そのライセンスは暗号化された文字列です。文字列への秘密鍵はライセンスオブジェクトにあります。
ライセンスオブジェクトは、暗号化された秘密のパスワードを使用して自宅に電話をかけます。サーバーはパスワードを解読し、検証します...詐欺調査の場合にIPとユーザー名も記録します。サーバーがパスワードを検証できる場合、サーバーはスプーフィングされないように再度暗号化された秘密の応答で応答します。検証できない場合、接続はドロップされます。応答が送信されないため、相手側のライセンスオブジェクトは失敗します。
統合ライセンスオブジェクトが失敗すると、自動的に例外がスローされ、アプリケーションが失敗し、ライセンスが呼び出された時点で終了します。
サーバーとライセンスオブジェクトを記述するのに約2営業日かかりましたので、ちょっとしたトレーニングですが、ロケット科学ではありません。
サンプルソースや詳細情報が必要な場合は、お知らせください。私ができることを喜んでお届けします。