サーバーに直接接続せずにソフトウェアのライセンスを取得するために、次のメカニズムを考案しました。簡単に思えますが、重大な欠陥は見つかりませんでした。
1台のサーバー(ライセンスサーバー)からn台のクライアント(ソフトウェアがインストールされているn台のコンピューター)にメッセージを送信するために、非対称暗号を使用する予定です。
クライアントは、コンピューターに関するいくつかの情報(MACアドレス、マシン名、名前を付けるなど)を(メールなどで)送信します。
ライセンスサーバーでは、これらの情報は、十分に保護された公開(それほど公開されていない)RSAキーを使用して暗号化されます。この暗号化されたペイロードが、ライセンスです。
暗号化されたライセンスがクライアントに送信されます
ソフトウェアが起動されると、ライセンスファイルをチェックし、ソフトウェアの各バージョンに付属している対応するRSA秘密鍵を使用して、ペイロードがサーバーキーで暗号化されていることを確認できます。
ライセンスが復号化されると、ソフトウェアは、ライセンスが付与されたのと同じマシンで実行されていることを確認します。
私の意見では、ライセンスサーバーのRSAキーにアクセスしないと、暗号化されたペイロードを偽造することはできません。
もちろん、ライセンスが盗まれてから、正規のクライアントマシンを模倣した仮想マシンでソフトウェアが起動されたり、ソフトウェアが分解されてライセンスチェックが解除されたりする可能性があります。
しかし、このスキームは十分に良いのでしょうか、それとも私はこの点でまったくナイーブですか?
ありがとう