Откуда R2-D2 знает, кто такой Бен Кеноби? Как он принимает решение воспроизвести запись принцессы Леи Бену, а не Люку? Как принцесса Лея сообщает R2 о своих намерениях? Эти три вопроса затрагивают фундаментальные аспекты безопасности: аутентификацию, авторизацию и дизайн пользовательского интерфейса (usability). (Фанаты узнаю´т ответ на первый вопрос из приквелов, но Лея его не знает.) Более того, использование компьютеров и технологий в мире «Звездных войн» может стать знакомой основой для изучения работы технологий в нашем мире.
Я был фанатом «Звездных войн» до того, как написал первую строку кода, и задолго до того, как взломал первую систему. Когда я стал экспертом по компьютерной безопасности, мне стало ясно, что мы в силу своей деятельности много лучше пишем код, чем истории, и хотя так и подмывает сказать: «Потому-то у нас ничего не получается», рассказывать истории получше – не единственная наша надежда. Когда я думал о «Звездных войнах», я понял, что сразу после титров камера показывает нам корабль принцессы Леи, который преследуют из-за… украденной запись с данными! Я понял, что «Звездные войны» – это не только история героического путешествия Люка и его взросления, но также история о раскрытии информации и последствиях этого. Последние десять лет я использовал «Звездные войны», чтобы рассказывать истории о компьютерной безопасности, потому что эпические истории дают нам опорные точки и иллюстрируют важные проблемы.
В этой книге почти все ссылки – на оригинальную трилогию. Есть материал, для которого я мог бы использовать и «Изгой-один», и приквелы, и сиквелы, и телевизионные сериалы, книги и так далее. Но я предполагаю, что большинство читателей смотрели и пересматривали только три эпизода оригинальной трилогии: «Звездные войны: Новая надежда», «Империя наносит ответный удар» и «Возвращение джедая».
Как Cила является свойством каждого живого существа, так и безопасность – это свойство всех технологических систем. И так же, как Cила имеет две стороны – светлую и темную, у безопасности есть защита и атаки. Эта книга в основном про атаки, угрозы, проблемы. Вы должны понимать, в чем угроза, прежде чем выберете подходящую защиту. Сцена, когда император Палпатин пускает в Люка Скайуокера фиолетовые молнии Cилы, очень драматична, но, если бы Люк был лучше подготовлен, он бы мог распознать угрозу и понять, как лучше от нее защититься. Ни межсетевой экран, ни список доступа не блокируют молнии Cилы.
Если вы хотите сделать свой дом безопасным, вам необходимо подумать о множестве вещей, которые могут причинить вред. Некоторые из них природного происхождения (наводнение), некоторые могут быть и природными, и рукотворными (пожар), а некоторые (воровство) являются действиями разумных существ.
У нас есть неявные модели того, что такое дом, типы домов и общие типы проблем. Эти проблемы могут немного отличаться: на Великих равнинах США – торнадо, в Юго-Восточной Азии – муссоны, на Ближнем Востоке – песчаные бури. Можете попросить список у вашего страховщика. (Они будут в разделах «Дополнительные услуги» и «Исключения».)
Наши неявные модели того, как устроены технические системы, слабее. Технологии разнообразнее и меняются быстрее, чем наши дома или офисные здания. Трехуровневая архитектура не похожа на микросервисы. Развертывание микросервисов в облаке отличается от виртуальных машин, созданных всего лишь лет десять тому назад.
У создателей и защитников технологий есть недостаток: очень трудно не думать о том, как заставить систему работать. Мы все знаем, что сделать это непросто. Что есть уступки и компромиссы, на которые приходится идти, чтобы заставить код работать, доставить его клиентам и даже развернуть его.
В области безопасности есть традиционный призыв: «Думай как злоумышленник!» А это непросто. Я же призываю людей думать как профессиональный шеф-повар, который планирует рассадку сотни обедающих этим вечером. Многие из нас не представляют, с чего начать. Однако мы не обязаны думать как злоумышленники, чтобы получить различные точки зрения на системы, над которыми работаем.
Безопасность также отличается от других потенциальных проблем, потому что нападающие разумны, они умеют учиться и адаптироваться. Представим действия человека, который планирует украсть ваш музыкальный центр. Он может проникнуть за закрытую дверь самыми разными способами: выбить дверь, отжать язычок замка, подобрать отмычку или просто украсть ключ. Некоторые злоумышленники используют уязвимости: у замка может быть слабая наружная накладка, которую легко просверлить из-за дефекта литья. Некоторые используют ошибки проектирования: у замка всего несколько штифтов, поэтому подобрать отмычку легко. Воры могут обойти нашу защиту и залезть в окно. В технологических системах диапазон атак кажется бесконечным и, возможно, непознаваемым – далее в книге мы решим эту проблему.
Одна из причин того, что нам не удается создать защищенные системы, заключается в том, что нападающие обладают огромными преимуществами. Они могут изучить объект нападения, запланировать атаки и запускать их только тогда, когда чувствуют себя уверенно. Они могут делать что захотят, чтобы получить контроль над системой, заставить ее вести себя неправильно или поставить в неловкое положение ее создателя. И кое-что из того, что делают нападающие, действительно очень умно, и все, что они делают, – неожиданно. Это крайне важно. В прекрасном небольшом видео The Death Star Architect Speaks Out («Архитектор „Звезды смерти“ высказывается») архитектор говорит: «Этот выстрел был буквально невозможен без приложения магических сил. Если бы кто-то сказал мне учитывать космических волшебников при проектировании газоотводной шахты, возможно, у нас все еще была бы „Звезда смерти“».
Он дело говорит. Слишком часто исследователи безопасности становятся известными из-за того, что указывают недостатки в уже готовых системах… как инженеры, не знающие, что торпеда не может просто так пролететь сотни миль по трубопроводам – турбулентность собьет ее с курса. Как будто бы эксперты по безопасности тебя судят и на каждый вопрос отвечают, закатывая глаза и повторяя: «Прислушайся к своим ощущениям». Но в этой книге мы сосредоточимся на важных угрозах.
Эксперт по безопасности и писатель Брюс Шнайер однажды признался: «Когда я посещал Агентство национальной безопасности (АНБ), я попросил сотрудников показать мне „Большую книгу атак“. Они мне ответили, что нет одного такого места, где все атаки были бы описаны». Упущение, которое мы намерены исправить. Это важно, потому что «атаки» легче понять, если есть их заранее подготовленный список. Это не попытка классифицировать каждую атаку или сделать список исчерпывающим. Подобное могло бы вас удивить или даже обеспокоить. Однако реальность такова, что проблемы безопасности – это нарушения требований безопасности. Требования для разных систем разные. Следует ли мне учитывать нарушения требований к ядерным бомбам или к печати денег? («Активировать систему может менее двух человек» или «Другой потребитель может использовать такое же бумажное сырье».) Такая полнота не позволит сразу выявить наиболее распространенные атаки и затруднит быстрое определение угроз, которые могут вдохновить вас, позволить вам рассуждать по аналогии и обнаружить атаки на ваши собственные системы. Вся загвоздка в понимании угроз, и до сих пор понимать их было непросто.
Кто-то однажды написал: «Все интересные системы удивляют своего создателя». Это свойство, которое переводит их из полезных в интересные. Проблемы безопасности – это часто сюрпризы. Они используют не только существующие ошибки, но и неспособность архитекторов разработать защиту.
Внимание человека – это суровый хозяин. Трудно воспринять то, чего ты не замечаешь. Мое намерение каталогизировать общие проблемы – это попытка показать, на что нужно обращать внимание. Что нужно рассмотреть, собрать, организовать и представить, чтобы получить некоторую ясность, как выглядит набор вещей, которые «нужно учитывать». Если то, о чем написано в этой книге, проигнорировано, вероятно, следует говорить об ошибке инженера. Это не значит, что мы провозглашаем: «Все остальное игнорировать можно». Точно так же, как пилот должен посадить самолет, а не просто выполнить все пункты обязательных инструкций, или хирург должен вылечить пациента, а не сделать все по порядку, так и то, что следует учитывать, не ограничивается содержанием страниц этой книги.
Внимание человека – и правда суровый хозяин. Даниэль Канеман, лауреат Нобелевской премии и основатель поведенческой экономики, в своей чудесной книге «Думай медленно, решай быстро» (Thinking Fast and Slow) использует один единственный акроним: WYSIATI. What You See Is All There Is (Что ты видишь, то и есть). Важность того, что прямо перед нами, так велика, что она вытесняет наши попытки «оставаться в курсе» и «держать в уме». И все же, как инженер, вы должны делать именно это – держать в уме надежность, производительность, дизайн интерфейсов, эксплуатационные характеристики и великое множество других свойств. У нас есть набор инструментов для того, чтобы управиться с такими вещами, включая автоматизацию, контрольные списки и оценку команд специалистов разного профиля.
При написании этой книги я иду на определенный компромисс и предполагаю, что методы защиты известны и понятны или, по крайней мере, могут быть поняты, как только вы поймете угрозы. Поэтому я сосредоточусь на угрозах и защиты буду касаться только вскользь. Я вынужден пойти на это, чтобы сделать книгу короче и доходчивее.