web-dev-qa-db-ja.com

ソフトウェアを違法な配布からどのように保護しますか?

クラッキング、ハッキングなどからソフトウェアをどのように保護するのか興味があります。

何らかのシリアル番号チェックを採用していますか?ハードウェアキー?

サードパーティのソリューションを使用していますか?

ライセンスの問題をどのように解決しますか? (例:フローティングライセンスの管理)

編集:私はオープンソースではなく、厳密に商用のソフトウェア配布について話している...

89
petr k.

利用可能な保護は数多くあります。キーは次のとおりです。

  • ターゲットオーディエンスの評価、およびターゲットオーディエンスが我慢してくれるものを評価する
  • 無料でプレイしたいという視聴者の欲望を理解する
  • 誰かがあなたの保護を破るために喜んで出す金額を評価する
  • ほとんどの人が支払いを回避できないようにするだけの十分な保護を適用し、ソフトウェアを使用する人を困らせません。

壊れないものはないので、これらのことを測定して適切な保護を選択することは、単に余裕のある最高の(最悪の)保護を適用するよりも重要です。

  • 簡単な登録コード(オンラインで1回確認)。
  • 取り消し可能なキーを使用した簡単な登録。オンラインで頻繁に確認されます。
  • 暗号化されたキーはプログラムアルゴリズムの一部を保持します(チェックをスキップするだけではなく、プログラムが機能するために実行する必要があります)
  • ハードウェアキー(公開/秘密キー暗号化)
  • ハードウェアキー(キーで実行されるプログラムアルゴリズムの一部を含む)
  • Webサービスは重要なコードを実行します(ハッカーはそれを見ることができません)

上記のバリエーション。

73
Adam Davis

どのようなルートを選んでも、適正な価格を請求し、アクティベーションを簡単にし、無料のマイナーアップデートを提供し、ソフトウェアを非アクティブ化しないでください。ユーザーを尊重して扱う場合、ユーザーはそれに報いるでしょう。それでも、あなたが何をしても、一部の人々はそれを著作権侵害してしまいます。

28
rpetrich

しないでください。

海賊は海賊になります。どんな解決策を思いついても、解ける可能性があります。

一方、あなたの実際の有料の顧客はがらくたに不便をかけられているものです。

24
Asmor

盗むより買うことを簡単にします。あなたがコピー防止の山を置くならば、それは本当の取引を所有することの価値をかなり低くするだけです。

シンプルなアクティベーションキーとassureを使用できるお客様alwaysアクティベーションキーを取得するか、紛失した場合はソフトウェアを再ダウンロードします。

コピープロテクション(マルチプレイヤーゲームや銀行に接続するファイナンスソフトウェアなどのオンラインのみのコンポーネントを除く)は、すべて無効になると想定できます。少なくとも、ソフトウェアを違法にダウンロードすることは、ソフトウェアを購入するよりも少し難しいでしょう。

コピープロテクトジャンクが非常に多く、実際には偽のバージョンをダウンロードする方が簡単なため、私が開いたことのないPCゲームを持っています。

22
Grant

マイクロソフトソフトウェアライセンススキームは、中小企業にとって非常に高価です。自分で設定する場合、サーバーのコストは約12,000ドルです。心の弱さにはお勧めしません。

実際に Intellilock を製品に実装しました。これにより、ライセンスをどの程度厳格にしたいかについてすべての決定を下すことができ、費用対効果も非常に高くなります。さらに、難読化、コンパイラ防止なども行います。

私が中小企業で使用しているのを見た別の良い解決策は SoloServer です。これは、eコマースおよびライセンス管理システムの詳細です。それは非常に構成可能で、少し複雑すぎるかもしれません。しかし、それは私が聞いたことから非常に良い仕事をします。

私は過去にもドットネットに Desawareライセンス システムを使用しました。上記の2つに比べてかなり軽量なシステムです。暗号的に健全な点で非常に優れたライセンス管理システムです。しかし、これは非常に低レベルのAPIであり、アプリが実際に使用するほぼすべてのものを実装する必要があります。

15
Jason Short

ソフトウェア保護はお金の価値はありません-ソフトウェアが必要な場合 意志 何があっても倒される。

つまり、ハードウェア保護は適切に機能します。これがうまく機能する方法の例は次のとおりです。ソフトウェアの(かなり)単純ですが必要なコンポーネントを見つけて、Verilog/VHDLに実装します。公開鍵と秘密鍵のペアを生成し、チャレンジ文字列を取得して秘密鍵で暗号化するWebサービスを作成します。次に、公開鍵を含み、ランダムなチャレンジ文字列を生成するUSB​​ドングルを作成します。ソフトウェアは、USBドングルにチャレンジ文字列を要求し、暗号化のためにサーバーに送信する必要があります。ソフトウェアはそれをドングルに送信します。ドングルは公開鍵で暗号化されたチャレンジ文字列を検証し、「有効」モードになります。ソフトウェアは、HDLで記述した操作を実行する必要があるときはいつでもドングルを呼び出します。このようにして、ソフトウェアを海賊版にしたい人は、操作を理解して再実装する必要があります。これは、純粋なソフトウェア保護を無効にするよりもはるかに困難です。

編集:検証の内容の一部が本来あるべきものとは逆であることに気づきましたが、そのアイデアは思い浮かびます。

15
Cody Brocious

デジタル「権利」管理は、業界で単一の最大のソフトウェアヘビ油製品です。古典的な暗号からページを借りるために、典型的なシナリオは、アリスがチャーリーがそれを読むことができない状態でボブにメッセージを取得したいというものです。 DRMは、そのアプリケーションではボブとチャーリーが同じ人物であるため機能しません!

あなたは逆の質問をする方がいいでしょう。それは「ソフトウェアを盗むのではなく、どうやって人々に購入させるのか」です。そして、それは非常に広範な質問です。しかし、それは一般的に研究を行うことから始まります。販売したい種類のソフトウェアを誰が購入するのかを把握し、それらの人々にアピールするソフトウェアを作成します。

これに対する追加の目的は、更新/アドオンを正当なコピーのみに制限することです。これは、購入トランザクション中に受け取った注文コードと同じくらい簡単なものにすることができます。

Stardockソフトウェア、WindowBlindsのメーカー、Sins of a Solar Empireなどのゲームをチェックしてください。後者にはDRMがなく、$ 2Mの予算からかなりの利益を上げています。

9
Nathan Strong

プロセッサIDを使用して「アクティベーションキー」を生成するなど、いくつかの方法があります。

肝心なのは、誰かがそれを十分に悪くしたい場合、あなたが持っているあらゆる保護をリバースエンジニアリングすることです。

最もフェイルセーフな方法は、実行時のオンライン検証またはハードウェアハスプを使用することです。

幸運を!

6
Ian P

少し時間があれば、ソフトウェアは常に解読されます。これを確認するために、よく知られたソフトウェアのクラックされたバージョンを検索できます。ただし、ソフトウェアに何らかの保護を追加する価値はあります。

不正直な人はあなたのソフトウェアにお金を払うことはなく、常にひびの入ったバージョンを見つけて使用することを忘れないでください。非常に正直な人々は、たとえそれが彼らがそのような人であるという理由だけで、ライセンス制度がなくても常に規則を守るでしょう。しかし、大多数の人々はこれら2つの両極端の間にいます。

単純な保護スキームを追加することは、中間にいる大多数の人々に正直に行動させる良い方法です。これは、ソフトウェアが無料ではなく、適切な数のライセンスを支払う必要があることを思い出させるための方法です。多くの人が実際にこれに応答します。マネージャーは自分のお金を使っていないので、企業は特にルールを守ることに長けています。それは自分のお金なので、消費者はルールを守る可能性が低くなります。

しかし、最近リリースされたSpore from Electronic Artsなどの経験から、ライセンスの範囲ははるかに広いことがわかります。あなたが合法的な人々でさえ、彼らは絶えず検証されているので犯罪者のように感じさせると、彼らは反逆し始めます。ですから、人々に不正直であるかどうかを思い出させるために簡単なライセンスを追加しますが、それ以上のものは売上を押し上げる可能性は低いです。

4
Phil Wright

まさにあなたが探している答えではありませんが、なぜ海賊にその理由を積極的に尋ねたゲーム開発者からの海賊行為に関する素晴らしいリソースです。そして、あなたが選択した答えの最初の部分に関連しています。

パイレーツと話す でそれを読んでください。

3

World of Warcraft(WoW)のようなオンライン専用ゲームで作成されており、全員が毎回サーバーに接続する必要があるため、アカウントを常に確認できます。 Beanに対して他の方法は機能しません。

3
Jeff

一般に、しばしば混乱する2つのシステムがあります-

  • ライセンスまたはアクティベーションの追跡、合法的な合法的な使用
  • 不正使用を防止するセキュリティ

商用パッケージを使用するライセンスの場合 FlexLM 多くの企業が莫大な金額をライセンスに投資して、セキュリティも得られると考えています。これは、これらの商用パッケージの一般的なミスキージェネレーターが豊富にあるためです。

使用に基づいて合法的に支払う企業への販売の場合のみライセンスをお勧めします。それ以外の場合は、おそらくその価値よりも多くの労力を費やします。

製品が成功すると、最終的にはすべてのライセンスおよびセキュリティ対策に違反することに注意してください。それで、それが本当に努力に値するかどうかを今決定します。

私たちは何年も前にFlexLMのクリーンルームクローンを実装しました。また、バイナリ攻撃に対するアプリケーションを強化する必要がありました。その長いプロセスであり、リリースごとに再検討する必要があります。また、実際に販売するグローバル市場や、主要な顧客ベースが何をする必要があるかによっても異なります。

DLLの保護 に関する私の別の回答を確認してください。

3
titanae

違法な配布を防ぐことは事実上不可能です。ただRIAAに聞いてください。デジタルコンテンツは単にコピーできます。アナログコンテンツをデジタル化してからコピーできます。

不正な実行の防止に注力する必要があります。他人のマシンでのコードの実行を完全に防ぐことは決して不可能ですが、ソフトウェアを海賊行為するよりも購入しやすくなるほど十分に高い水準に引き上げる特定の手順を実行できます。

ライセンスを考慮してアプリケーションを開発するための最善の方法を説明している記事 ソフトウェア保護とライセンスの開発 をご覧ください。

義務的な免責事項とプラグイン:私が共同で設立した会社が 。NET用のOffByZero Cobaltソフトウェアライセンスソリューション を製造しています。

2
Duncan Bayne

ある種のバイオメトリック指紋認証を使用したとしても、誰かがそれを解読する方法を見つけるでしょう。それを回避する実際的な方法はありません。ソフトウェアをハックプルーフにしようとする代わりに、コピー保護を追加することでどれだけの追加収益がもたらされるか、それを実装するのにかかる時間とお金の量を考えてください。ある時点で、厳格でないコピー防止スキームを採用する方が安くなります。

それはあなたのソフトウェア製品が何であるかによって異なりますが、1つの可能性は、プログラムの「価値のある」部分をソフトウェアの外に移動し、それをあなたの排他的な制御下に保つことです。ソフトウェアに適度な料金を請求し(主に印刷および配布コストをカバーするため)、外部コンポーネントから収益を生み出します。たとえば、安価で販売されている(または他の製品と無料でバンドルされている)が、ウイルス定義更新サービスのサブスクリプションを販売しているウイルス対策プログラム。そのモデルでは、更新サービスにサブスクライブする海賊版のコピーは、経済的な損失の多くを表すことはありません。 「クラウド内」のアプリケーションの人気が高まるにつれ、この方法は実装しやすくなります。クラウドでアプリケーションをホストし、クラウドへのアクセスに対してユーザーに課金します。これは、誰かが独自のクラウドを再実装してサービスの必要性を排除することを妨げるものではありませんが、そのために必要な時間と労力は、メリットを上回る可能性が最も高くなります(料金モデルを妥当に保つ場合)。

2
bta

DRM this、DRM that-プロジェクトにDRMを強制するパブリッシャーは、DRMが利益を上げているのでそれを行っています。彼らの経済学者は、私たちの誰も見ることのないデータについてこれを結論付けています。 「DRM is evil」の荒らしは少し行き過ぎです。

視認性の低い製品の場合、単純なインターネットのアクティブ化によって、不用意なコピーが停止します。他のコピーは、おそらくあなたの最終的な利益には無視できます。

2
Dustin Getz

海賊たちにそれを使わせるだけというこの問題のせいで、彼らはとにかくそれを買わないだろうし、それを買うかもしれない友達を2倍に見せることになるだろう。

  1. サードパーティのサービスを使用するソフトウェアを使用すると、海賊版コピーは正当なユーザーに悪い体験を与える貴重な帯域幅/リソースを使用し、私のソフトウェアをより人気のあるものに見せ、サードパーティのサービスが私に彼らのサービスにもっと支払うように求めています使用されている帯域幅の。

  2. 多くのカジュアルな人はsw自体をクラックすることを夢見ていませんが、piratebayのようなサイトに簡単に評価できるクラックがあれば、彼らがそれを購入する可能性がなければ、それを使用します。

一度発見された海賊版ソフトウェアを無効にしないというこの概念もクレイジーに思えます、なぜ使用してはならないソフトウェアを誰かに継続して使用させる必要があるのか​​理解できません。これは海賊の見解/希望にすぎないと思います。

また、プログラムを解読しにくくすることは1つのことですが、合法的なコピーが共有されないようにする必要もあります。そうしないと、誰かが1つのコピーを購入して、
急流サイトを介して他の何千人もの人とそれを共有します。ライセンスに名前/メールアドレスが埋め込まれているという事実は、誰もがこれを行うのを妨げるには十分ではなく、問題が発生するのは本当に1つだけです。

これを防ぐために私が見ることができる唯一の方法は、次のいずれかです。

  1. 毎回プログラムの起動時にサーバーがライセンスをチェックしてロックし、プログラムの終了時にライセンスを解放します。最初のクライアントがライセンスを所有しているときに別のクライアントが同じライセンスで開始した場合、そのクライアントは拒否されます。この方法では、ライセンスが複数のユーザーによって使用されるのを防ぐことはできませんが、ライセンスが複数のユーザーによって同時に使用されるのを防ぐことができます-これで十分です。また、正規のユーザーが自分のコンピューターのいずれかにライセンスを転送して、より優れたエクスペリエンスを提供することもできます。

  2. 最初のクライアントの起動時に、クライアントはライセンスをサーバーに送信し、サーバーがそれを確認するため、クライアントソフトウェア内でフラグが設定されます。同じライセンスを持つ他のクライアントからのそれ以上の要求は拒否されます。このアプローチの問題は、元のクライアントがソフトウェアを再インストールしたり、別のコンピューターを使用したりすると問題が発生することです。

2
Paul Taylor

指摘されているように、ソフトウェア保護が絶対確実であるとは決して保証されていません。何を使用するかは、ターゲットオーディエンスに大きく依存します。たとえば、ゲームは、永久に保護できるものではありません。一方、サーバーソフトウェアは、さまざまな理由から、インターネット上で配布される可能性がはるかに低いものです(製品の浸透と責任が頭に浮かびます。大企業は、偽造ソフトウェアについて責任を問われることを望んでいません。海賊は、十分な需要があることだけに悩まされます)。正直なところ、注目度の高いゲームの場合、最善の解決策は恐らくtorrentを自分で(密かに!)シードし、何らかの方法で変更することです(たとえば、2週間のプレイ後にポップアップメッセージが表示されるようにします)。正当なコピーを購入して開発者をサポートすることを検討してください)。

保護対策を講じる場合は、2つの点に注意してください。まず、価格を下げると、購入価格を支払う傾向が高まり、コピー防止機能が補完されます。次に、保護がユーザーの邪魔になってはいけません-最近の例についてはSporeを参照してください。

