Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответник на госы.docx
Скачиваний:
120
Добавлен:
08.02.2015
Размер:
1.89 Mб
Скачать

4.6. Ос. Поддержка систем программирования. Надежность, безопасность и защита. Поддержка интерфейса прикладного программирования (api)

API (Application Program Interface) – это набор функций, предоставляемых операционной системой разработчику прикладных и системных программ. Операционная система создает среду выполнения прикладным программам.

Для разработчиков приложений все особенности конкретной ОС представлены особенностями ее API. Поэтому операционные системы с различной внутренней организацией, но с одинаковым набором функций API и одинаковыми правилами обращения к этим функциям кажутся им одной и той же ОС, что упрощает стандартизацию операционных систем и обеспечивает переносимость приложений между внутренне различными ОС. Один из первых стандартов на интерфейс прикладных программ – стандарт POSIX (первоначально разработан для совместимости исполнения приложений в разных версиях операционной системы Unix).

Приложения при их исполнении выполняют обращения к функциям API с помощью системных вызовов. При этом информация для ОС (идентификатор команды и данные) помещается в определенное место памяти, либо в регистры и/или в стек. Затем управление передается операционной системе, которая выполняет требуемую функцию и возвращает результаты через память, регистры или стек.

Способы реализации API

На уровне модулей ОС

При этом способе ОС ответственна за выполнение функций API. Объектный код, выполняющий функции, либо непосредственно входит в состав операционной системы, либо находится в составе динамически загружаемых библиотек (Dynamic Link Libraries, DLL), поставляемых вместе с системой. Система программирования ответственна только за то, чтобы организовать интерфейс для вызова этого кода.

Динамически загружаемые модули (программные модули с расширением .dll) исполняются при вызове их исполняющейся программой (не подключаются к коду программы!).

Прикладной программист может оформить свою программу в виде .dll-файла (очень похоже на организацию пользовательского модуля) и подключить ее к общей DLL библиотеке.

Достоинства: достигается наибольшая эффективность выполнения функций API, т. к. прикладная программа обращается непосредственно к операционной системе.

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

Примеры таких API:

  • Набор функций WinAPI операционной системы Windows,

  • Набор сервисных функций (работа с клавиатурой, дисплеем и др.) операционной системы MS DOS, реализованных в виде подпрограмм обслуживания системных прерываний BIOS и DOS (команда int).

На уровне системы программирования

Эти функции предоставляются пользователю в виде библиотеки функций соответствующего языка программирования. Обычно речь идет о библиотеке времени исполнения (RTL). Система программирования предоставляет пользователю библиотеку функций и обеспечивает подключение к результирующей программе объектного кода, ответственного за выполнение этих функций.

Недостатки: эффективность ниже, чем при реализации на уровне ОС, т. к. для выполнения многих функций библиотека RTL языка программирования все равно должна выполнять обращения к функциям операционной системы.

Достоинства: высокая переносимость исходного кода программы, т. к. синтаксис и семантика обращения к функциям строго регламентированы в стандарте языка программирования и не зависят от архитектуры вычислительной системы.

Примеры: функции динамического выделения памяти в языках C (malloc, realloc, free), С++ (new и delete) и Паскаль (функции new и dispose).

С помощью внешних библиотек

Функции API предоставляются пользователю в виде библиотеки процедур и функций, созданной сторонним разработчиком.

Система программирования ответственна только за то, чтобы подключить объектный код библиотеки к результирующей программе или за организацию интерфейса для вызова этого кода, если внешняя библиотека является динамически загружаемой (DLL библиотекой).

Пример внешней подгружаемой библиотеки – программная графическая система OpenGL для Windows и Linux), библиотеки MFC и VCL для Windows.

Структура API Win2000/XP

Режим пользователя

Модуль

Файл

Назначение

Приложения пользователя

Могут быть одного из пяти типов: Win32, Win16 (дляWindows3.1),POSIX,OS/2,MS-DOS

Подсистемы среды

Предоставляют приложениям пользователя сервисы в виде функций, реализованных как программы динамически подключаемых библиотек (DLL)

Системные процессы и сервисы

