- •Основные понятия операционной системы. Процессы. Взаимоблокировка Управление памятью. Ввод-вывод. Файлы. Безопасность
- •Проективные человеко-машинные системы. Проект как прообраз системы. Место пользователя в системе. Принципы построения.
- •Операционная система. Подходы к определению понятия «Операционная система». Архитектурные особенности операционных систем.
- •Слоеные системы
- •Виртуальные машины
- •Микроядерная архитектура.
- •Смешанные системы
- •Операционная система. Архитектурные особенности операционных систем. Классификация операционных систем.
- •Архитектурные особенности ос.
- •Процессы. Модель процесса. Создание процесса. Завершение процесса. Иерархия процессов. Состояния процессов
- •Планирование процессов. Уровни планирования. Критерии планирования и требования к алгоритмам. Параметры планирования. Вытесняющее и не вытесняющее планирование.
- •Вытесняющее и невытесняющее планирование.
- •Использование потоков. Необходимость использования потоков. Примеры использования потоков. Текстовый редактор. Web-server. Обработка массивов данных. Модели создания сервера.
- •Примеры использования потоков.
- •Управление памятью. Основное управление памятью. Однозадачная система без подкачки на диск. Многозадачность с фиксированными разделами.
- •Управление памятью. Настройка адресов и защита. Подкачка. Управление памятью с помощью битовых массивов. Управление памятью с помощью связных списков.
- •Управление памятью. Алгоритмы предоставления памяти. Первый подходящий. Следующий подходящий. Самый подходящий. Самый неподходящий. Улучшение алгоритмов.
- •Виртуальная память. Оверлеи. Виртуальная память. Страничная организация памяти.
- •Виртуальная память
- •Страничная организация памяти
- •Ввод-вывод в операционной системе. Принципы аппаратуры ввода-вывода. Устройства ввода-вывода. Контроллеры устройств.
- •Принципы аппаратуры ввода-вывода
- •Устройства ввода-вывода
- •Контроллеры устройств
- •Преимущество отображаемого на адресное пространство ввода/вывода
- •Недостатки отображаемого на адресное пространство ввода/вывода
- •Способы устранения недостатков
- •Ввод-вывод в операционной системе. Принципы аппаратного ввода-вывода. Программный ввод-вывод, ввод-вывод с прерываниями, ввод-вывод с использованием dma. Виды dma. Достоинства и недостатки dma.
- •Ввод-вывод в операционной системе. Задачи программного обеспечения ввода-вывода. Программные уровни ввода-вывода. Задачи программного обеспечения ввода-вывода
- •Ввод-вывод в операционной системе. Обработчики прерываний. Драйверы устройств. Обработчики прерываний
- •Драйверы устройств
- •Единообразный интерфейс для драйверов устройств
- •Ввод-вывод в операционной системе. Буферизация. Сообщения об ошибках. Захват и освобождение выделенных устройств. Независимый от устройств размер блока. Буферизация
- •Сообщения об ошибках
- •Захват и освобождение выделенных устройств
- •Независимый от устройств размер блока
- •Безопасность. Понятие «Безопасность». Угрозы безопасности. Злоумышленники. Случайная потеря данных.
- •Злоумышленники
- •Случайная потеря данных
- •Безопасность. Основы криптографии. Шифрование с секретным ключом. Необратимые функции. Цифровые подписи. Основы криптографии
- •Шифрование с секретным ключом
- •Вопрос 1: Сколько будет 314159265358979 х 314159265358979?
- •Вопрос 2: Чему равен квадратный корень из 3912571506419387090594828508241?
- •Необратимые функции
- •Цифровые подписи
- •Безопасность. Аутентификация пользователей. Аутентификация с использованием паролей. Защита паролей. Одноразовые пароли. Схема «оклик-отзыв». Аутентификация пользователей
- •Аутентификация с использованием паролей
- •Как взломщикам удается проникнуть в систему
- •Защита паролей в системе unix
- •Совершенствование безопасности паролей
- •Одноразовые пароли
- •Безопасность. Аутентификация с использованием физического объекта.
- •Безопасность. Аутентификация с использованием биометрических данных. Аутентификация с использованием биометрических данных
Безопасность. Аутентификация с использованием биометрических данных. Аутентификация с использованием биометрических данных
Третий метод аутентификации основан на измерении физических характеристик пользователя, которые трудно подделать. Они называются биометрическими параметрами. Например, для идентификации пользователя может использоваться специальное устройство считывания отпечатков пальцев или тембра голоса.
Работа типичной биометрической системы состоит из двух этапов: внесение пользователя в список и идентификация. Во время первого этапа характеристики пользователя измеряются и оцифровываются. Затем извлекаются существенные особенности, которые сохраняются в записи, ассоциированной с пользователем. Эта запись может храниться на компьютере в централизованной базе данных (например, для регистрации в системе с удаленного компьютера) или в смарт-карте, которую пользователь носит с собой и вставляет в устройство чтения смарт-карт (например, банкомата).
Второй этап процесса представляет собой идентификацию. Пользователь вводит регистрационное имя. Затем система снова производит замеры. Если новые значения совпадают с хранящимися в записи, регистрация разрешается, в противном случае в регистрации пользователю отказывается. Ввод имени при регистрации нужен, так как измерения не точны, поэтому их сложно использовать в качестве индекса для поиска. Кроме того, два человека могут обладать очень близкими характеристиками, поэтому требование соответствия этих параметров для одного определенного пользователя является значительно более строгим требованием, чем простое совпадение с характеристиками любого пользователя.
Измеряемые характеристики должны отличаться у различных пользователей в достаточно широких пределах, чтобы система могла безошибочно различать разных людей. Например, цвет волос не является хорошим индикатором, так как у очень многих людей волосы одного и того же цвета. Кроме того, эти характеристики не должны сильно изменяться со временем. Например, голос человека может изменяться вследствие простуды, а лицо может выглядеть по-другому благодаря наличию или отсутствию бороды или макияжа во время начальных замеров. Поскольку последующие измерения никогда точно не совпадут с первоначальными, разработчики такой системы должны решить, насколько точным должно быть сходство,
Теперь рассмотрим некоторые биометрические показатели, использующиеся на сегодняшний день.
Последнее время все большую популярность приобретают измерения рисунка сетчатки глаз. У каждого человека неповторимый рисунок кровеносных сосудов на сетчатке, даже у идентичных близнецов. Сетчатка глаза может быть аккуратно сфотографирована камерой с расстояния в один метр, возможно даже без ведома фотографируемого пользователя. Сетчатка глаза содержит значительно больше информации, чем отпечаток пальца. Эти данные можно закодировать, например, 256 байтами.
Подобную технику можно попытаться обмануть. Например, мошенник может подойти к банкомату, надев темные очки, к которым приклеены фотографии чужой сетчатки. По этой причине вместо фотокамер обычно используются видеокамеры, фиксирующие пульсацию, присутствующую в кровеносных сосудах сетчатки глаза.
Другой метод идентификации заключается в анализе подписи. Пользователь ставит подпись специальным пером, соединенным с терминалом, и компьютер сверяет ее с оригиналом, хранящимся на удаленном сервере или в смарт-карте. Лучше всего сравнивать не саму подпись, а движения пера и давление пера на бумагу.
Для измерения характеристик голоса требуется минимум специальной аппаратуры. Все, что для этого нужно, — это микрофон; все остальное выполняется программно. В отличие от систем распознавания речи, пытающихся определить, что говорит пользователь, эти системы пытаются определить, кем является говорящий. В некоторых системах пользователь должен просто произнести скрытый пароль, но такие системы легко обманываются злоумышленниками, записывающими разговор на магнитофон и воспроизводящими его позднее. Более сложные системы говорят пользователю определенную фразу и просят повторить именно ее, причем при каждой регистрации используется новый текст. Любая схема аутентификации должна быть психологически приемлема для сообщества пользователей. Измерение длины пальцев, возможно, не вызовет проблем, но даже такая безобидная процедура, как снятие отпечатков пальцев, может оказаться неприемлемой, так как у многих это действие ассоциируется с обвинением в преступлении.
Безопасность. Контрмеры. Атака изнутри системы. Троянские кони. Фальшивая программа регистрации. Логические бомбы. Потайные двери. Переполнение буфера.
Контрмеры.В некоторых компьютерных системах, серьезно относящихся к вопросу безопасности, часто предпринимаются шаги, призванные усложнить несанкционированный вход в систему. Так, компания может установить политику, разрешающую регистрацию сотрудников патентного отдела только с 8 часов утра до 5 вечера с понедельника по пятницу и только с машины, находящейся в патентном отделе. Любая попытка сотрудника патентного отдела зарегистрироваться в другие часы или не с того компьютера будет расцениваться как попытка взлома системы.
Телефонные коммутируемые линии также можно сделать более безопасными. Например, всем разрешается регистрироваться в системе через модем по телефонной линии, но после успешной регистрации система немедленно прерывает соединение и сама звонит пользователю по заранее условленному номеру. Такая мера означает, что взломщик не может вломиться в систему с любой телефонной линии.Все попытки входа в систему должны регистрироваться. Когда пользователь регистрируется, система должна сообщать ему дату и время последней регистрации, а также терминал, с которого производилась эта регистрация, чтобы пользователь мог заметить взлом системы злоумышленником.Еще один вариант защиты может заключаться в установке ловушки для взломщика. Простая схема ловушки представляет собой специальное имя регистрации с простым паролем. При каждом входе в систему с таким именем системные специалисты в области безопасности немедленно уведомляются.
Атаки изнутри системы.Зарегистрировавшись на компьютере, взломщик может начать причинение ущерба. Если на компьютере установлена надежная система безопасности, возможно, взломщик сможет навредить только тому пользователю, чей пароль он взломал, но часто начальная регистрация может использоваться в качестве ступеньки для последующего взлома других учетных записей.
Троянские кони.Одним из давно известных вариантов атаки изнутри является троянский конь, представляющий собой невинную с виду программу, содержащую процедуру, выполняющую неожиданные и нежелательные функции. Этими функциями могут быть удаление или шифрование файлов пользователя, копирование их туда, где их впоследствии может получить взломщик, или даже отсылка их взломщику или во временное укромное место по электронной почте или с помощью протокола FTP. Чтобы троянский конь заработал, нужно, чтобы программа, содержащая его, была запущена. Один способ состоит в бесплатном распространении такой программы через Интернет под видом новой игры, проигрывателя МРЗ и т. д., лишь бы привлечь внимание и поощрить загрузку программы. При запуске программы вызывается процедура троянского коня, которая может выполнять любые действия в пределах полномочий запустившего ее пользователя. Тактика применения троянского коня позволяет обойтись без взлома компьютера жертвы.
Фальшивая программа регистрации.В чем-то схожа с троянскими конями жульническая схема с фальшивой регистрацией. Эта схема работает следующим образом. Обычно при регистрации на терминале или рабочей станции, подключенной к локальной сети, пользователь видит экран, для ввода логин и пароля. Когда пользователь садится за терминал и вводит свое регистрационное имя, система спрашивает у него пароль. Если пароль верен, пользователю разрешается вход в систему и оболочка запускается.Теперь рассмотрим следующий сценарий. Некто пишет программу, изображающую экран, для ввода логина и пароля. Она выглядит в точности как настоящее окно, предлагающее пользователю зарегистрироваться. Теперь этот некто отходит в сторонку и наблюдает за происходящим с безопасного расстояния. Когда пользователь садится за терминал и набирает имя, программа в ответ запрашивает пароль и отключает эхо. Когда имя и пароль получены, они записываются в файл, после чего фальшивая программа регистрации посылает сигнал уничтожения собственной оболочки. В результате этого действия сеанс работы злоумышленника на этом терминале завершается и запускается настоящая процедура регистрации. Пользователь при этом полагает, что он неверно ввел пароль и просто регистрируется еще раз. На этот раз все проходит успешно. Но таким образом удается получить имя и пароль.
Логические бомбы.Сегодня, когда мобильность наемных работников значительно увеличилась, появилась еще одна разновидность атаки системы изнутри, называемая логической бомбой. Логическая бомба представляет собой программу, написанную одним из сотрудников компании и тайно установленную в операционную систему. До тех пор пока программист каждый день входит в систему под своим именем и паролем, эта программа не предпринимает никаких действий. Однако если программиста внезапно увольняют и физически удаляют из помещения без предупреждения, то на следующий день (или на следующую неделю) логическая бомба, не получив своего ежедневного пароля, начинает действовать. Существует множество вариаций на эту тему. В одном знаменитом случае программа проверяла платежную ведомость. Если личный номер программиста не появлялся в двух последовательных ведомостях подряд, бомба «взрывалась».Взрыв логической бомбы может заключаться в форматировании жесткого диска, удалении файлов в случайном порядке, осуществлении сложно обнаруживаемых изменений в ключевых программах или шифровании важных файлов. В последнем случае компания оказывается перед сложным выбором: вызвать полицию или сдаться шантажисту и снова нанять на работу этого программиста в качестве «консультанта» с астрономическим окладом для восстановления системы.
Потайные двери.Еще один способ создания дыры в системе безопасности изнутри называется потайной дверью. Для этого в систему системным программистом внедряется специальная программа, позволяющая обойти нормальную процедуру проверки. Например, программист может добавить к программе регистрации кусок программы, пропускающий в систему пользователя с именем «zzzzz», независимо от того, что содержится в файле паролей. Процедура strcmp используется для сравнения имени регистрации со строкой «zzzzz». Если пользователь ввел при регистрации это имя, то пароль уже не важен. Если такой потайной лаз установлен программистом, работающим на фирме, производящей компьютеры, а затем поставляется вместе с компьютерами, впоследствии этот программист сможет зарегистрироваться на любом компьютере, произведенном его компанией, независимо от того, кому будет принадлежать компьютер и какая информация будет содержаться в файле паролей. Потайная дверь просто обходит весь процесс аутентификации.Чтобы не допустить установки потайных дверей в систему, компании могут, например, ввести регулярные просмотры программ. При этом, когда программист закончил писать и тестировать программный модуль, модуль проверяется и помещается в базу данных. Периодически все программисты команды собираются вместе и каждый из них поочередно разъясняет остальным, что делает его программа, строка за строкой. При этом вероятность обнаружения потайных дверей значительно увеличивается.
Переполнение буфера.В основе множества атак лежит тот факт, что практически все операционные системы написаны на языке программирования С. К сожалению, ни один компилятор языка С не выполняет проверки границ массива. Соответственно, следующий кусок программы представляется компилятору вполне законным:
int і:char с[1024];і = 12000;c[i] = 0:В результате выполнения этого куска программы некий байт в памяти, находящийся на 10 976 байт за пределами массива с, будет обнулен, возможно, с катастрофическими последствиями. Во время исполнения программы не производится никакой проверки, чтобы предотвратить эту ошибку.Это свойство языка С позволяет произвести атаку следующего типа. Предположим, что для работы процедуре А требуется получить полный путь к файлу, после чего открыть этот файл и выполнить с ним какие-либо действия. У процедуры А есть буфер В фиксированного размера (то есть массив), в котором она содержит имя файла. Использовать буфер иксированного размера значительно проще, чем сначала вычислить требуемый размер, а затем динамически запросить у системы буфер нужного размера. Если зарезервировать буфер длиной 1024 байт, то его должно быть достаточно для хранения любых имен файлов. Особенно если операционная система ограничивает дину имен файлов 255 символами.
Предположим, что пользователь задает этой программе имя файла длиной в 2000 символов. При этом программа не сможет открыть файл, но взломщика это не волнует. Когда процедура скопирует имя файла в свой буфер, имя файла переполнит. Что еще хуже, если имя файла достаточно длинное, оно также запишется поверх адреса возврата, поэтому, когда процедура А станет выполнять возврат в головной модуль, адрес возврата процедура А возьмет из середины имени файла. Если этот адрес представляет собой случайный мусор, то программа прыгнет по случайному адресу и, вероятно, аварийно завершится, выполнив несколько команд.Если оно содержит работоспособную программу и тщательно настроено, так чтобы адрес возврата как раз указывал на начало этой программы, например на начало буфера В? При этом после возврата из процедуры А начнет выполняться программа в буфере В. Таким образом, взломщику удалось внедрить в программу свою процедуру и передать ей управление.Защита от атак подобного рода заключается в явной проверке длины всех поставляемых пользователем строк перед копированием этих строк в буферы. К сожалению, подверженность какой-либо программы подобной атаке, как правило, выясняется уже после успешной атаки.