Увеличение сложности кода влечет за собой снижение защищенности

Пол Кочер: «Кривая увеличения сложности ставит нас в безвыходное положение»
Когда речь идет о создании безопасного кода, зачастую срабатывает принцип «меньше означает больше». Так заявил эксперт по информационной безопасности Пол Кочер, президент компании Cryptography Research, в своем выступлении на недавнем симпозиуме Usenix Security Symposium. Он предупредил, что увеличение мощности компьютерных систем и растущая сложность кода повлекут за собой снижение уровня защищенности сетей.

Огромные программы, такие как операционные системы Microsoft Windows или Linux, созданные в расчете на преимущества, предоставляемые быстрыми процессорами, всегда будут иметь больше дефектов, чем смогут обнаружить специалисты по информационной безопасности. По этой причине программисты должны стремиться к простоте создаваемых приложений и встраивать в них только те средства, которые потребуются не менее 80% пользователей.

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

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

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

Подобная зависимость от компьютеров лишь обостряет проблему защиты программного обеспечения.

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

  • Число специалистов в команде разработчиков должно быть невелико. Чем меньше программистов, тем более сконцентрированным и тщательным будет планирование приложений и тем меньшее число "самых современных возможностей" разработчики захотят к нему добавить.
  • К проектированию необходимо подходить максимально творчески. Хорошие хакеры попытаются найти новые и интересные способы вторжения в сеть.
  • Предпочтение должно отдаваться модульному программированию. Создание программ, которые можно связывать между собой, а не огромных монолитных приложений, позволит изолировать ошибки и снизить риск того, что от ошибки пострадает вся программа целиком.
  • Нельзя жалеть времени и денег на то, чтобы как можно раньше устранить дефекты в защите в процессе разработки программного обеспечения. Нельзя начинать "латание дыр" в защите после того, как проект практически подошел к концу.
  • Необходимо критическое отношение к себе. Разработчики должны понимать, что они будут делать ошибки и им придется искать их. Нельзя безрассудно верить в надежность своего кода.
  • Следует всячески поощрять обучение. Студентов, к примеру, можно привлечь для того, чтобы найти способы проникновения в тестовую сеть.

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

«Сейчас никто не может в точности сказать, что именно происходит на его компьютере, — заметил он. — Кривая увеличения сложности ставит нас в безвыходное положение».