[解決済み】ソフトウェアのライセンスキーはどのように生成されるのですか?
質問
海賊版対策として、ライセンスキーがデファクトスタンダードになっています。正直なところ、これは (中略)無防備さによるセキュリティ しかし、ライセンスキーがどのように生成されるのか、私にはよくわかりません。ライセンスキー生成の良い(安全な)例は何でしょうか?もしあれば)どのような暗号化プリミティブを使っているのでしょうか?メッセージダイジェストでしょうか?もしそうなら、どのようなデータをハッシュ化しているのでしょうか? 開発者は、クラッカーが独自のキー・ジェネレータを構築するのを困難にするために、どのような方法を採用していますか? キージェネレータはどのように作られているのでしょうか?
解決方法は?
旧来の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など)を同時に取得します。 さらに、オンラインアクティベーションが必要です。
完全なアルゴリズムはかなり複雑ですが、以下にうまく概説されています。
これ
(ドイツで発表された論文(完全に合法!)。
もちろん、何をするにしても、オンラインサービスを提供しているのでなければ(例えば ワールド オブ ウォークラフト 残念なことに、価値のあるゲームであれば、誰かが (あるいは少なくとも回避) CD-keyのアルゴリズムや、その他すべての著作権保護について。
リアル 正しい方法
オンラインサービスの場合は、もう少し簡単です。バイナリファイルを使用する場合でも、それを使用するためにそのサーバーで認証する必要があるからです(例:WoWのアカウントを持っている)。 World of WarcraftのCD-keyアルゴリズム(例えば、プレイタイムカードを購入するときに使用)は、おそらく次のようなものです。
<ブロッククオート- 非常に大きな暗号化された安全な乱数を生成します。
-
それをデータベースに保存し、カードに印刷する。
そして、誰かがプレイタイムカードの番号を入力したら、それがデータベースにあるかどうかをチェックし、もしあれば、その番号を現在のユーザーと関連付け、二度と使えないようにするのです。
オンラインサービスの場合、理由はない ではなく を使用する必要があります。それ以外のものを使用すると 問題を引き起こす .
関連
-
[解決済み] PHPでSQLインジェクションを防ぐにはどうしたらいいですか?
-
[解決済み] 後で平文を取り出すためのユーザーパスワードの保管について、倫理的にどのように取り組むべきでしょうか?
-
[解決済み] PHPでパスワードをハッシュ化するためにbcryptを使用するにはどうすればよいですか?
-
[解決済み] PHPでユーザー入力をサニタイズするにはどうすればよいですか?
-
[解決済み] HTTPSヘッダーは暗号化されていますか?
-
[解決済み] PDOのプリペアドステートメントは、SQLインジェクションを防ぐのに十分ですか?
-
[解決済み】XKCDコミック「Bobby Tables」のSQLインジェクションはどのように動作するのでしょうか?
-
[解決済み】ソフトウェアのライセンスキーを生成して検証する方法は?
-
[解決済み】cerファイル、pvkファイル、pfxファイルの違いは何ですか?
-
[解決済み】JWTをブラウザに保存する場所は?CSRFから保護する方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] XMLHttpRequestがファイルを読み込めません。クロスオリジンリクエストはHTTPのみサポートされています
-
[解決済み] 新しいAPIキーを生成するための最適な方法は何ですか?
-
[解決済み] curl - --insecure オプションを使用した場合、データは暗号化されますか?
-
[解決済み] CSRFとX-CSRF-Tokenの違いについて
-
[解決済み】すべてのHTTPリクエストをHTTPSにリダイレクトする方法
-
[解決済み】非画像ベースのCAPTCHAの実用的なアプローチ?
-
[解決済み】レトポリンとはどのようなもので、どのように機能するのですか?
-
[解決済み】cerファイル、pvkファイル、pfxファイルの違いは何ですか?
-
[解決済み】Windowsでコードサイニング用の自己署名証明書を作成する方法を教えてください。
-
[解決済み】Webブラウザはhttpsでコンテンツをキャッシュするか?