質問

ライセンスキーの福標準として海賊等に対処する。正直、この襲って (セキュリティを通じても視線をさえぎ, がっていなどのライセンスキーが生成されます。何が良い(セキュアのライセンスキーのいと思います。どの暗号化プリミティブ(もしあれば)を使用?でメッセージダイジェスト?る場合、どのようなデータに問われていることは、そうしたハッシュ?どのような方法なの開発を困難にすることでクラッカーが自分のもの鍵ジェネレータ?どのよう鍵ジェネレータになってきている。

役に立ちましたか?

解決

昔ながらの CD キーの場合、CD キー (任意の文字列) の生成と検証が容易なアルゴリズムを作成するだけでしたが、有効な CD キーと無効な CD の比率が-keys は非常に小さいため、CD キーをランダムに推測しても有効なキーが得られる可能性は低いです。

間違った方法:

スタークラフト そして 人生の半分 どちらも同じチェックサムを使用しており、13 桁目で最初の 12 桁が検証されました。したがって、最初の 12 桁には何でも入力でき、13 桁目は推測できます (可能性は 10 しかありません)。 1234-56789-1234

検証のためのアルゴリズムは公開されており、次のようになります。

x = 3;
for(int i = 0; i < 12; i++)
{
    x += (2 * x) ^ digit[i];
}
lastDigit = x % 10;

正しいやり方

Windows XP かなりの量の情報を取得して暗号化し、文字/数字のエンコードをステッカーに貼り付けます。これにより、MS は両方のキーを検証できるようになりました そして 製品タイプ (Home、Professional など) も同時に取得します。さらに、オンラインでのアクティベーションが必要です。
完全なアルゴリズムはかなり複雑ですが、以下にわかりやすく概要を示します。 これ (完全に合法です!)ドイツで出版された論文。

もちろん、オンライン サービス (たとえば、 ワールド オブ ウォークラフト)、いかなるタイプのコピープロテクトも単なる機能停止にすぎません。残念ながら、それが価値のあるゲームであれば、誰かが壊すでしょう (または少なくとも回避) CD キー アルゴリズム、およびその他すべての著作権保護。

本物 正しいやり方:

オンライン サービスの場合は、バイナリ ファイルであっても、それを使用するにはサーバーで認証する必要があるため、作業は少し単純になります (例:WOW アカウントをお持ちです)。World of Warcraft の CD キー アルゴリズム (たとえば、プレイタイム カードを購入するときに使用されます) は、おそらく次のようになります。

  1. 暗号的に安全な非常に大きな乱数を生成します。
  2. それをデータベースに保存し、カードに印刷します。

    次に、誰かがプレイタイム カード番号を入力すると、その番号がデータベースにあるかどうかを確認し、データベースにある場合は、その番号を現在のユーザーに関連付けて、二度と使用できないようにします。

オンラインサービスには理由がない ない 上記のスキームを使用します。他のものを使ってもできる 問題を引き起こす.

他のヒント

私も書いたこの答えだったことを前提としのかたに関する'off'の検証のライセンスキー。その他の回答をアドレスオンラインで検証し、大きくして扱えるようになりますので、ロジックできるサーバー側面)。●

オフライン検証で最も難しいことは確な形を生成することができます膨大な数の独自のライセンスキー、まだ意欲を高く維持するアルゴリズムとジョンを容易に妥協などの簡易なセキュリティチェック桁)

私はあまりに精通した数学で印象に残っているかを使用 数理機能 このグラフにプロット図

に描かれた線が利用してもらい、微細な周波数千独自のポイントで鍵を生成りのランダムポイントとグラフは、エンコーディングの価値あ

enter image description here

一例として、またこのプロットのグラフを、つのポイントやエンコードが入って文字列"0,-500;100,-300;200,-100;100,600"

まして、文字列を暗号化しますと、固定キー(決の弱さをもっていますので、目的)に変換して、そのバイトを通じて Base32 の発生の最大の鍵

アプリケーションはその逆のこのプロセス(base32を実数ョンはデコードのポイント)トレージエンジンはインデックスそれぞれのポイントは当社の秘密グラフで表示します。

そのかなり少量のコードできるようにすること、すなわめて独自の有効な鍵を生成する

しかしながら、もセキュリティの育.ものの時間分解コードのようですが、このグラフ描画機能および暗号化鍵、そしてモックアップは、鍵ジェネレータ、それを利用した減速軽に海賊版の生産である。