Служебные программы, обслуживающие ОС (диспетчер сессий, процесс входа в систему WINLOGON) и предоставляющие сервисы (регистрация событий, обработка извещений и т. д.)

WIN32API

Интерфейс между пользовательскими приложениями и исполнительной системой Windows. Реализован в виде динамически подключаемых библиотек DDL). В пользовательском режиме работают три главных библиотеки, содержащие большую часть функций API: Kernel32.dll,User32.dll ,GDI.dll

Kernel32.dll

Kernel32.dll

Библиотека DLL. Содержит около 700 функций управления памятью, процессами и потоками

User32.dll

User32.dll

Библиотека DLL. Содержит около 600 функций для управления пользовательским интерфейсом, например, созданием окон и передачей сообщений

GDI.dll

GDI.dll

Библиотека DLL. Содержит около 400 функций для рисования графических объектов, отображения текста и работы со шрифтами

NTDLL

Ntdll.dll

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



Надежность

Этот критерий вообще принято считать самым важным при оценке программного обеспечения, и в отношении ОС его действительно принимают во внимание в первую очередь.

Что понимается под надежностью ОС?

Прежде всего, ее живучесть, т.е. способность сохранять хотя бы минимальную работоспособность в условиях аппаратных сбоев и программных ошибок. Высокая живучесть особенно важна для ОС компьютеров, встроенных в аппаратуру, когда вмешательство человека затруднено, а отказ компьютерной системы может иметь тяжелые последствия.

Во-вторых, способность, как минимум, диагностировать, а как максимум, компенсировать хотя бы некоторые типы аппаратных сбоев. Для этого обычно вводится избыточность хранения наиболее важных данных системы.

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

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

Архитектура подсистемы защиты ОС

Основные функции подсистемы защиты ОС

Подсистема защиты ОС выполняет следующие основные функции.

1. Идентификация и аутентификация. Ни один пользователь не может начать работу с ОС, не идентифицировав себя и не предоставив системе аутентифицирующую информацию, подтверждающую, что пользователь действительно является тем, кем он себя заявляет.

2. Разграничение доступа. Каждый пользователь системы имеет доступ только к тем объектам ОС, к которым ему предоставлен доступ в соответствии с текущей политикой безопасности.

3. Аудит. ОС регистрирует в специальном журнале события, потенциально опасные для поддержания безопасности системы.

4. Управление политикой безопасности. Политика безопасности должна постоянно поддерживаться в адекватном состоянии, т. е. должна гибко реагировать на изменения условий функционирования ОС. Управление политикой безопасности осуществляется администраторами системы с использованием соответствующих средств, встроенных в ОС.

5. Криптографические функции. Защита информации немыслима без использования криптографических средств защиты. Шифрование используется в ОС при хранении и передаче по каналам связи паролей пользователей и некоторых других данных, критичных для безопасности системы.

6. Сетевые функции. Современные ОС, как правило, работают не изолированно, а в составе локальных и/или глобальных компьютерных сетей. ОС компьютеров, входящих в одну сеть, взаимодействуют между собой для решения различных задач, в том числе и задач, имеющих прямое отношение к защите информации.

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

В таких ОС, как Windows ХР, подсистема защиты четко выделяется в общей архитектуре ОС, в других, как UNIX, защитные функции распределены практически по всем элементам ОС. Однако любая ОС, удовлетворяющая стандарту защищенности, должна содержать подсистему защиты, выполняющую все вышеперечисленные функции. Обычно подсистема зашиты ОС допускает расширение дополнительными программными модулями.

Проблемы обеспечения безопасности ОС

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

Угрозы безопасности ОС

Организация эффективной и надежной защиты ОС невозможна без предварительного анализа возможных угроз ее безопасности. Угрозы безопасности ОС существенно зависят от условий эксплуатации системы, от того, какая информация хранится и обрабатывается в системе, и т. д. Например, если ОС используется для организации электронного документооборота, наиболее опасны угрозы, связанные с несанкционированным доступом (НСД) к файлам. Если же ОС используется как платформа провайдера Internet-услуг, очень опасны атаки на сетевое программное обеспечение ОС.

Угрозы безопасности ОС можно классифицировать по различным аспектам их реализации.