2
coppro

消費者に販売するソフトウェアの保護に関心がある場合は、さまざまなライセンスキー生成ライブラリ(ライセンスキー生成に関するGoogle検索)のいずれかをお勧めします。通常、ユーザーはメールアドレスや名前などのシードを提供する必要があり、登録コードを返します。

いくつかの企業は、ソフトウェアをホストして配布するか、統合して完全にインストール/購入できるアプリケーションを提供して、おそらく追加費用なしで自動的にこれを実行します。

私はソフトウェアを消費者に販売しましたが、これはコスト/使いやすさ/保護の適切なバランスだと思います。

1
Mike

シンプルで最良の解決策は、前もって充電することです。あなたと彼らのために働く価格を設定してください。

支払い済みの顧客に、すでに支払い済みの顧客に支払い済みであることを証明するよう依頼することは、彼らを怒らせるだけです。ソフトウェアを実行しないようにコードを実装すると、時間とお金が浪費され、正当な顧客にバグと不快感が生じます。より良い製品を作るためにその時間を費やすほうがよいでしょう。

多くのゲームなどが最初のバージョンを「保護」し、実際の顧客との互換性の問題により、最初のパッチで保護を解除します。あなたが少しの保護を主張するなら、それは不合理な戦略ではありません。

1
davenpcj

ほとんどすべてのコピー防止機能は効果がなく、使い勝手の悪夢でもあります。ルートキットを顧客のマシンに配置するなど、その一部はまったく非倫理的です

1
wnoise

あなたがソフトウェア開発者である場合、考えられる解決策の1つは、製品に直接メタデータを埋め込むことです。 redsunriseのインスタンス破壊セキュリティツールを確認してください。

0
user613111

私たちは、独自のライセンスシステムを使用して商用ソフトウェアのライセンスを取得しています。これは、私たちが販売しているものです(ライセンス管理ツール)。通常、サブスクリプションライセンスを販売しますが、必要に応じて、使用量に基づいて販売することもできます。これまでのところ安全です:www.agilis-sw.com

0
user332801

製品の一部を、接続と認証を必要とするオンラインコンポーネントにします。ここではいくつかの例を示します。

  • オンラインゲーム
  • ウイルス防止
  • スパム保護
  • ラップトップ追跡ソフトウェア

ただし、このパラダイムはこれまでのところしか進んでおらず、一部の消費者を止めることができます。

0
pdavis

私はシンプルなアクティベーションキーを提案します(たとえ壊れることがわかっていても)、ソフトウェアをユーザーの手に渡したくない場合、または単にプッシュしてしまう場合があります。

彼らがソフトウェアを再ダウンロードできることを確認します。彼らが支払いを行った後でのみ、ソフトウェアをログに記録してダウンロードできるWebページを提案します(そして、はい、彼らは単一の質問なしに、好きなだけ何度でも直接ダウンロードできるはずですなぜあなたの側に)。

何よりも有料ユーザーを押し込みます。正当なユーザーであるときに犯罪者であると非難されることで、いらいらすることは何もありません(DVDの海賊版警告はだれにも警告しています)。

オンライン時にサーバーに対してキーをチェックするサービスを追加できます。2つの異なるIPが同じキーを使用している場合は、別のライセンスを購入するように提案がポップアップ表示されます。

しかし、それを非アクティブ化しないでください、それはあなたのソフトウェアを友達に見せて幸せなユーザーかもしれません!!!!

0
levhita

熟練したソフトウェアの海賊に対してソフトウェアベースのコピー保護スキームが抑止されないという多くのポスターに同意します。商用の.NETベースのソフトウェアの場合、Microsoftソフトウェアライセンス保護(SLP)は非常に手頃な価格のソリューションです。期間限定およびフローティングライセンスをサポートしています。料金は月額10ドル+アクティベーションあたり5ドルからで、保護コンポーネントは宣伝どおりに機能しているようです。ただし、これはかなり新しい製品なので、購入者は注意してください。

0
PoppaVein