2009-07-26 21 views
1

私は、securityDLLが含まれていて、SNKで署名されている場所に書いているアプリケーションでセキュリティ対策を書いています。このアセンブリが存在する場合、公開キーを取得するときに返されるByte配列をチェックし、それを自分のアプリケーションと比較します。セキュリティ対策としての署名付きアセンブリの公開鍵の使用

は、誰かが私のアセンブリを変更または公開鍵を返します正しい場所に自分のDLLを提供していないことを確認するために、この適切なセキュリティですか?

私は難読化ツールは何をすべきかを見てきたし、彼らは私のアセンブリを辞職、しかし、彼らは実際にSNKを使用しているか、彼らはアセンブリの内部を読んで、それを再使用していますか?同じSNKで署名

答えて

3

あなたは安全なアセンブリに署名するために使用された.snkファイルを続ける場合は、誰もが同じ公開鍵を使用して新しいセキュリティDLLを作ることができるべきではありません。

厳密な名前のアセンブリに署名するには、暗号鍵のペアが必要です。このペアの秘密鍵は、アセンブリに署名するために使用されます。誰かがセキュリティアセンブリを変更する場合は、元のsnkファイルを必要とする再署名が必要になります。異なるsnkファイルが使用された場合、アセンブリは異なる公開鍵を持ちます。

security.dllへの参照を追加する場合、ランタイムは正しいアセンブリがロードされていることを確認します。同じ名前とバージョンではあるが強力な名前が異なるアセンブリが見つかった場合、フレームワークは元々参照されていたものとは異なるアセンブリとしてこれをクラス化するため、エラーが発生します。

詳細はMSDN docsをご覧ください。

2

すべてのアセンブリは、同じ公開鍵を持つことになりますので、いや、これは、任意の容量のセキュリティ対策ではありません。厳密にアセンブリの名前を付けることは、セキュリティのためではなく、バージョン管理と一意性を保証するためです。

+2

攻撃者がバイナリにアクセスできる限り、攻撃者は変更して新しいキーで辞退することができます。また、呼び出すアセンブリを変更して、自分が探している公開鍵を自分自身のものに変更することもできます。 –

関連する問題