この記事をチェックしてください 部分的なキーの検証 これには次の要件が含まれます。

  • ライセンス キーは入力しやすいものでなければなりません。

  • チャージバックや盗難されたクレジット カードでの購入の場合に備えて、ライセンス キーをブラックリストに登録 (取り消し) できる必要があります。

  • キーをテストするために「家に電話」する必要はありません。この慣行はますます広まっていますが、ユーザーとして私はまだそれを高く評価していません。そのため、ユーザーに我慢を求めるつもりはありません。

  • クラッカーが私たちのリリースされたアプリケーションを逆アセンブルし、そこから機能する「keygen」を生成することは不可能であるべきです。これは、アプリケーションが検証のためにキーを完全にはテストしないことを意味します。キーの一部のみがテストされます。さらに、アプリケーションのリリースごとに、キーの異なる部分をテストする必要があります。そうすることで、以前のリリースに基づく偽のキーが、ソフトウェアの新しいリリースでは機能しなくなります。

  • 重要:正当なユーザーが無効なキーを誤って入力し、機能しているように見えても、将来のバージョンではタイプミスが原因で失敗するということがあってはならないのです。

CD キーを生成するために人々が実際に行うことについては経験がありませんが、(オンライン アクティベーションの道をたどりたくない場合を想定して) キーを作成できるいくつかの方法を次に示します。

  • 数値が (たとえば) 17 で割り切れる必要があります。多くのキーにアクセスできる場合、推測するのは簡単ですが、潜在的な文字列の大部分は無効になります。同様に、キーのチェックサムが既知の値と一致することが必要になります。

  • キーの前半が既知の値と連結される場合、キーの後半までハッシュ化されることを要求します。良いことですが、プログラムにはキーの生成と検証に必要な情報がすべて含まれています。

  • 既知の値 + ナンスを (秘密キーを使用して) 暗号化してキーを生成します。これは、対応する公開キーを使用して復号化し、既知の値を検証することで検証できます。プログラムには、キーを生成できなくてもキーを検証するのに十分な情報が含まれています。

これらはすべて依然として攻撃を受ける可能性があります。プログラムはまだ存在しており、パッチを適用してチェックを回避できます。プログラムに値を保存するのではなく、3 番目の方法で得た既知の値を使用してプログラムの一部を暗号化する方が賢明かもしれません。この方法では、プログラムを復号化する前にキーのコピーを見つける必要がありますが、復号化されるとコピーされたり、1 人が正規のコピーを取得してそれを使用して他の人がソフトウェアにアクセスできるようにしたりすることに対しては依然として脆弱です。

CD キーは、ネットワークに接続されていないものにとってはあまりセキュリティとして機能しないため、技術的には安全に生成する必要はありません。.net を使用している場合は、ほぼ Guid.NewGuid() を使用できます。

現在の主な用途は、サーバーが CD キーを検証できるマルチプレイヤー コンポーネントです。そのためには、それがどれだけ安全に生成されたかは重要ではなく、結局のところ、「渡されたものをすべて検索し、他の人がすでにそれを使用しているかどうかを確認する」ということになります。

そうは言っても、次の 2 つの目標を達成するためにアルゴリズムを使用することもできます。

  • 何らかのチェックサムを持っています。これにより、インストーラーはタイプミスを検出するためだけに「キーが有効ではないようです」というメッセージを表示できるようになります (インストーラーにそのようなチェックを追加するということは、実際には、ハッカーが必要なコードをすべて持っているため、キー ジェネレーターの作成が簡単であることを意味します。チェックを行わず、サーバー側の検証のみに依存すると、そのチェックが無効になります。タイプミスに気づかず、サーバーが CD キーを受け入れない理由を理解していない正規の顧客を困らせる危険があります)
  • 限られた文字のサブセットを操作します。CD キーを入力しようとして、「これは 8 ですか、それとも B ですか?」と推測します。1 ですか、それとも I ですか?Q または O または 0?」 - 曖昧でない文字/数字のサブセットを使用することで、その混乱を排除できます。

そうは言っても、海賊が単に有効なキー (データベース内では有効ですが、店頭の箱にまだ入っている) を推測して、たまたまその箱を購入した正規の顧客を台無しにすることを避けるために、大規模な配布とある程度のランダム性が必要です。 。

あなたは、特にキーの長さに関係していない場合は、

は、かなりしようとした真の方法は、公開鍵と秘密鍵の暗号化を使用することである。

本質的に一回だけの何らかの固定署名を持っています。

例: 0001から123456789

0001はあなたのナンスと123456789があなたの固定の署名であるところます。

次にようなものです、あなたのCDキーを取得するには、あなたの秘密鍵を使用して、これを暗号化します: ABCDEF9876543210

