.Net security noob here...阻止其他人加载我的程序集的最简单方法是什么?
背景:虽然我真的在寻找“足够好”的保护(有足够的时间/金钱/聪明,有人可以成功破解、破解和攻击),但这似乎应该已经是一个已解决的问题,而我只是想念它。
这是我(认为)我知道的:
根据这个微软文档,虽然强命名可以用作一层安全性,但不一定是这样的(请参阅警告:不要依赖强名称来保证安全。它们仅提供唯一身份。)
在那^注意,我遇到了无法加载第三方程序集的情况(假设我认为是),因为他们没有签署他们的程序集,但我的所有程序集都是。所以我不得不 ildasm 他们的程序集,用我们自己的 snk 签名,然后 ilasm 回来)才能使用他们的图书馆。所以,强命名对我来说似乎不是一个好的安全机制。 但是......在代码中进行简单检查以验证调用程序集是否使用我的公钥令牌进行了签名?这足够有效吗?
如果不应该将强命名用于我要完成的工作,那么在 dll 上实施 Authenticode 数字签名检查是否是更好的路由(似乎 wintrust.dll 可以帮助解决这个问题)?
我一直在使用几个供应商的混淆工具,其中许多都带有许可和各种东西。我可能会使用一些混淆来隐藏一些敏感部分,但是我仍然希望有一种机制来防止有人加载我的敏感库,而不必使用字符串和代码加密等功能,这些功能通常会带来性能(和其他)费用。
回到这个问题,阻止某人加载我的程序集的最简单方法是什么?