このシンプルなソフトウェア保護スキーマについてコメントしてください

StackOverflow https://stackoverflow.com/questions/170006

  •  05-07-2019
  •  | 
  •  

質問

製品のライセンススキーマの実装を求められました。それらは非常に高価な製品であり、世界中にほとんど顧客がまばらに分布しておらず、基本的にすべての製品に設計環境(単一のWindowsマシンにインストールされたWindowsアプリケーション、顧客ごとに1から150のクライアントマシン)と生産環境をホストするWebサーバーがあります(顧客ごとに1〜8台のマシン)。当社の製品はサーバーの使用が許可されているため、お客様は任意の数のクライアントを使用できます。 SLA契約の対象であるため、サーバー部分のライセンスを取得するのではなく、クライアントのみのライセンスを取得することを決定しました。クライアントを使用するしばらく時間が経つと、システムは基本的に役に立たなくなるからです。

基本的な前提は、顧客が「正直」であることです。そして、期限切れのライセンスで適切にライセンスされていない場合、クライアントの設計環境を停止することのみをカバーしたいと思います。

さまざまなライセンス製品を評価しましたが、それらは高価すぎるか管理が難しすぎるため、次の簡単なソリューションを思い付きました。

  • ライセンスは、w3cの標準XML署名機能を使用して署名された単純な署名済みXMLファイルであり、USBキーで管理部門に与えられる秘密キーを使用します。コピーを失った場合、ライセンススキーマは失敗しますが、それは彼らのせいです
  • クライアントは起動時にライセンスファイルを開き、バイナリに埋め込まれた公開キーを使用してその有効性を確認します
  • ライセンスXMLが有効で、その中のデータ(有効期限と製品名)がデザイナーの作業よりも正しい場合;そうでない場合、適切なメッセージが表示されます

起こりうる問題についてのアイデアや、シナリオを改善する方法はありますか?

役に立ちましたか?

解決

十分な関心があれば、数週間で壊れなかったライセンス方式を見たことはありません。あなたのスキームは非常に良く見えます(誰かが本当に望んでいるなら、彼らはそれを破るだろうと確信しています)。

何をするにしても、エリックシンクのアドバイスに従う必要があります。

  

目標は、単に" keep;   正直な人は正直"。行けば   これよりもさらに2つだけ   起こる:

     
      
  1. 私たちは勝てない戦いを戦う。カンニングしたい人は成功します。
  2.   
  3. 私たちは、製品の正直なユーザーをより困難にすることで傷つけます   使用します。
  4.   

企業向けに設計されたプログラムのライセンススキームを実装しているため、さらにシンプルになり、何らかのIDと有効期限をクライアントの単純な署名と共に保持し、ライセンスの有効期限が切れると開始を拒否できますまたは署名に失敗しました。それを破ることはそれほど難しくありませんが、ライセンススキームはありません。あなたの顧客が正直であると考えるならば、これは十分すぎるでしょう。

他のヒント

スキームがどのように機能するかは、質問から完全には明らかではありません。クライアントソフトウェアのすべてのインスタンスに異なるキーがありますか?ライセンスの有効期間は?顧客ごとに異なるキーを持っていますか?ライセンスはどのように支払われますか?ライセンスはどのように更新されますか?

クライアントコードの使用回数を制御しようとしている場合は、上記の最初のコードのみが制御します。

一日の終わりに、あなたが住んでいるように見える世界では、あなたはあなたのライセンスの明白な侵害がないことを信頼して生きなければならないだろうと思います。ほとんどの適切な規模の組織(顧客のように聞こえます)は、ライセンス契約に違反した場合に深刻な結果につながる可能性のある侵害しない責任を負っています。それらも定期的に監査され、おそらくその使用を確認する法的権利を持っているでしょう(そうでない場合は、ライセンス契約に書き留めてください)。

あなたにとって非常に危険なのは、USBキーの内容がWebに到達した場合です。その点で、公開されたキーを使用するスキームは、秘密の故意の開示に対して脆弱です。

このテーマに関する文献はたくさんあるので、研究を続ける価値があると思います。

ところで、サーバーのライセンスに関する中部のSLAについての言及はわかりません。ライセンスとSLAは大きく異なります。ライセンスは、SLAがお客様の義務です。

秘密鍵を与えた場合、追加のライセンスを購入する代わりに、署名されたXMLファイルを作成できないようにするにはどうすればよいですか?それともサイトライセンスですか?後者の場合、他の人/サイトのライセンスを作成できないようにするにはどうすればよいですか?

一般に、開発ライセンススキームは、MACアドレスやハードドライブシリアル番号、またはアクティベーションキー(通常はハードウェア情報の単なるハッシュ)を使用して特定のマシンにライセンスを結び付けます

通常、エンコードは秘密にされた秘密鍵で行われ、ライセンスは公開鍵で検証されます。クライアントは決して秘密鍵を持っていません。そうでなければ、もしそうなら、自分のライセンスを生成できます

スティーブンA.ロウに同意します(15の評判がないため、彼に投票できませんでした)。

これも複雑すぎるようです。壊れないようにしたいですか?できません。十分に動機付けられたグルなら、それを回避する方法を見つけるでしょう。

シンプルなライセンススキームが最適な場合があります:

管理者がクライアントがアクセスできる場所に置く単純な暗号化ファイルをお勧めします-クライアント名と有効期限が含まれます。すべての印刷されたレポートでファイルからクライアント名を使用します(これは PHBs の最も重要なことです約、そのように彼らは他の誰かの名前を印刷するライセンスを使用しません)。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top