Единственная защита, на которую можно полагаться (и то с оговорками), это хранение и обработка ключей в донгле и использование потом результата в "большом брате". Все остальное "ломается" любым программистом, владеющим DDK , минут за 15
в прямом. смотреть на ключи защиты, типа rsatoken, alladin и прочие с ними. Используют какой-то подвид RSA, и закрытый ключ не покидает пределов токена