1

У меня есть программа HelloWorld, подписанная мной и распространенная с сайта моей компании. Но кто-то скачал его с моего сайта, включил в программу SuperDuperHelloWorld, а также добавил в установщик несколько вредоносных программ. Я не хочу, чтобы моя программа была установлена правильно, если она не загружена с моего сайта напрямую. Есть ли способ поставить такие ограничения? - Может быть, не всегда, но в некоторых процентах случаев, скажем, 95%.

1 ответ1

0

Я долго размышлял об одном и том же, но я не смог более подробно остановиться на этом, потому что у меня нет всех необходимых знаний, но это всего лишь идея:

  1. Генерация случайных пар ключей. Создайте хэш текущей версии вашего двоичного файла. Храните их в локальной базе данных.
  2. Объедините один открытый ключ с загрузкой, например, отправьте его клиенту по электронной почте.
  3. Клиент открывает приложение, и его приветствует окно проверки. Процесс проверки запрашивает открытый ключ и генерирует хэш двоичного файла.
  4. Клиент отправляет открытый ключ и хэш двоичного файла на ваши серверы, и вы проверяете его по секретному ключу и хешу для этой двоичной версии в базе данных.
  5. Ответ шифруется с использованием открытого ключа через секретный алгоритм, поэтому любой потенциальный мошенник не может перехватить соединение и заставить ваше приложение думать, что оно было должным образом проверено.
  6. Вы можете сохранить открытый ключ и зашифрованный ответ в секретном файле, чтобы вам не приходилось повторять процесс проверки каждый раз. Вы просто расшифруете ответ, используя секретный алгоритм и открытый ключ, чтобы узнать, был ли он правильно проверен.

Недостатки этого подхода:

  1. Клиент должен иметь подключение к интернету, по крайней мере, один раз.
  2. Клиентская программа не может быть проверена дважды (например, на разных компьютерах), даже если это законный клиент.
  3. Хотя хранилище файла и ответа зашифровано, это не помешает любому злоумышленнику узнать его местоположение и связать пару проверки с любым украденным двоичным файлом, чтобы обойти вашу безопасность.
  4. Процесс хеширования двоичного файла может занять некоторое время, если двоичный файл является относительно большим.

Это не помешает любому мошеннику загрузить ваше приложение и перераспределить его, но, по крайней мере, они не смогут внедрить в него malware из-за хеш- проверки ... не так ли? на самом деле они могли; процесс проверки может быть взломан, если мошеннику каким-то образом удастся изменить ваш двоичный файл и добавить соответствующие инструкции, чтобы обойти безопасность процесса проверки. Что-то вроде…

Изменение этого

if (validate(response) == true) {
    /* The app is validated */
}

За это:

if (!validate(response) == true || true) {
    /* 
    * The app would be validated no matter
    * if it was properly validated or not
    */
}

Таким образом, ваш последний ресурс - сделать инструкции процесса проверки достаточно непонятными, чтобы их было нелегко угадать и изменить, и надеяться, что ваш мошенник не достаточно умен, чтобы найти и изменить их.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .