Столкнулись с пиратством
Мы завершаем разделение направлений. Теперь корзин будет три. Чисто на всякий случай. К государственной кормушке будет прикреплена только одна. Хватит из нас кровь сосать. Последний гвоздь в стену решимости забил один деятель, не будем его называть, ни к чему это, но деятель крупный. Я думаю, что в сотню чиновников нашей прекрасной страны - войдёт легко. Ну так вот. Деятель этот занялся (как они все и делают) активным путанием своей и государственной шерсти. И сделал он это так. Некое ПО было роздано (точнее, продано. типа.) неопределённому количеству лиц, каждое из которых представляет собой самостоятельное юридическое лицо и должно внести пожертвование в сумме X0000 рублей на наш счёт. Разумеется, никакие деньги никуда не пошли (пока что, по крайней мере). Тем не менее, мониторинг активностей показывает, что количество дорвавшихся до кормушки - плодится как минимум в арифметической прогрессии. Мы сочли, что это безобразие и решили действовать. Действия включают в себя внесение таких изменений в процедуру инсталляции, чтобы было невозможно передать пакет с данными, не получив на нашем сервере предварительной авторизации для такого безобразия. Делается это так:
При установке
- 1. Пользователь вводит при установке ключ
- 2. Программа установки формирует RSA-ключ, связывая его с пользователем, устанавливая в некое хранилище
- Программа установки связывается с сервером, передавая:
- Ключ, указанный пользователем
- Public-часть ключа, сформированного на шаге 2
- Подписанные хэши следующих ключей реестра Windows: i. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\LicenseInfo
- Сервер проверяет ключ. Если переданный ключ ещё не был активирован и является действительным, происходит активация приложения. Активация включает в себя следующие шаги:
- Выдача программе установки на клиенте последовательного номера установки, подписанного для клиента ключом
- Сохранение на сервере ключей установки клиента (public-часть ключа RSA клиента, хэши ключей реестра, привязывающие ключ RSA к инсталляции)
ii. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\InstallDate
iii. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProductId
При формировании пакета
- Формирование пакета для обмена, который должен оплачиваться, выполняется в точности так же, как и для бесплатныхЪ, но в заголовок пакета вносятся следующие изменения:
- Передаётся идентификатор установки
- Передаются хэши из п.3с предыдущего подраздела
- Кроме этого, весь пакет подписывается ключом, выданным классом инсталлятора при установке клиенту для исключения фальсификации или случайных искажений при передаче.
При обработке пакета
- Проверена подпись и извлечён объект данных
- Проведена проверка аутентичности пакета (проверены ключи установки и ID Windows из пакета)
Если первый и второй пункты выполняются, то выполняется загрузка пакета.
Забавно, что нас волнует вопрос о том, насколько этично отправлять на наш сервер для привязки LicenseInfo и ProductId. Если мы когда-то проиграем, то только потому, что слишком много внимания уделяем такому по сути абстрактному или даже метафизическому понятию, как совесть, в то время как прочие - даже не знают, как это слово пишется.
Комментариев нет:
Отправить комментарий