Почему / etc / machine-id изменяется при перезагрузке?

Если люди имеют физический доступ к компьютеру, на котором запущен ваш код, значит, они имеют доступ к вашему коду. Если вы не хотите, чтобы люди имели доступ к вашему коду, не давайте им доступ.

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

Исключение составляют случаи, когда компьютер предлагает безопасную среду выполнения, которая физически защищена. Смарт-карты предлагают такую ​​среду и довольно дешевы, но имеют очень ограниченную вычислительную мощность. (Обратите внимание, что смарт-карта просто для хранения ключа для зашифрованного кода, который находится на большом компьютере, вам не поможет, поскольку целью атаки будет более крупный компьютер, а не смарт-карта.) Аппаратные модули безопасности также предлагают такую ​​среду и примерно такие же мощные, как недорогой ПК, но они очень дороги. Некоторые компьютеры с защищенной средой на основе Intel SGX или ARM TrustZone предлагают промежуточный уровень защиты, только от «случайных» физических атак (открывайте корпус, но не пытайтесь взломать чипы ).

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

3
13.04.2017, 15:36
0 ответов

Теги

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