criptografando um aplicativo .net e assemblies

Eu tenho uma pergunta sobre criptografia / proteção contra cópia.

Estou escrevendo um aplicativo para uma empresa que usa um dongle. Por favor, não me diga que a proteção do software é inútil, ou que devo deixá-la voar livremente no ar, ou que toda vez que passo fazendo isso é um desperdício; essa não é uma pergunta filosófica sobre a validade da proteção de software, mais como um tutorial.

Pelo que entendi, o primeiro passo para decifrar um software protegido por dongle é remover todas as chamadas para o dongle do código (ou seja, corrigir o executável). Também como eu entendo, posso criar 'nomes fortes' no .NET para proteger o aplicativo e o assembly, conforme explicadoneste artigo do MSDN.

A nomeação forte é suficiente para garantir que meu aplicativo não possa ser facilmente corrigido? Ou preciso usar algum tipo de biblioteca de criptografia? Se eu precisar usar uma biblioteca, qual ou onde posso obter informações sobre como configurar isso?

O próximo passo, é claro, é colocar algoritmos importantes no dongle. Sei que esses são apenas obstáculos para o cracker dedicado, mas à medida que nossa participação no mercado aumenta, o aumento nos ajuda a chegar ao ponto em que a picada da pirataria não é tão sentida (espero).

Obrigado!

questionAnswers(5)

yourAnswerToTheQuestion