次に、あなたのアプリケーションと公開鍵を配布します。公開鍵は、あなたが、その後の固定署名部分を確認するCDキー「ABCDEF9876543210」を、復号化するために使用することができます。

これは、彼らが秘密鍵を持っていないので、CDキーがナンス0002何のためにあるのか推測から誰かを防ぎます。

唯一の主要な下側のサイズは、公開鍵/秘密鍵1024ビットを使用しているとき、あなたのCDキーが非常に長くなるということです。また、あなたは情報の些細な量を暗号化されないように十分な長nonceを選択する必要があります。

アップ側は、このメソッドは「活性化」なしで動作し、あなたがナンスとして電子メールアドレスまたはライセンシーの名前のようなものを使用することができるということです。

キー システムにはいくつかのプロパティが必要です。

  • 有効なキーはほとんど必要ありません
  • ユーザーがすべてを持っているとしても、有効なキーを導出可能であってはなりません。
  • あるシステムで有効なキーは、別のシステムでは有効なキーではありません。
  • その他

これらを実現する 1 つの解決策は、 公開鍵署名スキーム. 。「システム ハッシュ」から始めます (たとえば、任意の NIC 上の Mac をソートして取得し、CPU-ID 情報とその他の情報を加えて、それをすべて連結して結果の MD5 を取得します (実際にはそうではありません)。取り扱い 個人を特定できる情報 必要がない場合は)) CD のシリアル番号を追加し、レジストリ キー (またはデータファイル) に BLOB の有効な署名がない限りブートを拒否します。ユーザーは BLOB を送付することでプログラムをアクティブ化し、あなたは署名を返送します。

潜在的な問題としては、実質的にあらゆるものに署名することを申し出ているため、誰かが実行することを想定する必要があることが含まれます。 選択されたプレーンテキスト および/または 選択された暗号文 攻撃します。この問題は、提供されたシリアル番号を確認し、無効なシリアル番号からのリクエストの処理を拒否するだけでなく、一定期間内 (たとえば、年に 2 件) に指定された S/N からの指定数を超えるクエリの処理を拒否することで軽減できます。

いくつか指摘しておきたい点があります。まず、熟練した決意の強い攻撃者は、無制限にアクセスできる部分のあらゆるセキュリティを回避できます (つまり CD にすべて含まれています)、そのアカウントでできる最善のことは、正当なアクセスを取得するよりも不正なアクセスの取得を困難にすることです。第二に、私は専門家ではないので、この提案されたスキームには重大な欠陥がある可能性があります。

また、プロセスに複数のステップを取り入れDRMの振る舞いがあります。最もよく知られた例の一つは、彼らのCreative Suiteのインストールを検証するためのAdobeの方法の一つです。ここで説明する従来のCDキー方式は、その後、使用されているAdobeのサポートラインが呼び出されます。 CDキーは、Adobeの担当者に与えられ、それらはバックユーザが使用するアクティベーション番号を与える。

はしかし、ステップに分割されているにもかかわらず、これは通常のプロセスに使用される亀裂の同じ方法に獲物を落下します。プロセスはすぐに発見されたオリジナルのCDキーと照合され、アクティベーションキーを作成するために使用される、とキーの両方を組み込んだ発電が行われました。

しかし、この方法では、まだ製品を確認するなしのインターネット接続を持つユーザーのための方法として存在します。今後は、インターネットアクセスがユビキタスになるにつれて、これらのメソッドが除去されるかを確認するのは簡単です。

一切の著作権侵害に対する保護を提供していないながら、

CDのすべては正直ユーザーinconvience保護アルゴリズムをコピーします。

「海賊」のみ、彼はその後、n個のコピーを作成し、それらを配布することができ、1枚の合法的なCDとそのアクセスコードにアクセスする必要があります。

それは問題では、コードを作る方法を暗号的に安全な、あなたは、プレーンテキストまたは正当なユーザーにCDでこれを提供する必要はありませんソフトウェアをactiviteすることはできません。

最も安全な方式は、ユーザがソフトウェア(CPUシリアル番号、MACアドレス、IPアドレスなど)を実行するマシンのいくつかの詳細とソフトウェア・サプライヤを提供するいずれかの関与、または、上のソフトウェアを登録するには、オンラインアクセスを必要とします取引先のウェブサイトとリターンではactivitationトークンを受け取ります。最初のオプションは、手動で管理の多くを必要とし、非常に価値の高いソフトウェアのためにそれだけの価値があるあなたは、ネットワークアクセスが制限されているか、あなたがファイアウォールの背後に立ち往生している場合は、2番目のオプションは詐称することができ、absolutly腹立たしいされます。

全体的には、その顧客との信頼関係を確立することが容易くらい!

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