Надежная стратегия судебного разбирательства
-
08-07-2019 - |
Вопрос
Я знаю, что на SO уже есть подобные вопросы.Но мой вопрос носит скорее теоретический характер.
Мне интересно, возможно ли разработать надежную пробную систему?Под надежной я подразумеваю такую систему, которая не может быть взломана, даже если взломщик знает алгоритм такой системы?
Извините, если это не вопрос программирования.
Редактировать: Я думаю, мне следует сделать свой вопрос более практичным.Я спрашиваю о целой системе, а не об отдельном приложении.Система состоит из ПК с ОС Linux и некоторого оборудования, подключенного к нему.Может быть, я могу использовать шифрование жесткого диска?
Решение
Вероятно, единственный способ - это интернет-приложение "программное обеспечение как услуга".Если вы не предоставляете доступ, они не используют программное обеспечение.Если это настольное приложение, то какая-то ключевая функциональность все равно должна находиться где-то на онлайн-сервере.
Если у хакера есть все приложение целиком на его локальном компьютере, его можно перепроектировать и каким-то образом "взломать".Единственный способ преодолеть это - гарантировать, что какая-то часть функциональности никогда не будет на их компьютере.
Другие советы
Единственный (теоретический) способ получить защищенное от взлома программное обеспечение - это иметь полностью закрытую систему.Если бы вы контролировали все - от аппаратного обеспечения до операционной системы, приложений и средств разработки, вы могли бы предотвратить несанкционированное вмешательство.
Обратите внимание, как я сказал, что это было теоретически.Неизбежно вы найдете аппаратного хакера, который найдет способ модифицировать аппаратное обеспечение (см. модчипы).Оттуда они могут загружать любое программное обеспечение, которое захотят, и изменять то, которое уже есть.
Та же модель, которая применима к физической безопасности (сейфы, хранилища и т.д.), применима и к программному обеспечению.Смысл в том, чтобы сделать кражу / копирование товаров более дорогостоящим занятием, чем их получение законным путем.Вы никогда не сможете создать надежную систему, но вы можете легко предотвратить взлом вашего продукта любителями скриптов и хакерами-любителями.Профи, с другой стороны, живут, чтобы расколоться.Они найдут способ.
Вы могли бы спроектировать свое приложение таким образом, чтобы оно зависело от удаленного сервера, контроль над которым есть у кого угодно, кроме вас.
Нет.Вы можете сделать это очень сложным, но ваш вопрос сводится к "как я могу позволить кому-то запускать код, но не позволять им запускать сам код".
Например, вы могли бы опустить небольшую, но ключевую часть кода и потребовать, чтобы этот код был загружен с сервера, которым вы управляете.Это позволяет вам отслеживать пробную активность и отключать определенных пользователей.Однако, как только они получат код, они смогут перехватить его и создать необремененную версию вашего продукта, если проделают достаточно работы.