0

私は ASP.NET MVC Web アプリケーションを持っています。このアプリケーションはさまざまなエディションで販売されており、エディションごとにアプリケーションの機能がどんどんロック解除されています。Visual Studio のエディションのようなものだと考えてください。Professional では X と Y を実行できますが、Premium では Z も実行できます。

どのエディションが実際に購入されたかを確実に判断できるように、アプリケーションを拡張しようとしています。つまり、アプリケーションから簡単にアクセスできるように、エディションに関する情報を何らかの方法で保存することです。私は派手な保護メカニズムを探しているわけではありません.平文ファイルを書き換えるよりもアプリのクラックを複雑にするものです:)

考えられる 1 つの方法は、公開鍵と秘密鍵のペアを使用することです。エディションのペイロードを含むライセンス キーを生成し、秘密キーで暗号化して顧客に送信します。次に、顧客は暗号化されたライセンス キーを入力します。このライセンス キーは、データベースなどのどこかに保存されます。公開キーは Web アプリにハードコーディングされるため、アプリはライセンス キーを復号化し、一部の機能へのアクセスを許可するかどうかを決定できます。

これはおそらくうまくいくでしょうが、公開鍵をハードコーディングするのはなんとなく不自由に思えます。上記で提案された解決策に代わるものはありますか (おそらく、ここで車輪を再発明しようとしています)。それに明らかな欠陥はありますか?

4

1 に答える 1

1

ある種のコンテンツ保護スキームを実装しようとしており、アプリケーション環境 (OS など) の明示的なサポートがなければ失敗するにちがいないため、完全なセキュリティを達成しようとしていないのは良いことです。それから。

通常、秘密鍵で暗号化するのではなく、秘密鍵で署名します。アプリケーションで公開鍵を送信し、エディションがその特定の公開鍵で署名されていることをアプリケーション内で確認できます。

このスキームを攻撃する方法はたくさんあり、さらに覆い隠すことで強化することもできますが、基本的にできることはそれだけです。

于 2012-08-25T23:37:11.617 に答える