さまざまな種類のソフトウェアを使用してそれらを何度も目にしましたが、私が常に疑問に思っていることの1つは、ソフトウェアのkeygenがどのキーを生成するかを知る方法です。私はその基本原則を知っています。keygenはソフトウェアインストールファイルのどこかを見て、プログラムが機能するための暗号化されたファイルと一致するキーを作成します。しかし、私は彼らがそれをどのように行うか、そしてそれを防ぐ方法を知りたかった。これは実際には複数の部分からなる質問です。
- キーシステムはどのように機能しますか?
- プログラマは通常、キーに基づいて機能するソフトウェアをどのように作成しますか。私は中級プログラマですが、セキュリティ/著作権侵害対策の側面の多くを学んだことはありません。ソフトウェアの動作を開始するためのキーをどのように作成または認識しますか?
通常、この「暗号化されたファイル」はどこにありますか?
- それはコンピュータ上の物理ファイルにあるのか、それが呼び出すサイト外のデータベースにあるのか?
企業がそのファイルを暗号化するために何をしていますか?
- 鍵は平文以上のもので保存する必要があると想像しますが、暗号化を維持するために何をしますか?
- keygenはキーの作成にどの方法を使用していますか?
- 私は "cain&able"などのいくつかのパスワードクラッカーソフトウェアを使って遊んでみましたが、ブルートフォースや辞書などのいくつかのパスワードクラッキング方法を使用すると、ETAが数年で得られることに気付きました。 keygensは即座にキーを作成するようです。彼らは完全に異なる方法を使用していますか?
- 海賊版ソフトウェアでのkeygensの使用を防ぐために、企業はどのような対策を講じることができますか?
- 配布する独自のソフトウェアを書き始めています。既存の信頼できる簡単な方法を使用して防止することはできますか
まあそれは多くの実装があることに依存します。それらの1つは stackoverflow で議論されました:
ユーザーごとに特別なビルドを行いたくないとすると、次のようになります。
注:すべてのキースキームが解読される可能性があります。そのため、多くのツールがオンライン検証を使用しています。
前の方法を使用する場合、通常、暗号化されたファイルはありません。別のアルゴリズムでキーを生成する方法は他にもあるかもしれませんが、プログラムにすべてのキーを格納することはありません。
ユーザーがシステムに入力したキーの保存を参照している場合、設定ファイルにプレーンテキストが保存されることがあります。時々、彼らはこのファイルを暗号化するためにハードコードされたキーで対称的な(AESのような)暗号化を使います。
プログラムが使用するスキームを理解し、独自のkeygenに実装するだけの人がいるからです。
オンラインアクティベーション。ただし、顧客がソフトウェアを使用するのが難しいほど、購入する可能性は低くなります。結局、piracy-proofというソフトウェアは1つもありません。もしあれば、アドビやマイクロソフトのような企業が即座にあなたを雇うでしょう。
コンピュータソフトウェアのシリアル番号には特定のパターンがあり、インストーラまたはアプリケーションはそれが正当なキーであるかどうかを検出できます。非常に単純な例は、すべてのシリアル番号に5の数字が正確に3回出現することです。したがって、1932-1253-2319-5512が有効なシリアル番号になります。実際のシナリオでは、数値間の関係はもちろんより複雑になります。
出荷されたソフトウェアには、シリアルが有効かどうかをチェックするアルゴリズムが含まれています。ソフトウェア作成者は、製品のシリアル番号を作成できるソフトウェアを持っています。
Keygenを作成するために、クラッカーグループ(コピー防止スキームを破ることを専門とする人々)がプログラム実行可能ファイルを分析して、シリアルをチェックする部分を見つけます。次に、アルゴリズムを再構築して、チェックコードに基づいてシリアルを作成します。完成したkeygenは、アルゴリズムを適用してシリアル番号を作成するアプリです。
Keygenには実際にはアルゴリズムが含まれず、ランダムに選択される有効なシリアル番号のリストが含まれる場合があります。
マイクロソフトがキーが有効であるかどうかだけでなく、コピーと一緒に販売されており、別のコンピューターでまだ使用されていないかどうかもチェックしたため、Windows XPのkeygenはより複雑でした。 keygenはMicrosoftサーバーに大量のリクエストを送信し、それが有効なキーであるかどうかを確認しました。
キーシステムはどのように機能しますか?
最も一般的な形式はif (some-complex-or-not conditions-here) then (OK)
です。チェックされた状態の複雑さは、ファンタジーによってのみ制限されます
通常、この「暗号化されたファイル」はどこにありますか?
共通のパターンはありません、この情報をどこにどのように保存して読み取るか。ファイルの場合もあり、ファイルの場合もありません(Windowsの場合のように、レジストリキー)。
企業はそのファイルを暗号化するために何をしますか?
通常のアクティブ-プレーンテキストとして保存しないでください。保存する前に変換の不可逆的な方法を使用しますが、キーをアクティブ化すると、プレーンテキストのキーストレージでさえ完全に防弾になる可能性があります。そしてハッキング可能な方法ですが、はうまくいくかもしれません)
Keygenはどのような方法でキーを作成していますか?
リバースエンジニアリングされた有効性をチェックする方法リバースエンジニアリングに役立ちます作成のアルゴリズムkey-data
海賊版ソフトウェアでkeygenを使用しないようにするために、企業はどのような対策を講じることができますか?
非技術的-製品のリーズナブルな価格。この場合、keygensは(とにかく)表示されますが、要求された(および使用されたよりも、クラックチームのgame直接的な影響)大量消費者productによる。
技術的に-デバッガーでの実行の防止、ファイル内の暗号化されたコードとの組み合わせ(インメモリー復号化、一部の機密部分ではマルチレイヤー)、メモリー操作のチェーン、外部ストレージ内のキーのオンライン検証(以前の方法を参照)チェッカーにも個別に適用可能)...