Безопасность через неизвестность — новая теория


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

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

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

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

Принцип Керкхоффа о том, что неизвестность не дает безопасности,

Принцип укрепления: обороняющийся должен защищать все векторы атаки, тогда как нападающий должен атаковать только один.

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

Новое исследование предполагает, что безопасность — это игра с неполной информацией, и вы можете многому научиться, изучая поведение и алгоритмы атакующего — его «тип», и что сокрытие вашей игры действительно дает преимущество и увеличивает ваши шансы на победу. Короче говоря, обфускация — это хороший общий принцип, т. Е. Затруднить злоумышленнику определение того, как лучше атаковать вас.

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

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

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

Действительно интересная статья, которую стоит прочитать, хотя бы из-за комментариев по истории безопасности.


Добавить комментарий