13

I'm developing an intranet application (C#) that uses some data (local to the web server) that we'd like to keep private. This data is encrypted (AES) using a legacy data repository. We can't totally prevent physical access to the machine.

Clearly, we're never going to have perfect security here. However, we want to make it as hard as possible for anyone to gain unauthorized access to the data.

The question is how best to store the key. Encrypting it based on some machine specific ID is an option, but that information would be readily available to anyone running a diagnostic tool on the machine.

Encoding it in the application is an option (it's a one off application). However, .NET assemblies are pretty easy to decompile. So, would it be best to obfuscate it, use an encryption launcher, compile it?

Or is there an option I'm missing?

Just so we're clear, I know it's pretty much a lost cause if someone is determined, but we're looking to make it as hard as possible within the constraints.

4

3 に答える 3

5

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

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

于 2009-03-06T18:34:15.660 に答える
4

難読化の用語で言えば、あなたが求めているのは定数隠蔽と呼ばれます。つまり、定数を、実行時に実行される多数の関数と計算に変換して、その定数を再実体化する手段です。

ただし、これは依然として難読化の範囲内にあり、攻撃者が単にこの定数に関連するコードをマップし、それを別のアプリケーションで実行して値を取得するコード抽出の影響を受けやすくなります。または、目的の値をスキャンするために、アプリケーションのメモリを適切なポイントでダンプします。

ホワイトボックス暗号化と呼ばれる、特に暗号鍵を隠すもう少し高度な方法があります。これは、特定の鍵から暗号関数を本質的に生成し、それらを一緒に焼き付けることにより、鍵のない暗号を採用します。名前が示すように、この方法は、ホワイト ボックス攻撃のシナリオ (攻撃者はバイトコードにアクセスでき、実行時に実行可能ファイルを検査および操作できる) でも回復力を持つように考案されています。

これらはどちらも、あいまいさによってセキュリティを実現するための非常に高度な方法であり、そもそもこれを行うことを強制しない代替モデルを検討する価値があるかもしれません.

于 2012-09-30T17:17:42.787 に答える
2

誰かがあなたのプログラムにデバッガーをアタッチできれば、あなたにできることはまったくありません。彼らはあなたの設定を理解したり、アプリを逆アセンブルしたりする必要はありません.

このような状況では、難読化は役に立ちません。

最善の防御策は、ハードウェアを使用してキーを保護することです。これにより、暗号化は行われますが、キー自体は提供されません (また、ワイヤのプローブ、メモリの低温/放射線/その他の新しいものへの暴露などの攻撃に対して強化される場合もあります)。 . IBM は適切なことを行っていますが (google IBM-4764)、安くはありません。

于 2009-03-06T20:38:46.797 に答える