1. По цели атаки:

• несанкционированное чтение информации;

• несанкционированное изменение информации;

• несанкционированное уничтожение информации;

• полное или частичное разрушение ОС.

2. По принципу воздействия на операционную систему.

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

• использование скрытых каналов получения информации; например угроза использования злоумышленником недокументированных возможностей ОС;

• создание новых каналов получения информации с помощью программных закладок.

3. По типу используемой злоумышленником уязвимости защиты:

• неадекватная политика безопасности, в том числе и ошибки администратора системы;

• ошибки и недокументированные возможности программного обеспечения ОС, в том числе и так называемые люки — случайно или преднамеренно встроенные в систему «служебные входы», позволяющие обходить систему защиты;

• ранее внедренная программная закладка.

4. По характеру воздействия на операционную систему:

• активное воздействие — несанкционированные действия злоумышленника в системе;

• пассивное воздействие — несанкционированное наблюдение злоумышленника за процессами, происходящими в системе.

Угрозы безопасности ОС можно также классифицировать по таким признакам, как: способ действий злоумышленника, используемые средства атаки, объект атаки, способ воздействия на объект атаки, состояние атакуемого объекта ОС на момент атаки. ОС может подвергнуться следующим типичным атакам:

• сканированию файловой системы. Злоумышленник просматривает файловую систему компьютера и пытается прочесть (или скопировать) все файлы подряд. Рано или поздно обнаруживается хотя бы одна ошибка администратора. В результате злоумышленник получает доступ к информации, который должен быть ему запрещен;

• подбору пароля. Существуют несколько методов подбора паролей пользователей:

— тотальный перебор;

— тотальный перебор, оптимизированный по статистике встречаемости символов или с помощью словарей;

— подбор пароля с использованием знаний о пользователе (его имени, фамилии, даты рождения, номера телефона и т. д.);

• краже ключевой информации. Злоумышленник может подсмотреть пароль, набираемый пользователем, или восстановить набираемый пользователем пароль по движениям его рук на клавиатуре. Носитель с ключевой информацией (смарт-карта, Touch Memory и т. д.) может быть просто украден;

• сборке мусора. Во многих ОС информация, уничтоженная пользователем, не уничтожается физически, а помечается как уничтоженная (так называемый мусор). Злоумышленник восстанавливает эту информацию, просматривает ее и копирует интересующие его фрагменты;

• превышению полномочий. Злоумышленник, используя ошибки в программном обеспечении ОС или политике безопасности, получает полномочия, превышающие те, которые ему предоставлены в соответствии с политикой безопасности. Обычно это достигается путем запуска программы от имени другого пользователя;

• программным закладкам. Программные закладки, внедряемые в ОС, не имеют существенных отличий от других классов программных закладок;

• жадным программам — это программы, преднамеренно захватывающие значительную часть ресурсов компьютера, в результате чего другие программы не могут выполняться или выполняются крайне медленно. Запуск жадной программы может привести к краху ОС.

Понятие защищенной ОС

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

Если ОС предусматривает защиту не от всех основных классов угроз, а только от некоторых, такую ОС называют частично защищенной.

Подходы к построению защищенных ОС

Существуют два основных подхода к созданию защищенных ОС — фрагментарный и комплексный. При фрагментарном подходе вначале организуется защита от одной угрозы, затем от другой и т. д. Примером фрагментарного подхода может служить ситуация, когда за основу берется незащищенная ОС (например, Windows 98), на нее устанавливаются антивирусный пакет, система шифрования, система регистрации действий пользователей и т. д.

При применении фрагментарного подхода подсистема защиты ОС представляет собой набор разрозненных программных продуктов, как правило, от разных производителей. Эти программные средства работают независимо друг от друга, при этом практически невозможно организовать их тесное взаимодействие. Кроме того, отдельные элементы такой подсистемы защиты могут некорректно работать в присутствии друг друга, что приводит к резкому снижению надежности системы.

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

Как правило, подсистему защиты ОС, созданную на основе комплексного подхода, проектируют так, чтобы отдельные ее элементы были заменяемы. Соответствующие программные модули могут быть заменены другими модулями.