Надежная пробная стратегия

Я знаю, что на SO уже есть подобные вопросы. Но мой вопрос более теоретический.

Мне интересно, можно ли разработать надежную пробную систему? Под надежной защитой я подразумеваю такую ​​систему, которая не может быть взломана, даже если взломщик знает алгоритм такой системы?

Извините, если это не вопрос программирования.

Изменить: я думаю, что я должен сделать свой вопрос более практичным. Я спрашиваю о целой системе, а не об отдельном приложении. Система состоит из ПК с ОС Linux и подключенного к нему оборудования. Может быть, я могу использовать шифрование жесткого диска?

4 ответа

Решение

Вероятно, единственный способ - это интернет-приложение "программное обеспечение как услуга". Если вы не предоставляете доступ, они не используют программное обеспечение. Если это приложение для настольного компьютера, то какой-то ключевой элемент функциональности все равно должен находиться где-то на онлайн-сервере.

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

Единственный (теоретический) способ иметь защищенное от взлома программное обеспечение - это иметь полностью закрытую систему. Если бы вы контролировали все, от оборудования до операционной системы, приложений и средств разработки, вы могли бы предотвратить вмешательство.

Обратите внимание, как я сказал, что это теоретически. Неизбежно, вы найдете аппаратного хакера, который найдет способ изменить аппаратное обеспечение (см. Modchips). Оттуда они могут загрузить любое программное обеспечение, которое они хотят, и изменить программное обеспечение, которое уже существует.

Та же модель, которая применяется к физической безопасности (сейфы, хранилища и т. Д.), Применяется к программному обеспечению. Смысл в том, чтобы сделать кражу / копирование товаров более дорогостоящим, чем их получение законными способами. Вы никогда не сможете создать надежную систему, но вы можете легко предотвратить взлом вашего продукта сценаристами и хобби-хакерами. Профессионалы, с другой стороны, живут, чтобы взломать. Они найдут способ.

Вы можете спроектировать свое приложение так, чтобы оно зависело от удаленного сервера, который контролируется кем угодно, кроме вас.

Нет. Вы можете сделать это очень сложно, но ваш вопрос сводится к тому, "как я могу позволить кому-то запускать код, но не позволять им запускать код".

Например, вы можете оставить небольшую, но ключевую часть кода и потребовать загрузки этого кода с сервера, которым вы управляете. Это позволяет отслеживать пробную активность и отключать определенных пользователей. Однако, как только они получат код, они смогут захватить его и создать необремененную версию вашего продукта с учетом достаточной работы.

Другие вопросы по тегам