3

暗号化関数にキーが必要な場合、ソース内のキーをどのように難読化して、逆コンパイルでキーが明らかにならないようにして復号化を有効にしますか?

4

2 に答える 2

6

答えはプラットフォームと開発ツールに大きく依存しますが、一般的に信頼できる解決策はありません。暗号化機能は、キーが「自然な」形式で存在しなければならないポイントです。したがって、ハッカーが行う必要があるのは、そこにブレークポイントを配置してキーをダンプすることだけです。逆コンパイルする必要さえありません。したがって、難読化は、初心者または何らかの理由でデバッグができない場合にのみ有効です。アプリケーションに存在するテキスト文字列をキーとして使用することは、バリエーションの 1 つです。

しかし、もちろん、鍵を中に入れないことが最善の方法です。使用シナリオによっては、一部のシステム情報 (スマートフォンの IMEI など) をキーとして使用できる場合があります。それ以外の場合は、アプリケーションのインストール時にキーを生成し、そのキーをアプリケーション データの不可欠な部分として保存できます (たとえば、DB の列名をキーとして使用するなど)。

それでも、前述のように、デバッガーを実行できる場合は、これらすべてを比較的簡単に追跡できます。

デバッグに対抗することが 1 つあります。それは、復号化をサードパーティにオフロードすることです。これは、外部の暗号化デバイス (USB 暗号化トークンまたはスマートカード) を使用するか、Web サービスを呼び出して情報の特定の部分を復号化することによって実行できます。もちろん、限られた一連のシナリオにのみ適した方法もあります。

于 2012-05-24T05:28:52.217 に答える
1

暗号化は、.NET 構成システムに組み込まれています。秘密鍵の保存場所を含め、app/web.config ファイルのチャンクを暗号化できます。

http://www.dotnetprofessional.com/blog/post/2008/03/03/Encrypt-sections-of-WebConfig-or-AppConfig.aspx

ソース

于 2012-05-24T05:09:26.470 に答える