19

私が現在開発しているシェアウェア登録システムは、公開 DSA キーを実行可能ファイル自体に埋め込み、秘密キーはサーバー上に常駐します。(議論のために、サーバーは 100% 安全であり、誰も秘密鍵を手に入れる方法はないと仮定しましょう。)

プログラムが購入されるたびに、サーバーは秘密鍵でユーザーの名前に署名することにより、ユーザーのライセンスを生成します。そのライセンスは、ユーザーに電子メールで送信されます。ユーザーが自分の名前とライセンスをシェアウェア アプリケーションに手動で入力すると、アプリケーションに埋め込まれた公開鍵によって有効または無効なライセンスであることが検証されます。

ただし、実行可能ファイルを逆アセンブルして公開鍵を取得するのは、適切な「ノウハウ」を備えた決定的な人物にとってはかなり簡単なことです。

ここでの私の質問は、彼らはそれで何ができるでしょうか? 公開鍵自体は完全に無害ですか? 公開鍵は、キー ジェネレーターをリバース エンジニアリングするのに十分な情報ですか?

好奇心旺盛な人は知りたがっています。前もって感謝します!

4

8 に答える 8

24

公開鍵は彼らに何の役にも立たないはずです。ただし、チェックが簡単に見つかった場合は、単純にそれを回避して、公開鍵に対してライセンスを検証する手間をかけずに常に成功するテストにパッチを当てることができる可能性があります。

于 2010-10-19T20:39:26.683 に答える
7

公開鍵だけで、サーバーから送信された暗号化された情報を解読できます。それでおしまい。公開鍵から秘密鍵に移行するのは非常に困難です。それが公開鍵暗号化のしくみです。(「例外的に」とは、十分な資金を得た政府の取り組みに抵抗するように設計されていることを意味します。NSA があなたをクラックするのを防ぐことができれば、Joe Blow を阻止するのに十分であることは間違いありません。)

DRM には役立たないことに注意してください。これは、あなたがやろうとしているように聞こえます。DRM は設計上壊れているだけです。攻撃者がローカル デバイスでロックを解除するための情報と鍵を持っている場合、それはすでにゲーム オーバーです。攻撃者に鍵を渡した場合、攻撃者はそれを秘密にしておこうとは思わないので、公開した方がよいかもしれません…</p>

于 2010-10-19T20:41:58.177 に答える
4

まだ破られていない暗号化方式が使用されていると仮定すると、公開鍵を使用して秘密鍵を決定することはできません。真に公開することを意図しています。誰にでも知られています。

于 2010-10-19T20:40:02.083 に答える
2

公開鍵はあらゆる場所で使用されます -- ログオン フォーム、銀行取引のセキュリティ、クライアント側の認証などエンドポイントへの公開鍵。

人々はあなたの公開鍵から何を知ることができますか? 彼らは明らかに鍵の名前と鍵の長さを知っています。キーは証明書の一部であり、会社や Web サイトの URL に関する詳細が含まれている可能性があると思います。

あなたへの私の質問は次のとおりです。

1) 実行可能ファイルの公開鍵について心配するのはなぜですか? 中途半端なクラッカーは、実行可能ファイルを変更して、公開鍵チェックを完全にバイパスします。変更可能なバイナリをクライアントに渡す場合、暗号化が強力であるという事実は無意味です。

2) 自分が混乱している可能性があることを認識していますか? 公開鍵暗号化を使用してバイナリを保護することに本質的に問題はありませんが、システムが発展するにつれて問題が発生する可能性があります。期限切れのキー、キーのロールオーバー、キーの発行 (これは販売用に開発しているツールだと思います) などは大きな問題になる可能性があります。それでもなお、より大きな課題は、クラッカーがバイナリを再ルーティングしてセキュリティ チェックを完全に回避するのを阻止することであるという現実にまだ悩まされることになります。

于 2010-10-19T23:34:05.090 に答える
1

非対称暗号方式では、公開鍵を攻撃者に渡しても安全です。ただし、この値は、秘密鍵によって生成された署名または暗号文とともに、対応する秘密鍵を取得するために自明な攻撃で使用できます。

于 2010-10-19T20:45:12.113 に答える
1

公開鍵を持っているだけでは、有用なことを行うには十分な情報ではありません。

できる唯一のことは、秘密鍵でしか復号化できない公開鍵を使用して誰かがメッセージを暗号化できることです。ただし、秘密鍵がサーバー上にのみある場合、これは何もしません。

他の攻撃では秘密鍵の計算を試みる必要がありますが、公開鍵を使用しても速度はまったく向上しません。

于 2010-10-19T20:41:01.140 に答える
0

公開鍵が役に立たないことに同意しません。独自の公開鍵と秘密鍵のペアを生成し、実行可能ファイルで公開鍵のビットを見つけたと仮定します。公開鍵を自分の公開鍵に変更します。これで、秘密鍵で何にでも署名できるようになりました。プログラムはそれを受け入れます。

于 2015-10-27T15:25:31.743 に答える
0

要点は、この種の暗号化は、メッセージの内容を保護し、送信者の信頼性を検証するように設計されていることです。この場合、送信者の信頼性は、ユーザー、つまり名前やベンダーなどに明確に知られています。この種の暗号化により、適切なキーが使用されるまで、コードの重要なビットが文字化けしたままになります。

ただし、キーが使用されると、ユーザーはソフトウェアの暗号化を解除してコピーを作成できます。完全に保護されたソフトウェアは完全に使用できません。関係はありませんが、これは保護に関する興味深い読み物です。

于 2010-10-19T21:25:05.667 に答える