質問

次のことを実行する必要があるシステムに対してどのような推奨事項を提供できますか。

プラグインをロードします (そして最終的には実行します)。これらのプラグインをロードするには 2 つの方法があります。

  • 許可されたプラグインのみをロードする(ソフトウェアの所有者によって開発された)
  • すべてのプラグインをロードする

そして、認可されたプラグインが本物(改変されていない)であることを合理的に安全にする必要があります。ただし、すべてのプラグインは個別のアセンブリに存在する必要があります。ローダー アプリケーションに保存された公開キーを使用して、プラグインに厳密な名前のアセンブリを使用することを検討してきましたが、これは、ローダー アプリケーション内で公開キーを変更するのが簡単すぎるように思えます(ユーザーがその気になれば)ローダー アプリケーションの難読化。もっと安全なアイデアはありますか?

役に立ちましたか?

解決

基本的に、自分のコードを他人のマシンに置く場合、セキュリティが絶対に保証されるわけではありません。

あらゆる種類のセキュリティ トリックを調べることができますが、最終的にはコードは彼らのマシン上にあるため、制御できません。

エンドユーザーが不正なプラグインをロードした場合、どれくらいの損失が発生する可能性がありますか?

他のヒント

エンドユーザーが不正なプラグインをロードした場合、どれくらいの損失が発生する可能性がありますか?

確かに、これは頻繁に起こることではありませんが、実際に起こった場合、私たちは多くを失います。100%安全なものは何も生み出さないことは理解していますが、人々がそれを実行するのを妨げるのに十分な障害にしたいと考えています。

完全な厳密名を使用した単純な動的読み込みを使用する場合の厄介な点は、プラグインが署名されている場合でも、ローダー アプリ内で単純な文字列リテラルを変更するだけで他のアセンブリを読み込めることです。

質問の幅を広げることができます。「.net アセンブリをリバース エンジニアリングから保護するにはどうすればよいですか?」

答えは「できません」です。まだ見たことがない人は、「reflector」を検索して、単純な exe で実行してください。

(ちなみに、暗号化/復号化ハードウェアが一緒に送られていない限り、これは常にあなたの手に負えないコードに対する答えです)、

難読化は、リバース エンジニアリングを開発よりも困難にする (より多くの費用がかかる) ようにしようとしますが、一部のタイプのアルゴリズムでは成功します。

議会に署名します。

強い名前の署名、または強い名前の署名は、ソフトウェアコンポーネントに、他の誰かがスプーフィングできないグローバルにユニークなアイデンティティを提供します。強い名前は、コンポーネントの依存関係と構成ステートメントが正確に適切なコンポーネントとコンポーネントバージョンにマッピングされることを保証するために使用されます。

http://msdn.microsoft.com/en-us/library/h4fa028b(VS.80).aspx

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top