2

サーバーに直接接続せずにソフトウェアのライセンスを取得するために、次のメカニズムを考案しました。簡単に思えますが、重大な欠陥は見つかりませんでした。

1台のサーバー(ライセンスサーバー)からn台のクライアント(ソフトウェアがインストールされているn台のコンピューター)にメッセージを送信するために、非対称暗号を使用する予定です。

  1. クライアントは、コンピューターに関するいくつかの情報(MACアドレス、マシン名、名前を付けるなど)を(メールなどで)送信します。

  2. ライセンスサーバーでは、これらの情報は、十分に保護された公開(それほど公開されていない)RSAキーを使用して暗号化されます。この暗号化されたペイロードが、ライセンスです。

  3. 暗号化されたライセンスがクライアントに送信されます

  4. ソフトウェアが起動されると、ライセンスファイルをチェックし、ソフトウェアの各バージョンに付属している対応するRSA秘密鍵を使用して、ペイロードがサーバーキーで暗号化されていることを確認できます。

  5. ライセンスが復号化されると、ソフトウェアは、ライセンスが付与されたのと同じマシンで実行されていることを確認します。

    私の意見では、ライセンスサーバーのRSAキーにアクセスしないと、暗号化されたペイロードを偽造することはできません。

もちろん、ライセンスが盗まれてから、正規のクライアントマシンを模倣した仮想マシンでソフトウェアが起動されたり、ソフトウェアが分解されてライセンスチェックが解除されたりする可能性があります。

しかし、このスキームは十分に良いのでしょうか、それとも私はこの点でまったくナイーブですか?

ありがとう

4

1 に答える 1

3

これはまともなスキームですが、クライアントに秘密鍵を、サーバーに公開鍵を持たせてもよろしいですか?インストールごとに1つのキーペアを生成する場合を除いて、その逆ではありませんか?

スキームは単純ですが、実用的ですか?アプリケーションの偶発的なクラッキングを防ぐことが目標である場合は、同様に効果的なより簡単なソリューションがあります。また、クラッカーがアプリケーションを実行するのを防ぐことが目標である場合、(a)成功しない可能性があり、(b)プログラムはそのような注意に値するほど重要ではありません。

また、バイナリを16進編集してライセンスチェックコードをNOPに変更するだけで、ほぼ確実に正常に機能するのに、なぜ誰かがライセンススキームの暗号化部分を攻撃しようとするのでしょうか。

私があなただったら、ライセンス戦略とあなたの製品に対するその重要性、そしてその成功を再考したいと思います。

于 2012-10-03T02:05:51.033 に答える