4

実際、プライベートメソッドはC#で実装されており、それでも。で検索できますReflection

私がやろうとしているのは、public string Encrypt(string data)暗号private string Decrypt(string cipher)化と復号化を実行するためのメソッドを作成することです。

残念ながら、誰かが.NET Frameworkを知っている場合、彼はメソッドReflectionを見つけるために使用できDecrypt、暗号化されているすべてのものを復号化します。

それほど安全ではないようです。Decryptだから私はメソッドを本当にプライベートメソッドにしたいと思っています。

しかし、それを行う方法は?


2012年1月9日午後10時52分シドニー時間更新

bdaresは、この質問の技術的な説明を提供します

エリックリッパートはこの質問の政治的説明を提供します

両方の専門家に感謝します!

4

5 に答える 5

16

できません。攻撃者がコンパイル済みまたはソースコードにアクセスできる場合、攻撃者はプログラムを追跡し、暗号化または復号化されている場所を見つけることができます。

キーを別の場所に保存することでセキュリティのレイヤーを追加できますが、通常、攻撃者がサーバーでコードを実行している場合は、すでに失敗しています.

(攻撃者がサーバー上でコードを実行している場合にのみ、これについて心配する必要があります。それ以外の場合は、メソッドがプライベートであるかどうかは問題ではないためです。また、コードを実行していない限り、リフレクションを使用してメソッド名を見つけることはできません。サーバー. 要するに: あなたはここで間違ったことを心配しています. )

于 2012-01-09T06:17:02.303 に答える
15

あなたの根本的な問題は、信頼モデルが間違っていることです。誰かがリフレクションを使用できる場合、その人はユーザーです。あなたはソフトウェアプロバイダーです。あなたは彼らのために働いています。信頼はあなたからではなく、彼らから 流れます。彼らはあなたを信頼しなければならない人であり、あなたではありませ

ユーザーを信頼できない場合は、最初からソフトウェアを販売しないでください。あなたを攻撃しようとしていると思われる人に武器を売ってはいけません。

于 2012-01-09T06:32:19.413 に答える
2

難読化について言及していると思います。これは、Reflector などのプログラムで開いたときに、人間がコードを読み取れないように隠す/偽装する試みです。Visual Studio 内で提供されるのは、PreEmptive Solutions dotfuscator のコミュニティ使用ライセンスです。このライセンスは、小規模なプロジェクトや Windows Phone プロジェクト (アドオンをダウンロードした場合) でこの機能を提供します。同じベンダーや他のベンダーから商用プラットフォームも利用できます。

このブログ投稿では、もう少し詳しく説明しています

于 2012-01-09T06:21:01.717 に答える
1

独自の暗号化方法を作成している場合、それは間違っています。あなたや私よりも暗号化についてよく知っている人は、暗号化のための優れた方法をすでに考え出しており、MS はそれらのほとんどを既に実装しています。

優れた暗号化の場合、暗号化を安全にするのは方法ではなく鍵です。キーを安全に保管し、アルゴリズムをすべての人に公開できます (また、公開する必要があります)。

両方のコンテンツを配布し、暗号化 (別名 DRM) を維持しようとしている場合、鍵をハードウェアにうまく隠しておくことができない限り、おそらく失敗する運命にあり、それでさえ、いくらかの時間 (おそらく数か月) しか稼げません。 、多分年。

于 2012-01-09T06:22:53.340 に答える
0

あなたの正確なアプリケーションについてはわかりません。しかし、自分のシステムで暗号化と復号化の両方を行う顧客に製品を販売する場合、暗号化を秘密にしておく方法はありません。ただし、代わりに、独自の使用のために新しい秘密鍵を生成することを許可できます。このようにして、各顧客のデータは他の顧客に関して「安全」です。ただし、同じ顧客のサイト内ではまだそれほど安全ではありません。暗号化されたコンテンツを管理するその他の状況では、お客様側で生成されるプライベート マスター キーの作成を検討し、顧客のみが公開キーを持つことを許可することもできます。

于 2012-01-12T15:25:32.747 に答える