2009-04-18 10 views
37

私はいくつかのソフトウェアが秘密鍵をどのようにして隠していないかをしばらく疑問に思っています。ほんの一例:コード内の秘密鍵をどのように非表示にしますか?

  • DVDプレーヤーソフトウェアは、CSS鍵を隠しシリアル番号/登録コードと
  • ソフトウェアが明らかにシリアル番号

を検証するために使用されるキー/ハッシュを隠し、これらのプログラムは、より多くの何かをしますキーを盗んでシリアル番号などを簡単に生成できるように、バイト[]内にキーを置くだけでなく、これらのキーを非表示にするために使用される戦略はありません簡単に見つかりますか?

+2

しかし、アドビはどのようにPhotoshopでそれをやっていますか? – Jeena

+17

1ワード:失敗しました。 – dmckee

答えて

35

これらの秘密鍵が簡単に発見された理由は、それらがソフトウェアに隠されていたためです。

ソフトウェアで秘密を隠すことは避けてください。難読化はこれまでのところあなたを得ることができません。逆アセンブル、ユーザーモード、カーネルモードのデバッガに完全にアクセスできる人から、ソフトウェアのキーをどれだけ隠すことができますか?クラックするまでには時間がかかるだけです。

+22

これは質問に答えますか? –

+1

あなたが言ったように、「それは時間が割れてしまう前です。したがって、この戦略は、この鍵がハードウェアで保護された鍵よりも早く期限切れになることを考慮すると、妥当である可能性があります。 – kdmin

1

ライセンスを検証するために必ずしもキーが必要というわけではありません。

しかし、そのことを無視して、あなたのキーは別の機能の結果でもあります。あなたは実際に特定のキー値を格納するのではなく、その場でキーを生成する関数を持っています(常に同じ結果)。不可能ではありませんが、あなたがもはや価値を求めていないので、見つけるのがずっと難しくなりますが、それは方程式であることがわかります。

+7

時間の無駄です。任意のクラッカーは、単に関数の結果をメモリからまっすぐに取り出します(または、関数全体をキージェンにコピーすることもできます)。これは宿題ではありません。彼はちょうど彼の仕事を表示する必要なく、正しい答えを得る必要があります – Mikeage

0

コード内の秘密鍵を隠すことは本当に安全ではありません。あなたはDVDに気づいたことがあり、ほとんどのソフトウェアのシリアル番号の登録は毎日ハッキングされます。本当に何かを保護したい場合は、公開鍵の暗号化を使用する必要があります。

+3

公開鍵暗号化は解決策ではありません。秘密鍵の機密性を保護しなければならないのと同様に、公開鍵の完全性には保護が必要です。一般的なメカニズムは、物理的な改ざん対策を備えたハードウェア、またはパスワードベースの秘密鍵です。 – erickson

2

ソフトウェアの開発を開始したとき、日付付きライセンスファイルが作成されました。それから、私たちは、あまりにも多くの人々が私たちのソフトウェアを購入することに興味を持っていないことに気付きました。それから、私たちはそれを無料で捨てることにしました。もっと多くの人々が少なくとも私たちの傑作を試してみるようになった。最後に、私たちはソフトウェアを公開しました。より多くのユーザーがそれを使い始めました。これで、少数のユーザーが有料の顧客になることができるようになりました(つまり、プロダクトサポートを購入するか、カスタマイズを依頼すること)。

結論は、ソフトウェアをクラックさせたい場合は、とにかくやります。この秘密の秘密鍵で保護しようと時間を無駄にするのは本当に価値がありますか?

+1

あなたのソフトウェアは何ですか? – shoosh

+8

あなたのビジネスのすべてのプロセスはかなり後退しているようです。 – Hejazzman

5

鍵を永久に隠すことはできません。しかし、あなたは確かにそれを見つけることが困難になることができます。いくつかのアプローチでは、メモリ内の鍵を暗号化し、互いに照合された複数のコピー(多分に暗号化されたもの)を保持し、アクセスするダミーコピーを残し、いくつかの奇妙な形式で鍵を保存するなどしています。あなたの鍵が欲しいですが、少なくともカジュアルで経験の浅い攻撃者を説得することはできます。

+0

隠されたキーが見つかったとしても、それが一般的に難しいわけではありません。 –

-2

これは、DVDとBluRayが非常に早急にクラックされた最大の理由の1つだと思います。普通の人がデジタルムービーをデジタルコピーできるのを本当に止める唯一の方法は、コンピュータでの使用を許諾されていないメディアを作成し、認定されたプレーヤーでのみ使用できるということです。自分のコンピュータやラップトップで映画を見たいと思っていた市場の部分を切り捨てるだろうが、もうちょっとでも完璧なデジタルリップスを止めて、平均的な人がそれをやり遂げるのを止めるだろう。

