Задать вопрос
iamdivine
@iamdivine

Как защитить ПО от подделки ответа http?

Добрый день, делаю небольшую систему лицензирования.
Человек покупает ключ, вводит в программе -> программа отправляет на сервер и проверяет соответствует ли железо
в базе данных железу локальному, если да - то лицензия верна.
Сам бинарник защитить от модификации смогу, а вот от подделки ответа с сервера нет. Подскажите пожалуйста, кто на опыте
  • Вопрос задан
  • 201 просмотр
Подписаться 1 Простой 4 комментария
Решения вопроса 2
Vamp
@Vamp
Вашу программу взломали при помощи атаки mitm с подменой сертификатов. Это значит что программа не валидирует сертификат сервера (образно говоря, ServicePointManager.ServerCertificateValidationCallback = (sender, cert, chain, sslPolicyErrors) => true;), что позволяет злоумышленнику сгенерировать на ваш домен самоподписанный сертификат, перенаправить трафик на свой локальный сервер и программа будет доверять этому серверу как своему. Либо валидирует с использованием корневых сертификатов из trust store операционной системы. В этом случае злоумышленник просто добавит свой сгенерированный сертификат в trust store ОС и ваша программа будет доверять поддельным сертификатам злоумышленников.

Решением этой проблемы является использование техники certificate pinning или public key pinning. То есть вам нужно зашить в программу корневой сертификат того CA, у которого вы приобретаете сертификаты (lets encrypt?) и валидировать ответы только с его использованием. Никакого доверия trust store ОС и никогда не игнорируйте ошибки валидации.
Ответ написан
Комментировать
GavriKos
@GavriKos
Захотят - взломают что угодно.
Добавляйте в запрос и в ответ шум +подпись. ПОдпись считайте по не самому тривиальному алгоритму (не простой проход мд5!). На сервере проверяйте подпись (ну и на клиенте тоже).
Шифруйте сами тела запросов-ответов.
Меняйте ключи-подписи с апдейтом.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы