Книга: Безопасность веб-приложений. Исчерпывающий гид для начинающих разработчиков
Назад: Сдвиг влево
Дальше: «Предполагать взлом»

Часть I

Все, что нужно знать о коде, безопасном для публикации в интернете

Глава 1. Основы безопасности

Глава 2. Требования безопасности

Глава 3. Безопасность при проектировании ПО

Глава 4. Безопасность кода ПО

Глава 5. Часто встречающиеся подводные камни

Глава 1

Основы безопасности

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

Обязательство по обеспечению безопасности: «CIA»

Обязательство и цель каждой команды IТ-безопасности заключается в защите конфиденциальности, целостности и доступности систем и данных компании, правительства или организации, на которую команда работает. Вот почему служба безопасности беспокоит вас по поводу наличия ненужных прав администратора на вашем рабочем устройстве, не позволяет подключать неизвестные устройства к сети и требует выполнения всех остальных, как кажется, слишком сложных действий. Она хочет защитить эти три аспекта, которые для краткости называются «триадой CIA» (confidentiality, integrity, availability – конфиденциальность, целостность и доступность) (рис. 1.1).



Рис. 1.1. Триада CIA – причина существования команд IТ-безопасности





Рассмотрим данную триаду на примере наших друзей Алисы и Боба. Алиса страдает диабетом I типа и несколько раз в день использует имплантированное в руку крошечное устройство для проверки уровня инсулина. У Боба есть «умный» кардиостимулятор, регулирующий работу сердца, доступ к которому он получает через мобильное приложение на телефоне. Оба этих устройства в нашей отрасли называются имплантируемыми медицинскими устройствами IoT.

ПРИМЕЧАНИЕ. IoT значит Internet of Things – интернет вещей. Это физические продукты, подключенные к интернету. Умный тостер или холодильник, подключенный к интернету, является устройством IoT.

Конфиденциальность

Алиса – генеральный директор крупной компании, входящей в список Fortune 500. Она не стыдится своей болезни, но не хочет, чтобы эта информация стала достоянием общественности. Алиса часто дает интервью СМИ и выступает с публичными заявлениями, став примером для подражания для многих других женщин, работающих в ее отрасли. Она прилагает все усилия, чтобы сохранить в тайне сведения о личной жизни, в том числе и информацию о состоянии здоровья. Алиса считает, что некоторые люди в организации хотят занять ее место и пойдут на все, чтобы попытаться подорвать ее авторитет, представив ее «слабой». Случайно произошедшая утечка информации с устройства в сеть или взлом аккаунта поставили бы ее в затруднительное положение и могли бы навредить карьере. Для Алисы важно сохранить свою личную жизнь в тайне.





Рис. 1.2. Конфиденциальность: обеспечение сохранности информации





Боб, напротив, открыто говорит о своем заболевании сердца и с радостью рассказывает всем о кардиостимуляторе. У него отличная страховка от федерального правительства, и он высоко ценит возможность продолжать пользоваться ею после выхода на пенсию, несмотря на то что болезнь была обнаружена еще до начала работы на организацию. В данном случае конфиденциальность не является для Боба приоритетом (рис. 1.2).

ПРИМЕЧАНИЕ. Мы часто недооцениваем роль конфиденциальности в нашей жизни. Многие люди уверяют меня, что им «нечего скрывать». Тогда я спрашиваю: «У вас дома есть занавески на окнах? Да? Почему? Вам же нечего скрывать». Я просто жгу на вечеринках.

Целостность

Целостность (рис. 1.3) означает, что данные являются актуальными, правильными и точными. Целостность также подразумевает, что данные не были изменены во время передачи: необходимо сохранять правильность значения. Мы говорим о целостности компьютерной системы, когда результаты, которые она выдает, точны и правдивы.





Рис. 1.3. Целостность означает корректность





Для Боба и Алисы целостность, возможно, является самым важным из элементов триады CIA: некорректная работа одной из систем может привести к смерти. Для человека (в отличие от компании или государства) не существует более серьезного последствия, чем конец жизни. Таким образом, решающее значение для Боба и Алисы имеет целостность систем, связанных с их здоровьем.

Модель CIA – это центральное ядро всей нашей отрасли. Создание безопасного программного обеспечения невозможно без понимания сущности этой модели и ее влияния на членов команды, на программное обеспечение и, самое главное, на пользователей.

Доступность

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

У Боба же время от времени сбивается ритм сердцебиения, и он никогда не знает, в какой момент наступит аритмия. Если бы в периоды нестабильной работы сердца у Боба отсутствовал доступ к кардиостимулятору, то по прошествии времени это могло бы привести к критической для его жизни ситуации. Очень важно, чтобы при возникновении чрезвычайной ситуации кардиостимулятор был доступен и реагировал в режиме реального времени (немедленно).

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

ПРИМЕЧАНИЕ. Медицинские приборы, как правило, являются системами ПО, работающими в режиме реального времени. «Режим реального времени» означает, что система должна реагировать на изменения в кратчайшие сроки, обычно исчисляющиеся в миллисекундах. Она не может работать с задержками – отклик должен быть максимально быстрым или немедленным. Когда у Боба начинается аритмия, кардиостимулятор должен сработать немедленно – задержки быть не может. В таком режиме функционируют только немногие приложения: 10-миллисекундная задержка при покупке новых кроссовок или при прогнозировании изменений дорожного трафика не приведет к действительно большой проблеме.

Рис. 1.4. Устойчивость повышает доступность

ПРИМЕЧАНИЕ. Многие пользователи переводят информацию в облако по той единственной причине, что оно чрезвычайно надежно (почти всегда доступно) по сравнению с более традиционными уровнями обслуживания во внутренних центрах обработки данных. Как показано на рис. 1.4, устойчивость повышает доступность, что делает публичное облако привлекательным вариантом с точки зрения безопасности.

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

Назад: Сдвиг влево
Дальше: «Предполагать взлом»