6

結論はできません。理由は他のコメントを参照してください。 PGP/GPGのような暗号化ソフトウェアでさえも、鍵をファイルに保存しておき、そのファイルを安全な場所に保管したり、安全なものに保存したりするよう強く求めています。実行可能コードの一部として格納されたキーが検出されます。

実際に、通常の操作の一環としてクライアントによって復号化されるクライアントマシン上のものを暗号化しようとすると、それもまた愚かな作業です。クライアントマシンは本質的に安全ではなく、データに何ができるのかを制御することはできません。

認証しようとしている場合は、代わりにサーバーへのログインや、ソフトウェアの検証に使用される生成されたKeyCodeなどのインターネットベースの認証を参照してください。

秘密鍵は、秘密鍵ペアの一部として、保護できるデータファイルに保存する必要があります。対称キーは、セッションキーとしてオンザフライで生成し、破棄する必要があります。自分のコンピュータ上に秘密鍵またはセッション鍵を持っている人は誰でも、それを発見して自分の意図に反して使うことができます。

詳細については、Bruce Schneierの "Applied Cryptography"をお読みください。

+1

「PGP/GPGのような暗号化ソフトウェアでも鍵をファイルに保存する」という文は誤解を招きます。 PGPは、ユーザーだけが知っているパスフレーズを使用してこれらのキーを暗号化します。また、PGPは鍵に安全なメモリを使用して、HDにキャッシュされないようにし、PGPはメモリ検査を使用して鍵を見つけることが困難になるように長めに渡ります。私がこの答えを改めることができるなら、私はそうするだろう。 – MrEvil

+0

私の主張は、ソースコードに秘密のデータが格納されていないということでした。自分の秘密鍵を保護するのはユーザーの責任です。秘密鍵のパスフレーズがあっても、悪意のある者が秘密鍵ファイルにアクセスすると、それはゲームオーバーです。信頼できる当事者以外の誰にでもアクセスできる場所に秘密鍵を格納すると、それがexe、RAM、またはファイルのいずれであろうと、苦痛をもたらすでしょう。 –

12

キーをどこかに隠し、必要なときに復号化するだけです。 「安全に」キーを使用することは複雑な部分です。クラッカーは、解読されたキーを使用してダンプした場所にブレークポイントを設定することがあります。彼らはあなたのコードで既知の暗号アルゴリズムを使用していることを示すパターンをスキャンするかもしれません(ほとんどのアルゴリズムはあらかじめ計算されたテーブルを持っています)。

そのため、実行可能なソフトウェア全体を分析するのは難しいです。このためには、実行可能なパッカー、バーチャルマシンでのコードの実行、完全性チェックなどを使用します。これはすべて、デバッグの速度を落とし、コードを変更することです。

ほとんどの人が指摘するように、誰かを止めることはできません。遅くするだけです。私はクラッカーフォーラムに行き、重要な隠れ問題についての提案を求めています。あなたがきれいに尋ねれば、彼らはおそらく役に立つでしょう。

ps。公開鍵暗号は鍵を隠すことはありませんが、ライセンス方式を実行している場合は、鍵ジェネレータを作成するのが難しくなる(または理論的に不可能になる)可能性があります。

1

あなたが買う余裕があるなら、秘密鍵を暗号化USBトークンに保存するのが最善です。キーは書き込み専用です。つまり、設定することはできますが、読み取ることはできません。トークンは、そのハードウェア内で暗号操作を内部的に行います。キーを取得するのは非常に複雑になります(トークンに既知の脆弱性がない場合、古いトークンではそうではありません)。

+0

この種類の保護は、ソフトウェアよりも1つ上のレベルです。任意のメモリダンプを使用してUSBキーを複製できます。あなたは先に進み、与えられたキーIDでユーザーのオンラインユーザーをチェックしようとすると、ネットワークにもパッチを当てることができます。コードを保護する真の方法はありません。それを行う最善の方法は、それを解読しようとする人々を消散させ、定期的にシステムを更新することです。あなたとあなたを傷つけることができる人との間の小さな時間枠は、ここで唯一の友人です。 – erm3nda

+0

クラックされたソフトウェアを使用するユーザーを解散させる最善の方法は、クラックを解放し、その上にたくさんのウイルスを入れることです。そうすれば、あなたのソフトウェアを使用したいと思っているユーザーを、クラックする可能性のある人よりももっと重大な人を解散させることができます。手ごろな価格のプランを立てれば、キーを隠すほどの成功を収めます。 – erm3nda

0

できません。ターゲットマシンにアクセスできる攻撃者は、コードを解読してターゲットマシン上のキーファイルを見つけることができます。

暗号化キーが安全であることを保証するための唯一の方法は、それが必要なときにユーザーが手動で入力してください。

関連する問題