В первом приближении проблемы безопасности сетей могут быть разделены на четыре пересекающиеся области: секретность, аутентификация, обеспечение строгого выполнения обязательств и обеспечение целостности. Секретность (конфиденциальность) означает предотвращение попадания информации в нечистоплотные руки неавторизованных пользователей. Именно это обычно приходит в голову при упоминании безопасности сетей. Аутентификация позволяет определить, с кем вы разговариваете, прежде чем предоставить собеседнику доступ к секретной информации или вступить с ним в деловые отношения. Проблема обеспечения строгого выполнения обязательств имеет дело с подписями. Как доказать, что ваш клиент действительно прислал электронной почтой заказ на десять миллионов винтиков с левосторонней резьбой по 89 центов за штуку, если впоследствии он утверждает, что цена была 69 центов? Наконец, контроль целостности имеет дело с тем, как можно быть уверенным, что принятое вами сообщение не модифицировано по пути злоумышленником и не подделано?
Таблица 8.1. Типы нарушителей и цели их действий
Нарушитель
Студент
Хакер
Торговый агент Бизнесмен
Уволенный сотрудник
Бухгалтер
Биржевой брокер
Аферист
Шпион
Террорист
Цель
Прочитать из любопытства чужие письма
Проверить на прочность чужую систему безопасности; украсть данные Притвориться представителем всей Европы, а не только Андорры Разведать стратегические маркетинговые планы конкурента Отомстить фирме за увольнение Украсть деньги компании
Не выполнить обещание, данное клиенту по электронной почте Украсть номера кредитных карт для продажи Узнать военные или производственные секреты противника Украсть секреты производства бактериологического оружия
Все эти аспекты (секретность, аутентификация, обеспечение строгого выполнения обязательств и обеспечение целостности) встречаются и в традиционных системах, но с некоторыми существенными отличиями. Секретность и целостность достигаются с помощью заказных писем и хранения документов в несгораемых сейфах. Сегодня ограбить почтовый поезд значительно сложнее, чем во времена Джесси Джеймса.
Кроме того, людям обычно несложно отличить на глаз оригинальный бумажный документ от фотокопии. В качестве проверки попробуйте сделать фотокопию настоящего банковского чека. В понедельник попытайтесь обналичить настоящий чек в вашем банке. А во вторник попробуйте сделать то же самое с фотокопией. Проследите за разницей в поведении банковского служащего. Увы, но оригинал и копия электронных чеков неотличимы друг от друга. Понадобится некоторое время, прежде чем банки привыкнут к этому.
Люди опознают друг друга разными способами, например по лицам, голосам и почеркам. Доказательства подлинности бумажных документов обеспечиваются подписями на печатных бланках, печатями, рельефными знаками и т. д. Подделка обычно может быть обнаружена специалистами по почерку, бумаге и чернилам. При работе с электронными документами все это недоступно. Очевидно, требуются другие решения.
Прежде чем перейти к обсуждению сути самих решений, имеет смысл потратить несколько минут и попытаться определить, к какому уровню стека протоколов относится система сетевой безопасности. Вероятно, какое-то одно место для нее найти сложно. Каждый уровень должен внести свой вклад. На физическом уровне с подслушиванием можно бороться за счет помещения передающих кабелей (или, что еще лучше, оптического волокна) в герметичные трубы, наполненные инертным газом под высоким давлением. Любая попытка просверлить трубу приведет к утечке части газа из трубы, в результате давление снизится, и это послужит сигналом тревоги. Подобная техника применяется в некоторых военных системах.
На канальном уровне пакеты, передаваемые по двухточечной линии, могут зашифровываться при передаче в линию и расшифровываться при приеме. Все детали этого могут быть известны только канальному уровню, причем более высокие уровни могут даже не догадываться о том, что там происходит. Однако такое решение перестает работать в том случае, если пакету нужно преодолеть несколько маршрутизаторов, поскольку при этом пакет придется расшифровывать на каждом маршрутизаторе, что сделает его беззащитным перед атаками внутри маршрутизатора. Кроме того, такой метод не позволит защищать отдельные сеансы, требующие защиты (например, осуществление покупок в интернет-магазинах), и при этом не защищать остальные. Тем не менее этот метод, называемый шифрованием в канале связи (link encryption), легко может быть добавлен к любой сети и часто бывает полезен.
На сетевом уровне могут быть установлены межсетевые экраны, позволяющие отвергать подозрительные пакеты, приходящие извне. К этому же уровню относится IP-защита.
На транспортном уровне можно зашифровать соединения целиком, от одного конца до другого. Максимальную защиту может обеспечить только такое сквозное шифрование.
Наконец, проблемы аутентификации и обеспечения строгого выполнения обязательств могут решаться только на прикладном уровне.
Итак, очевидно, что безопасность в сетях — это вопрос, охватывающий все уровни, именно поэтому ему посвящена отдельная глава.
Несмотря на то что эта глава большая, важная и содержит множество технических описаний, в настоящий момент вопрос сетевой безопасности может показаться несколько неуместным. Ведь хорошо известно, что большинство «дыр» в системах безопасности возникают из-за неумелых действий персонала, невнимательного отношения к процедурам защиты информации, недобросовестности самих сотрудников защищаемого объекта, многочисленные ошибки реализации, которые делают возможным проникновение неавторизованных пользователей и атаки с применением методов так называемой «социальной инженерии», когда клиентов обманом заставляют раскрыть свой пароль. Доля проблем, возникающих из-за преступников-интеллек-туалов, прослушивающих линии связи и расшифровывающих полученные данные, сравнительно мала. Посудите сами: человек может прийти в совершенно произвольное отделение банка с найденной на улице магнитной кредитной карточкой, посетовать на то, что он забыл свой PIN-код, а бумажку, на которой он написан, съел, и ему тотчас «напомнят» секретный шифр (чего только ни сделаешь ради добрых отношений с клиентами). Ни одна криптографическая система в мире здесь не поможет. В этом смысле книга Росса Андерсона (Anderson, 2008а) действительно ошеломляет, так как в ней приводятся сотни примеров того, как системы безопасности в самых различных производственных областях не справлялись со своей задачей. И причиной этих неудач была, мягко говоря, неряшливость в ведении дел или простое пренебрежение элементарными правилами безопасности. Тем не менее техническое основание, на котором строится электронная коммерция, когда отсутствуют проблемы с остальными факторами, это криптография.
На всех уровнях, за исключением физического, защита информации в сетях базируется на принципах криптографии. Поэтому мы начнем изучение систем безопасности с детального рассмотрения основ криптографии. В разделе 8.1 «Криптография» мы изучим базовые принципы. Далее до раздела «Управление открытыми ключами» (разделы 8.2-8.5) будут рассмотрены некоторые классические алгоритмы и структуры данных, применяемые в криптографии. После этого мы свяжем теорию с практикой и посмотрим, как все эти концепции применяются в компьютерных сетях. В конце этой главы будут приведены некоторые мысли, касающиеся технологии и социальных вопросов.
Прежде чем приступить к изложению, позвольте назвать вопросы, о которых не пойдет речь в этой главе. Подбирая материал, мы старались сконцентрировать внимание на вопросах, связанных именно с компьютерными сетями, а не с операционными системами или приложениями (хотя провести четкую грань зачастую бывает довольно трудно). Например, ничего не говорится об авторизации пользователя с использованием биометрии, защите паролей, атак, связанных с переполнением буферов, вирусах типа «Троянский конь», получении доступа путем обмана, внедрении кода путем межсайтового скриптинга, вирусах, червях и т. п. Обо всем этом очень много говорится в главе 9 книги «Современные операционные системы» (Tanenbaum, 2007). Все желающие узнать о вопросах обеспечения безопасности на уровне системы могут обратиться к этой книге.