Интернет, возможно, наиболее сложная система, которая когда-либо разрабатывалась. Она включает в себя миллионы компьютеров, объединенных в непредсказуемо сложные физические сети. На каждом компьютере работают сотни программ, некоторые из них взаимодействуют с программами, установленными на том же компьютере, другие – через сеть с программами, установленными на удаленных компьютерах. Система принимает сигналы от миллионов пользователей, часто одновременно.
Один человек сказал: «Сэр, это зрелище подобно собаке, стоящей на задних лапах. Удивительно не то, что она делает это недостаточно хорошо, а то, что она вообще способна это делать».
Системы имеют несколько интересных свойств, которые уместно здесь обсудить.
Во-первых, они сложны. Механизмы просты: молоток, дверные петли, нож для бифштексов. Системы же намного сложнее: они имеют компоненты, петли обратной связи, среднее время отклика, инфраструктуру. Цифровые системы весьма затейливы: даже простая компьютерная программа состоит из тысяч строчек кода, описывающего всевозможные разновидности различных операций. Сложная программа имеет тысячи компонентов, которые могут работать как по отдельности, так и во взаимодействии друг с другом. Именно для сложных цифровых систем было разработано объектно-ориентированное программирование.
Во-вторых, системы взаимодействуют, формируя еще более крупные системы. Это может быть сделано намеренно – программисты используют объекты, чтобы дробить большие системы на малые, инженеры подразделяют большие механические системы на малые подсистемы, и так далее, – или происходит естественным образом. Изобретение автомобиля привело к развитию современной системы дорог и магистралей, а она, в свою очередь, взаимодействуя с другими системами, существующими в нашем мире, породила то, что мы называем мегаполисом. Система контроля авиалиний взаимодействует с навигационной системой самолета и с системой предсказания погоды. Тело человека взаимодействует с другими человеческими организмами и с другими системами на планете. Интернет переплетается со всеми наиболее важными системами в нашем обществе.
В-третьих, системы обладают неожиданными свойствами. Другими словами, они иногда могут делать вещи, которых разработчики и пользователи не ожидают от них. Телефонная система, например, породила новый способ взаимодействия людей. (Александр Грэхем Белл не имел представления, что телефон станет прибором для осуществления персональной связи, – он предполагал использовать его для сообщений о приходе телеграммы.) Автомобили изменили пути, на которых люди встречаются, назначают свидания и влюбляются. Системы защиты окружающей среды в зданиях оказывают влияние на здоровье людей, что также сказывается на работе системы здравоохранения. Системы обработки текстов изменили способ их написания. У Интернета полно неожиданных свойств: вспомните об электронных покупках, виртуальном сексе, совместном авторстве.
И – четвертое: в системах имеются «баги» [1]. Они являются особой разновидностью ошибки. Их наличие – неожиданное свойство системы, не предусмотренное при ее создании. «Баги» принципиально отличаются от сбоев. Если где-то происходит сбой, продолжение работы невозможно. Когда же имеется «баг», работа продолжается, хотя объект, ее производящий, ведет себя «плохо»: возможно, неустойчиво, возможно, необъяснимо. «Баги» – уникальное свойство систем. Машины могут ломаться или портиться, или не работать вовсе, но только системы могут иметь «баги».
Системы и безопасность
Все перечисленные свойства оказывают влияние на безопасность систем. Ухищрения – вот точное определение для безопасности на сегодняшний день, поскольку обезопасить сложную систему, подобную Интернету, трудно именно в силу ее сложности. Безопасность систем – дело сложное, а безопасность сложных систем в особенности.
Обычный для компьютеризованных систем механизм тиражирования игнорирует наличие системы как таковой и сосредоточен на отдельных машинах – такова технология… Поэтому мы загружены работой по выработке технологий безопасности: криптография, брандмауэры, инфраструктура ключей общего доступа, сопротивление несанкционированному доступу. Эти технологии просты для понимания и обсуждения и достаточно просты в использовании. Но было бы наивно полагать, что они способны неким таинственным образом наполнить системы свойством:
Читать дальше