ここで.Netセキュリティ初心者...他の誰かが私のアセンブリをロードするのを防ぐ最も簡単な方法は何ですか?
背景: 私は本当に「十分な」保護 (誰かがクラック、ハッキング、攻撃に成功するのに十分な時間/お金/賢さ) を探していますが、これはすでに解決された問題のように思えます。
これが私が知っている(と思う)ことです:
厳密な名前付けはセキュリティ層として使用できますが、このマイクロソフトのドキュメントによると、必ずしもそうすることが意図されたわけではありません(「警告: セキュリティのために厳密な名前に依存しないでください。一意の ID のみを提供します。」を参照してください)。
その上で、サードパーティのアセンブリをロードできなかった状況に遭遇したことに注意してください (そうであったと思います)。そのため、ライブラリを使用するために、アセンブリをildasmし、独自のsnkで署名してから、ilasmを戻す必要がありました。そのため、厳密な名前付けは、私にとって優れたセキュリティ メカニズムとは思えません。 ただし、呼び出し元のアセンブリが自分の公開キー トークンで署名されていることを確認するコードでの簡単なチェックはどうでしょうか。これは十分に効果的ですか?
私が達成しようとしていることに厳密な命名を使用すべきではない場合、dll に Authenticode デジタル署名チェックを実装する方が良いルートですか (wintrust.dll がこれに役立つようです)?
私は難読化のためにいくつかのベンダーのツールを試してきましたが、多くのベンダーにはライセンスやあらゆる種類のものが付いています。機密性の高い部分を隠すために少しの難読化を使用する可能性がありますが、多くの場合パフォーマンスを伴う文字列やコードの暗号化などの機能を使用せずに、誰かが機密性の高いライブラリをロードできないようにするメカニズムが必要です。 (およびその他の) コスト。
質問に戻りますが、誰かが私のアセンブリをロードするのを防ぐ最も簡単な方法は何ですか?