私は ASP.NET MVC Web アプリケーションを持っています。このアプリケーションはさまざまなエディションで販売されており、エディションごとにアプリケーションの機能がどんどんロック解除されています。Visual Studio のエディションのようなものだと考えてください。Professional では X と Y を実行できますが、Premium では Z も実行できます。
どのエディションが実際に購入されたかを確実に判断できるように、アプリケーションを拡張しようとしています。つまり、アプリケーションから簡単にアクセスできるように、エディションに関する情報を何らかの方法で保存することです。私は派手な保護メカニズムを探しているわけではありません.平文ファイルを書き換えるよりもアプリのクラックを複雑にするものです:)
考えられる 1 つの方法は、公開鍵と秘密鍵のペアを使用することです。エディションのペイロードを含むライセンス キーを生成し、秘密キーで暗号化して顧客に送信します。次に、顧客は暗号化されたライセンス キーを入力します。このライセンス キーは、データベースなどのどこかに保存されます。公開キーは Web アプリにハードコーディングされるため、アプリはライセンス キーを復号化し、一部の機能へのアクセスを許可するかどうかを決定できます。
これはおそらくうまくいくでしょうが、公開鍵をハードコーディングするのはなんとなく不自由に思えます。上記で提案された解決策に代わるものはありますか (おそらく、ここで車輪を再発明しようとしています)。それに明らかな欠陥はありますか?