Примеры программных систем защиты

Из существующих программных систем защиты достаточно популярны­ми являются системы «Керберос» (Kerberos) и «Кобра».

Система «Керберос» является системой аутентификации пользователей, разработана в 80-х годах в Массачусетском технологическом институте. Ос­новное ее назначение - контроль доступа пользователей в вычислительной сети. Система эффективно функционирует в распределенных системах с не­большим числом централизованно управляемых рабочих станций. Предпо­лагается, что имеется хорошо защищенная система управления обменом клю­чами шифрования, рабочие станции не защищены, а серверы имеют слабую защиту. В «Керберосе» применяется многократное шифрование при переда­че служебной информации в сети. Так, в некоторых зашифрованных сообще­ниях, отдельные слова сообщения тоже зашифрованы. Пароли никогда не передаются по сети незашифрованными. При обмене служебной информа­цией применяются зашифрованное данные, действующие ограниченное вре­мя, - аутентикаторы (authenticator), содержащие имя пользователя, его сете­вой адрес и отметку времени.

В системе «Керберос» используется алгоритм шифрования RSA. Система «Керберос» может работать на различных платформах, в том числе MS-DOS, Macintosh, SunOS, HP-UX, NextStep, и AIX-системы RS/6000 фирмы IBM Совместно с ней могут применяться также жетоны SecurlD фирмы Security Dynamics.

Система «Керберос» обладает рядом недостатков. Во-первых, она не по­зволяет выполнять проверку полномочий прикладных задач и отдельных транзакций. Во-вторых, необходим предварительный обмен ключами шиф­рования между всеми участниками обмена. В-третьих, в процессе работы эле­менты системы обмениваются служебной информацией, что требует высо­кой пропускной способности каналов обмена данными.

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

Упрощенно работу системы защиты «Керберос» можно представить сле­дующим образом. Пользователь вводит свой идентификационный код (имя), который шифруется клиентом и направляется к идентификационному сер­веру как запрос на выдачу «разрешения на получение разрешения». Другими словами, формируется запрос на регистрацию к системе защиты.

Идентификационный сервер отыскивает в своей базе данных разре­шенных пользователей соответствующий пароль, с его помощью шиф­рует ответное сообщение, которое отсылает клиенту. Получив «разреше­ние на разрешение», клиент расшифровывает его, определяет из него зна­чение пароля пользователя и запрашивает пароль у пользователя. Если введенный и полученный пароли совпадают, клиент формирует шифро­ванный запрос серверу выдачи разрешения на получение доступа к тре­буемым ресурсам сети.

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

Получив и расшифровав разрешение, клиент связывается с помощью за­шифрованного сообщения с целевым сервером, ресурсы которого требуются пользователю, и только после этого пользователь получает доступ к ресурсу-

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

Система «Кобра» является одной из распространенных и эффективных специализированных систем защиты для MS-DOS и Windows. Она основана на технологии прозрачной защиты, которой пользователь в своей работе не замечает, а поэтому не испытывает неудобств от функционирования защит­ных средств.

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

Для шифрования информации в системе «Кобра» применяется техноло­гия криптозащиты, обеспечивающая повышение скорости шифрования и криптостойкости зашифрованной информации. Скорость шифрования уве­личивается за счет двухэтапной схемы шифрования, а криптостойкость - за счет внесения неопределенности в алгоритм шифрования.

Средства защиты БД

Средства защиты БД в различных СУБД несколько отличаются друг от друга. На основе анализа современных СУБД фирм Borland и Microsoft мож­но утверждать, что средства защиты БД условно делятся на две группы: ос­новные и дополнительные.

К основным средствам защиты информации можно отнести следу­ющие средства:

• парольной защиты;

• шифрования данных и программ;

• установления прав доступа к объектам БД;

• защиты полей и записей таблиц БД.

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

Шифрование данных (всей базы или отдельных таблиц) применяют для того, чтобы другие программы, «знающие формат БД этой СУБД», не могли прочитать данные. Такое шифрование (применяемое в Microsoft Access), по-видимому, дает немного, поскольку расшифровать БД может любой с помо­щью «родной» СУБД. Если шифрация и дешифрация требуют задания паро­ля, то дешифрация становится возможной при верном вводе пароля. Надеем­ся, разработчики Access учтут это в последующих версиях.

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

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

По отношению к таблицам в общем случае могут предусматриваться сле­дующие права доступа:

• просмотр (чтение) данных;

• изменение (редактирование) данных; •добавление новых записей;

• добавление и удаление данных;

• все операции, в том числе изменение структуры таблицы.

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

Применительно к защите данных в полях таблиц можно выделить следу­ющие уровни прав доступа:

• полный запрет доступа;

• только чтение;

• разрешение всех операций (просмотр, ввод новых значений, удаление и
изменение).

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

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

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

К дополнительным средствам защиты БД можно отнести такие, кото­рые нельзя прямо отнести к средствам защиты, но которые непосредственно влияют на безопасность данных. Их составляют следующие средства:

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

• повышения достоверности вводимых данных;

• обеспечения целостности связей таблиц;

• организации совместного использования объектов БД в сети.

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

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

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

Решение прикладной задачи, как правило, требует информации из несколь­ких таблиц. Сами таблицы для удобства обработки и исключения дублирова­ния информации некоторым образом связываются (подраздел 3.3). Функции поддержания логической целостности связанных таблиц берет на себя СУБД (подраздел 3.4). К сожалению, далеко не все СУБД в полной мере реализуют эти функции, в этом случае ответственность за корректность связей возлага­ется на приложение.

Приведем пример возможных действий СУБД по контролю целостности связей таблиц. Пусть между двумя таблицами существует связь вида 1:М и, следовательно, одной записи основной таблицы может соответствовать не­сколько записей вспомогательной таблицы.

При вставке записей во вспомогательную таблицу система контролирует наличие соответствующих значений в поле связи основной таблицы. Если Вводимое значение отсутствует в основной таблице, СУБД временно блоки-

рует работу с новой записью и предлагает изменить значение или удалить запись целиком.

Удаление записей дополнительных таблиц проходит «безболезненно», чего не скажешь о записях основной таблицы. В случае, когда запись ос­новной таблицы связана с несколькими записями дополнительной табли­цы, возможны два варианта поведения: не удалять основной записи, пока имеется хотя бы одна подчиненная запись (записи должен удалять пользо­ватель), либо удалить основную запись и все подчиненные записи (кас­кадное удаление).

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

Обычно при одновременной работе нескольких пользователей сети, а так­же работе нескольких приложений на одном компьютере или работе в несколь­ких окнах СУБД используются блокировки.

Блокировки могут действовать на различные объекты БД и на отдельные элементы объектов. Очевидной ситуацией блокировки объектов БД являет­ся случай одновременного использования объекта и попытки входа в режим разработки этого же объекта. Применительно к таблицам баз данных допол­нительные блокировки могут возникать при работе с отдельными записями или полями.

Блокировки бывают явные и неявные. Явные блокировки накладываются пользователем или приложением с помощью команд. Неявные блокировки организует сама система, чтобы избежать возможных конфликтов. Например, в случае попытки изменения структуры БД во время редактирования инфор­мации устанавливается запрет реструктурирования БД до завершения редак­тирования данных.

Наши рекомендации