We are about to implement a licensing algorithm in a strong-named .NET assembly that is referenced by other components of the application. Of course, we want to minimize the risk that someone exchanges the assembly that contains the license check and by that unlocks application functions.
As far as I know, you can redirect an assembly to a different version (either by a publisher policy or in the application config file). But I haven't found a way to redirect to an assembly that has another name or was signed with a different key.
Are there other ways to influence assembly binding so that an assembly that was signed with a different key is used? If there are, how high is the effort that is needed to bypass this algorithm?