Брюс Шнайер - Секреты и ложь. Безопасность данных в цифровом мире
Другие подтверждающие подлинность протоколы входа в систему используют открытые шифровальные ключи. IPsec и SSL, например, пользуются протоколами аутентификации с открытыми ключами. Некоторые системы прибегают к более простым, но тайным протоколам. Протокол, в котором звонящий с сотового телефона доказывает, что он может сделать телефонный звонок в этой частной сети, является одним из них.
Однократная регистрацияВещь, которая изрядно раздражает пользователей в системе со строгими требованиями к безопасности, – это большое число паролей. Пользователь должен набирать один пароль для входа в свой компьютер, другой для входа в сеть, третий для входа на отдельный сервер в сети и т. д. Люди задают вопрос: не было бы лучше, если бы пользователь зарегистрировался один раз, с одним паролем, и затем мог бы управлять компьютерами как ему угодно, без использования других паролей?
Однократная регистрация – это решение пользовательской проблемы. К несчастью, она не очень хорошо работает. Во-первых, нетрудно увязнуть в болоте различных приложений и мер безопасности, которые плохо согласуются между собой. Это значит не просто ограничиться выбором определенного пароля для каждого – что плохая идея, – но учесть все проблемы множества взаимодействующего программного обеспечения. Во-вторых, дополнительный риск связан с тем, что возможная уязвимая точка является единственной. Есть разница между потерей одной кредитной карточки и целого бумажника.
Продукты с одноразовой регистрацией существуют, и в некоторых ситуациях они работают. Но они ни в коем случае не являются панацеей, как о том любят объявлять их продавцы.
Глава 10
Безопасность компьютеров в сети
В этой главе я хочу поговорить об атаках, совершаемых через Интернет. Такие атаки можно считать компьютерными, тогда их следовало бы рассматривать в главе 8. Можно отнести их и к сетевым нападениям, о которых речь пойдет в главе 11. Но я выделяю эти атаки в самостоятельный класс и посвящаю им отдельную главу.
Разрушительные программыСамое первое, с чем большинство из нас сталкивается при первом знакомстве с проблемами компьютерной безопасности – это именно разрушительные программы, то есть программы, умышленно причиняющие неприятности. Даже в том случае, если компьютер не подключен к сети и доступ к нему имеется только у вас, вам не следует забывать о вирусах. Ведь вы не знаете точно, какие программы в данный конкретный момент выполняются вашим компьютером, и только можете надеяться, что выполняемые программы работают как надо. Запуская программы, в надежности которых вы не уверены, вы рискуете.
К разрушительным программам кроме вирусов относятся так называемые «троянские кони» и «черви». Они обычно состоят из двух частей: «полезной нагрузки» и механизма распространения. «Полезная нагрузка» – это та составляющая, которая, собственно, и вызывает сбои. Традиционно нагрузка была не очень разнообразна – прототипы вирусов выводили на экран какое-либо надоедливое сообщение, переформатировали жесткий диск компьютера жертвы либо не делали вообще ничего. Но в некоторых случаях нагрузка способна причинить и большие неприятности: изменить установки контроля доступа компьютера, украсть секретный ключ и отправить его по электронной почте и т. п. Результат таких действий может оказаться опасным, и я считаю, что следует ожидать появления более коварных нагрузок в ближайшие годы[30]. В этой книге для нас наибольший интерес будут представлять механизмы распространения, по которым мы и классифицируем разрушительные программы.
Компьютерные вирусыБиологический вирус представляет собой невидимый в оптический микроскоп инфекционный агент, вызывающий болезни растений, животных и бактерий. По существу, он состоит из белковой оболочки, содержащей РНК или ДНК. Вирусы не способны воспроизводиться вне клетки-хозяина, поэтому их, как правило, не относят к живым организмам. Таким образом, налицо прямая аналогия с вирусами компьютерными. Компьютерный вирус представляет собой фрагмент компьютерного кода, который может прикрепляться к другой компьютерной программе (сам по себе этот фрагмент существовать не может). Прикрепившись, он воспроизводится, делает новые собственные копии, которые внедряются в другие программы. И так далее.
В 1983 году студент Фред Коэн (Fred Cohen) написал первый компьютерный вирус. Он сделал это, только чтобы создать прецедент (удивительно, но большинство людей не верили, что это возможно). Многие скопировали этот вирус, большинство этих людей хотели просто досадить окружающим. В настоящее время насчитывают от 10 000 до 60 000 вирусов (в зависимости от критериев подсчета), большинство которых написаны для IBM-совместимых персональных компьютеров. По некоторым оценкам, которые мне встречались, ежедневно создаются шесть новых вирусов, но я считаю, что это – ложь и паникерство. Всего несколько сотен вирусов встречаются «в диком виде» (имеется в виду «на жестком диске у людей, не принимающих непосредственного участия в исследованиях компьютерных вирусов»), но те, которые встречаются, могут быть разрушительными.
Вирусы можно подразделить на три основных класса: файловые вирусы, загрузочные вирусы (вирусы, поражающие загрузочный сектор) и макровирусы.
Долгое время наиболее распространенными были файловые вирусы. Они работали, присоединяясь к программным файлам, например к текстовому редактору или компьютерным играм. При запуске инфицированной программы этот вирус размещается в памяти так, чтобы заразить другие приложения, запускаемые пользователем. Таким способом вирус распространяется по компьютеру пользователя, а если пользователь даст кому-то дискету с инфицированным приложением (или пошлет это приложение по сети), то зараженным окажется и другой компьютер.
Большинство файловых вирусов уже вышли из употребления. Изменения в устройстве компьютеров привели к тому, что вирусы потеряли способность запускаться; программное обеспечение часто требует обновления при установке новой операционной системы или нового процессора. Многие файловые вирусы вымерли после того, как в 1992 году была выпущена Windows 3.1; вирусы просто рушили эту операционную систему и в результате не могли распространяться.
Загрузочные вирусы менее распространены. Эти вирусы размещаются на специальном участке диска (дискеты или жесткого диска), данные с которого загружаются в память при загрузке компьютера. После того как этот вирус внедряется в память, он может заразить соответствующие секторы всех имеющихся жестких Дисков и гибких дисков, вставленных в дисковод, и таким образом распространиться на другие системы. Загрузочные вирусы чрезвычайно эффективны, и, даже несмотря на гораздо меньшее количество штаммов (различных разновидностей), они какое-то время преобладали над файловыми вирусами.
Загрузочные вирусы могут мирно сосуществовать с Windows 3.1, но большинство из них не пережили появления Windows 95. Несовместимость при загрузке и появляющиеся на экране предупреждения сильно затруднили распространение вирусов. Были вирусы, созданные специально для Windows 95, но ни один из них не получил широкого распространения, поскольку никто уже не загружается с гибкого диска.
Последний класс вирусов – это макровирусы. Они написаны на языке сценариев и заражают не программы, а файлы данных. Во многих текстовых процессорах, электронных таблицах и программах, работающих с базами данных, используются специальные языки разработки сценариев. Такие сценарии (программы на макроязыке, или просто макросы) используются для автоматизации задач и хранятся вместе с данными. Первый макровирус для Microsoft Word – Concept – впервые обнаружили в «диком виде» в 1995 году; в текстовом редакторе Emacs такие вирусы существовали уже в 1992 году.
Макровирусы могут распространяться существенно быстрее других, поскольку люди гораздо чаще обмениваются данными, чем программами. А поскольку программное обеспечение электронной почты и передачи файлов делается все проще в обращении, эти вирусы станут распространяться еще быстрее. Бывают макровирусы, способные существовать в различных операционных средах: некоторые макровирусы для Microsoft Office могут заражать как компьютеры Windows, так и Macintosh.
Макровирусы – это будущее компьютерных вирусов. Все вирусы, которые быстро распространяются по Интернету, – это макровирусы. Лучшие из вирусов используют психологические приемы, побуждающие пользователя установить, запустить или размножить их.
Антивирусное программное обеспечение – это более выгодный бизнес, чем написание вирусов. (Я полагаю, это очевидно: за вирусы никто денег не платит.) Большинство антивирусных программ сканируют файлы, выискивая вирусы. В программах есть база данных, содержащая «отпечатки пальцев» вирусов – фрагменты кода, про которые известно, что они являются частью вирусов. Когда программа находит такой же отпечаток, она получает информацию, что файл заражен, и, чтобы «дезинфицировать» его, удаляет вирусный код. Метод сканирования «отпечатков» работает только после того, как компания, создавшая антивирусную программу, выделила вирус в лаборатории и включила в список новый отпечаток. Поэтому усовершенствование антивирусного программного обеспечения – бойкий бизнес.