Модульное лицензирование на Guardant Code
Добрый день!
Приобрел пакет разработчика с ключиками Guardant Code Time, старательно ознакомился с документацией, которая идет в комплекте, а так же с уроками. Интересует защита приложение .NET. Опишу его вкратце.
Структура программы
Есть защищаемое приложение написаное на .NET 4.0, а также есть дополнительные модули в виде .dll сборок, которые грузятся динамически(через System.Reflection). У разных пользователей может быть разный набор этих самых модулей. В любой момент пользователь может докупить модуль к приложению. Частота обновления модулей(выхода новых версий dll) - 1-2 месяца. Также и с самим приложением.
Предполагаемая защита
Первое что приходит в голову это использовать защищеные ячейки памяти ключа + загружаемый код и реализовать следующее:
В ключ прописаны цифровые подписи для каждого модуля
При загрузке каждого модуля проверяется существует ли такая подпись в ключе, если нет, то модуль не работает(или работает некорректно)
Задача защиты сделать невозможным добавление сторонних модулей(взятых у другого пользователя), а также защиты приложения от копирования.
Возникает ряд вопросов:
1. Необходимо реализовать онлайн обновление, для того, чтобы дописывать модули или обновлять существующие(со сменой версии, ясное дело поменяется ЭЦП). Допустим есть сервер, с которым приложение связывается и скачивает новые библиотеки, а потом с разрешения серверва пишет их в ключ. Насколько это безопасно и насколько можно сделать это безопасным?
2. Насколько реально защитить .NET приложение той же цифровой подписью, скажем конечного .exe?
3. Вообще насколько стойкая эта защита с цифровыми подписями на каждый модуль?
4. Как работает обфускация Guardant с рефлексией, что нужно учитывать при написании модулей/приложения?
Пока такие вопросы, думаю в этой теме буду задавать вопросы и дальше. Заранее спасибо за ответ! Также рад услышать рекомендации по защите подобного рода ПО.