ライセンスキーは著作権侵害対策のデファクトスタンダードです。正直に言うと、これは隠蔽によるセキュリティの侵害ただし、ライセンス キーがどのように生成されるのかはまったくわかりません。ライセンス キー生成の良い (安全な) 例は何ですか? どのような暗号化プリミティブ (ある場合) を使用していますか? メッセージ ダイジェストですか? そうである場合、どのようなデータをハッシュするのですか? クラッカーが独自のキー ジェネレーターを構築することを困難にするために、開発者はどのような方法を採用していますか? キー ジェネレーターはどのように作成されますか?
ベストアンサー1
旧式の CD キーの場合、CD キー (任意の文字列) を簡単に生成して簡単に検証できるアルゴリズムを作成するだけで済みましたが、有効な CD キーと無効な CD キーの比率が非常に小さいため、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 など) を取得できます。さらに、オンラインでのアクティベーションが必要です。
完全なアルゴリズムはかなり複雑ですが、これ(完全に合法!)ドイツで発行された論文。
もちろん、何をするにしても、オンライン サービス ( World of Warcraftなど) を提供しているのでない限り、あらゆる種類のコピー保護は単なる妨害にすぎません。残念ながら、価値のあるゲームであれば、誰かがCD キー アルゴリズムやその他の著作権保護を破る(または少なくとも回避する)でしょう。
本当の正しいやり方:
オンライン サービスの場合は、バイナリ ファイルであっても、それを使用するにはサーバーで認証する必要があるため、状況は少し単純になります (たとえば、WoW アカウントを持っている)。たとえば、プレイタイム カードを購入するときに使用される World of Warcraft の CD キー アルゴリズムは、おそらく次のようになります。
- 非常に大きな暗号的に安全な乱数を生成します。
- それをデータベースに保存し、カードに印刷します。
次に、誰かがプレイタイム カード番号を入力すると、それがデータベースにあるかどうかを確認し、ある場合はその番号を現在のユーザーに関連付けて、二度と使用できないようにします。
オンラインサービスの場合、上記のスキームを使用しない理由はありません。他のものを使用すると、問題を引き起こす。