регистрация / вход

Обнаружение вредоносных закладок

СОДЕРЖАНИЕ Введение ..2 1 Подтверждение подлинности пользователей и разграничение их доступа к компьютерным ресурсам ... ...3

СОДЕРЖАНИЕ

Введение………………………………………………………………………………..2

1 Подтверждение подлинности пользователей и разграничение их доступа к компьютерным ресурсам………………...……………………………………………………...3

2 Типовые решения в организации ключевых систем………………………………..10

3. Описание программы………………………………………………………………….13

Заключение……………………………………………………………………………...17

Приложение А (интерфейс программы)………………….………………………...…18

Приложение В (листинг программы)…………………………………………………19 Литература………………………………………………………………………………29


ВВЕДЕНИЕ


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

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

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


1. ПОДТВЕРЖДЕНИЕ ПОДЛИННОСТИ ПОЛЬЗОВАТЕЛЕЙ И РАЗГРАНИЧЕНИЕ ИХ ДОСТУПА К КОМПЬЮТЕРНЫМ РЕ­СУРСАМ


1.1. Основные этапы допуска в компьютерную систему

Системой защиты по отношению к любому пользователю с целью обеспечения безопасности обработки и хранения информации должны быть предусмотрены следующие этапы допуска в вычислительную систему[2]:

1) идентификация;

2) установление подлинности (аутентификация);

3) определение полномочий для последующего контроля и разгра­ничения доступа к компьютерным ресурсам.


Данные этапы должны выполняться и при подключении к вычисли­тельной системе (ВС) таких устройств, как удаленные рабочие станции и терминалы[2].

Идентификация необходима для указания компьютерной системе уникального идентификатора обращающегося к ней пользователя с целью выполнения следующих защитных функций[2]:

- установление подлинности и определение полномочий пользова­теля при его допуске в компьютерную систему;

- контроль установленных полномочий и регистрация заданных действий пользователя в процессе его сеанса работы после до­пуска данного пользователя в ВС;

  • учет обращений к компьютерной системе.

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

- фамилия, имя, отчество и, при необходимости, другие характери­стики пользователя;

- уникальный идентификатор пользователя;

- имя процедуры установления подлинности;

- используемая для подтверждения подлинности эталонная инфор­мация, например, пароль;

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

-полномочия пользователя по доступу к компьютерным ресурсам.


Процесс установления подлинности, называемый еще аутентифика­цией, заключается в проверке, является ли пользователь, пытающийся осуществить доступ в ВС, тем, за кого себя выдает[2].

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

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

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











Рис. 1.1. Схема идентификации и аутентификации пользователя при его доступе в ВС


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

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

Существующие парольные методы проверки подлинности пользователей при входе в ВС можно разделить на две группы[2] :

- методы проверки подлинности на основе простого пароля;

- методы проверки подлинности на основе динамически изменяю­щегося пароля.

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

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


1.2. Использование простого пароля

Процедура опознавания с использованием простого пароля может быть представлена в виде следующей последовательности действий[2]:

1) пользователь посылает запрос на доступ к компьютерной системе и вводит свой идентификатор;

2) система запрашивает пароль;

3) пользователь вводит пароль;

4) система сравнивает полученный пароль с паролем пользователя, хранящимся в базе эталонных данных системы защиты, и разрешает доступ, если пароли совпадают; в противном случае пользо­ватель к ресурсам компьютерной системы не допускается.

Поскольку пользователь может допустить ошибку при вводе пароля то системой должно быть предусмотрено допустимое количество повто­рений для ввода пароля.

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

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

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

При работе с паролями должна предусматриваться и такая мера, как недопустимость их распечатки или вывода на экраны мониторов. По­этому система защиты должна обеспечивать ввод пользователями за­прошенных у них паролей без отображения этих паролей на мониторах.

Можно выделить следующие основные способы повышения стойко­сти системы защиты на этапе аутентификации:

- повышение степени не тривиальности пароля;

- увеличение длины последовательности символов пароля;

-увеличение времени задержки между разрешенными попытками повторного ввода неправильно введенного пароля;

- повышение ограничений на минимальное и максимальное время действительности пароля.

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

Вероятность подбора пароля уменьшается также при увеличении его длины и времени задержки между разрешенными попытками повторного ввода неправильно введенного пароля. Ожидаемое время раскрытия пароля Т, можно вычислить на основе следующей полученной экспери­ментально приближенной формулы[2]:

Т> (As*Ty)/2.

Здесь:

А - число символов в алфавите, используемом для набора символов пароля;

S - длина пароля в символах, включая пробелы и другие служебные символы;

Ту - время ввода пароля с учетом времени задержки между разре­шенными попытками повторного ввода неправильно введенного пароля.

Например, если А = 26 символов (учтены только буквы английского алфавита), Ty = 2 секунды, a S = б символов, то ожидаемое время рас­крытия Тy приблизительно равно одному году. Если в данном примере по­сле каждой неудачной попытки ввода пароля предусмотреть временную задержку в 10 секунд, то ожидаемое время раскрытия увеличится в 5 раз.

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

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

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

Минимальное время действительности пароля задает время, в течении которого пароль менять нельзя, а максимальное - время, по исте­чении которого пароль будет недействительным. Соответственно, пароль должен быть заменен в промежутке между минимальным и максималь­ным временем его существования. Поэтому понятно, что более частая
смена пароля обеспечивается при уменьшении минимального и макси­мального времени его действительности.

Минимальное и максимальное время действительности пароля за­даются для каждого пользователя администратором службы безопасно­сти, который должен постоянно контролировать своевременность смены паролей пользователей.


1.3. Использование динамически изменяющегося пароля

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

Существуют следующие методы парольной защиты, основанные на использовании динамически изменяющегося пароля[2]:

- методы модификации схемы простых паролей;

- метод «запрос-ответ»;

- функциональные методы.

Наиболее эффективными из данных методов, как станет понятно далее, являются функциональные методы.

1.3.1. Методы модификации схемы простых паролей.

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

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

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

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

1.3.2. Метод «запрос-ответ»

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

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

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

1.3.3. Функциональные методы

Среди функциональных методов наиболее распространенными яв­ляются метод функционального преобразования пароля, а также метод «рукопожатия».

Метод функционального преобразования основан на использовании некоторой функции F, которая должна удовлетворять следующим требо­ваниям[2]:

- для заданного числа или слова X легко вычислить Y=F(X);

- зная X и Y сложно или невозможно определить функцию Y=F(X).

Необходимым условием выполнения данных требований является наличие в функции F(X) динамически изменяющихся параметров, напри­мер, текущих даты, времени, номера дня недели, или возраста пользова­теля.

Пользователю сообщается:

-исходный пароль - слово или число X, например число 31:

-функция F(X), например, Y=(X mod 100) * D + WJ, где (X mod 100) -операция взятия остатка от целочисленного деления X на 100, D -текущий номер дня недели, a W - текущий номер недели в теку­щем месяце;

- периодичность смены пароля, например, каждый день, каждые три дня или каждую неделю.

Паролями пользователя для последовательности установленных периодов действия одного пароля будут соответственно X, F(X), F(F(X)), F(F(F(X))) и т.д., т.е. для 1-го периода действия одного пароля паролем пользователя будет F'"1(X). Поэтому для того, чтобы вычислить очередной пароль по истечении периода действия используемого пароля пользова­телю не нужно помнить начальный (исходный) пароль, важно лишь не за­быть функцию парольного преобразования и пароль, используемый до настоящего момента времени.

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

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

При входе пользователя в ВС системой защиты генерируется слу­чайное число или случайная последовательность символов X и вычисля­ется функция F(X), заданная для данного пользователя (см. Рис. 1.2). Да­лее X выводится пользователю, который должен вычислить F(X) и ввести полученное значение в систему. Значения F(X) и F(X) сравниваются сис­темой и если они совпадают, то пользователь получает доступ в ВС.


Рис. 1.2. Схема аутентификации по методу «рукопожатия»


Например, в ВС генерируется и выдается пользователю случайное число, состоящее из семи цифр. Для заблуждения злоумышленника в лю­бое место числа может вставляться десятичная точка. В качестве функ­ции F принимается Y = (<сумма 1-й, 2-й и 5-й цифр числа>)2 - <сумма 3-й, 4-й, 6-й и 7-й цифр числа> + <сумма цифр текущего времени в часах>.

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

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

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


2 ТИПОВЫЕ РЕШЕНИЯ В ОРГАНИЗАЦИИ КЛЮЧЕВЫХ СИСТЕМ

Рассмотрим структуры данных и алгоритмы идентификации и аутен­тификации на основе ключевой информации, а также иерархию хранения ключей.

Поскольку предполагается выполнение процедур как идентификации, так и аутентификации, допустим, что i-й аутентифицирующий объект (i-й ключевой носитель) содержит два информационных поля: IDi - неизме­няемый идентификатор i-го пользователя который является аналогом имени и используется для идентификации пользователя, и К, - аутентифицирующая информация пользователя, которая может изменяться и служит для аутентификации[1].

На самом деле IDi может соответствовать разным пользователям, например носитель сенсорной памяти Touch Memory содержит 8 байт не­изменяемого идентификатора носителя, но при этом ТМ может быть пе­редан разным пользователям.

Совокупную информацию в ключевом носителе будем называть пер­вичной аутентифицирующей информацией i-ro пользователя. Описанная структура соответствует практически любому ключевому носителю, слу­жащему для опознания пользователя. Например, ТМ имеет 8 байт, не пе­резаписываемого неповторяющегося серийного номера, который одно­значно характеризует конкретное ТМ, и некоторый объем перезаписывае­мой памяти, соответствующий аутентифицирующей информации Kj. Аналогично для носителей типа пластиковых карт выделяется неизме­няемая информация IDi первичной персонализации пользователя и объ­ект в файловой структуре карты, содержащий Ki.

Очевидно, что внутренний аутентифицирующий объект не должен
существовать в компьютерной системе длительное время (больше време­ни работы конкретного пользователя). Далее, для постоянного хранения
необходимо использовать некую информацию, преобразованную из пер­вичной. Рассмотрим типовые схемы аутентификации[1].

Схема 1. В компьютерной системе выделяется объект-эталон для идентификации и аутентификации (положим, что в системе зарегистрировано n пользователей). Структура объекта-эталона для схемы Т показана в таблице 2.1:


Таблица 2.1

Номер пользователя

Информация для

идентификации

Информация для

аутентификации

1

ID1

E1

2

ID2

E2

n

IDn

En


В табл. 2.1. Ei = F(IDi, Кi), где F - функция, для которой можно качест­венно описать свойство "невосстановимости" Ki по Еi и IDi.

"Невосстановимость" Ki описывается некоторой пороговой трудоем­костью Тo решения задачи восстановления аутентифицирующей инфор­мации по Ei и IDi, ниже которой не должна опускаться ни одна оценка тру­доемкости нахождения Ki для всех известных алгоритмов решения данной задачи.

Кроме того, для пары Ki и Kj возможно совпадение соответствующих значений Е. В связи с этим вводится вероятность ложной аутентификации пользователя Рла, которая вычисляется как условная вероятность события "совпадение Еi и Ej при условии нетождественности К: и Kj". Эта вероят­ность не должна быть больше некоторого предельного значения Р0. На практике задают То = 1020...1030, Р0 = 10-7…10-9


Алгоритм идентификации и аутентификации (схема 1)

1. Пользователь предъявляет свой идентификатор (имя) ID.

2. Если ID не совпадает ни с одним IDi, зарегистрированным в ком­пьютерной системе, то идентификация отвергается - пользователь не допущен к работе, иначе (существует IDi=ID) устанавливается факт "пользователь, назвавшийся пользователем i, прошел идентификацию".

3. Субъект аутентификации запрашивает у пользователя аутентификатор К.

4. Субъект аутентификации вычисляет Y=F(IDi, К).

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

Данная схема может быть модифицирована.

Схема 2. В компьютерной системе выделяется объект-эталон, струк­тура которого показана в табл. 2.2 (положим, как и в схеме 1, что в систе­ме зарегистрировано n пользователей). В таблице Е, = F(Si, Ki), где Si -случайный вектор, заданный при создании пользователя (т.е. при созда­нии строки, необходимой для идентификации и аутентификации пользова­теля); F - функция, для которой можно качественно описать свойство "не­восстановимость" К по Ei и Si. "Невосстановимость" Кi, понимается в том же смысле, как и для схемы 1.


Таблица 2.2

Номер пользователя

Информация для

идентификации

Информация для

аутентификации

1

ID1,S1

E1

2

ID2,S2

E2

n

IDn,Sn

En


Алгоритм идентификации и аутентификации (схема 2)

1. Пользователь предъявляет свой идентификатор (имя) ID.

2. Если ID не совпадает ни с одним IDi, зарегистрированным в ком­пьютерной системе, то идентификация отвергается - пользователь не допущен к работе, иначе (существует IDi = ID) устанавливается факт "пользователь, назвавшийся пользователем i, прошел идентификацию".

3. По IDi выделяется Si.

4. Субъект аутентификации запрашивает у пользователя аутентификатор К.

5. Субъект аутентификации вычисляет Y = F(Si, К).

6. Субъект аутентификации производит сравнение Ei и Y. При совпа­дении фиксируется событие "пользователь успешно аутентифицирован в КС", в противном случае аутентификация отвергается - пользователь не допущен к работе.

Вторая схема аутентификации применяется в ОС Unix. В качестве идентификатора ID используется имя пользователя (запрошенное по Login), в качестве Ki- пароль пользователя (запрошен по Password), функция F представляет собой алгоритм шифрования DES. Эталоны для идентификации и аутентификации содержатся в файле Etc/passwd.

Утверждение (о подмене эталона). Если пользователь имеет воз­можность записи объекта хранения эталона, то пользователь может быть идентифицирован и аутентифицирован (в рамках рассмотренных схем), как любой пользователь[1].

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

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

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

Рассмотрим теперь иерархию хранения и использования ключей при условии наличия в компьютерной системе криптографической подсисте­мы, включающей алгоритм шифрования Е, алгоритм расшифрования D и исходные объекты O1, ..., Оn, зашифрованные на ключах ki, ..., kn. Резуль­татом зашифрования исходных объектов являются объекты доступа в системе: Y1, .... Yn. При этом Yj = E(0j, kj), Oj = D(Yj, kj). Пусть владельцу ключа Kj необходимо обеспечить доступ к объекту Yj (доступ подразуме­вает возможность расшифрования Yj). Для этого он должен знать ключ kj. Очевидно, что требуются дополнительные объекты хранения зашифро­ванных ключей (табл. 2.3). С учетом того, что к объекту Yj могут иметь доступ несколько пользователей, объект уj может содержать несколько подобъектов вида E(kj, Km), где Km - ключ m-ro пользователя.

Таблица 2.3

Объект доступа


Дополнительный объект


Y1


Y1=E(k1, Кj)


Y2


Y2= E(k2, Кj)




Yn


Yn=Е(knn)


Алгоритм доступа

1. Пользователь i идентифицируется и аутентифицируется в компью­терной системе. При положительном исходе ключ пользователя Кj досту­пен субъектам (программам) системы, регулирующим доступ к объектам.

2. Пользователь производит доступ к зашифрованному объекту Yj. Выполняется поиск дополнительного объекта уj. В объекте уj проверяется наличие E(kj, Ki), т.е. ключа доступа к объекту, зашифрованного на ключе пользователя. Если E(kj, Кi) не найден, то доступ пользователя отвергает­ся. Иначе выполняются следующие действия.

3. Производится расшифрование ключа kj = D(yj, Ki), а затем - рас­шифрование объекта Oj= D(Yj, ki).

Под объектами доступа могут пониматься абоненты распределенной системы (сети связи). В этом случае ключ kj является ключом взаимодей­ствия между пользователем i и абонентом j (это может быть также поль­зователь, терминал, принтер и т.д.). При рассмотрении сети связи обычно оперируют матрицей ключей, которая в явном виде отображает топологию связей в системе.

3. ПРОГРАММА


3.1.ОПИСАНИЕ ПРОГРАММЫ.

3.1.1 Используемая процедура опознавания.

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

В базе эталонных данных системы защиты пароли хранятся в зашифрованной форме. При этом используется шифрование методом гаммирования. В качестве ключа шифрования используется псевдослучайная последовательность битов, полученная с помощью линейного конгуэртного генератора[3].

Этот генератор вырабатывает последовательность псевдослучайных чисел Y1, Y2, …Yi-1, Yi,…, используя соотношение:

Yi=(a*Yi-1+b)mod m,

где Yi-iе (текущее) число последовательности; a-множитель (коэффициент); b-приращение; m-модуль; Y 0-порождающее число (исходное значение).

Данное уравнение генерирует псевдослучайные числа с периодом повторения, который зависит от выбираемых значений параметров a,b,m и может достигать значения m.

3.1.2 Распределение ключей.

Программа позволяет устанавливать до десяти различных идентификаторов пользователей и паролей к ним. Длины идентификатора и пароля совпадают и составляют по десять символов каждый. Что позволяет обеспечить достаточную степень защиты, так как при попытке проникнуть в программу, не зная пароля даже при известном идентификаторе используя метод простого перебора ключей, потребует около 18010 повторений ввода пароля. Это достигается тем, что при выборе ключей допускается использование любых символов обоих регистров клавиатуры за исключением клавиши ‘пробел’.

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

3.1.3 Возможности администратора.

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


3.2 АЛГОРИТМ ПРОГРАММЫ.

Укрупненный алгоритм основного модуля программы (‘UNITKURS1.PAS’) приведен на рисунке 3.1

3.2.1 Проверка паролей.

Проверка паролей осуществляется следующим способом: из файла ‘password.txt’ производится чтение таблицы идентификаторов и паролей, затем происходит сверка введенного идентификатора с идентификаторами определенными для различных пользователей. В случае положительного результата претенденту разрешается допуск к приложению.

Файл ‘password.txt’ имеет постоянный размер 350 байт, по 35 байт на каждого пользователя. Его отсутствие в одной директории с исполняемым модулем программы

или другой размер приведет к ошибке во время работы программы.

3.2.2 Запись в журнал аудита.

При каждой попытке входа в автоматически ведущийся журнал аудита делается запись, состоящая из 30 байт:

-первые десять байт это идентификатор, который ввел пользователь;

-следующие десять байт это пароль;

-в последние десять байт заносится информация о результате проверки подлинности.

3.2.3 Администрирование доступа (рис 3.2).

При вводе идентификатора и пароля администратора появляется окно (см. приложение А) в котором отображаются:

-информация о пользователе (например, фамилия);

-идентификатор пользователя;

-пароль пользователя.

Администратор может вносить изменения в таблицу меняя информацию в отдельных ячейках таблицы или стереть всю таблицу целиком.


Рис 3.1









да




нет













да



нет






Рис 3.2




Чтение информации из

Файла ‘password.txt’





Рассшифрование и отображение в таблице











Сохранение

изменений









ЗАКЛЮЧЕНИЕ

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

-пароли в системе должны храниться обязательно в зашифрованном виде;

-рядовые пользователи не должны иметь доступ к эталонной информации;

-должна быть найдена ‘золотая середина’ между легкостью запоминания пароля и его не тривиальностью.

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

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


ПРИЛОЖЕНИЕ A (ИНТЕРФЕЙС ПРОГРАММЫ)



5. ПРИЛОЖЕНИЕ B (ЛИСТИНГ ПРОГРАММЫ).


unit Unitkurs1;{главный}

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls, Mask;

type

TForm1 = class(TForm)

Label1: TLabel;

EditID: TEdit;

Label2: TLabel;

EditPSW: TMaskEdit;

Button1: TButton;

Button2: TButton;

Label3: TLabel;

procedure Button2Click(Sender: TObject);

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

procedure Generator;

end;

var

Form1: TForm1;

F_Mag,

F_PSW:file of char;{переменная, связанная с файлом 'password.txt'}

i,j,l,flag,i1,f{Yo}:integer;

y:integer;{псевдослучайное число}

UserMatrix:array[1..10,1..3] of string;{массив фамилий, идентификаторов и паролей пользователей}

Surname:array[1..150] of char;{массив фамилий пользователей}

IDs:array[1..100] of char;{массив идентификаторов пользователей}

PSWs:array[1..100] of char;{массив паролей пользователей}

stroca,Ident,Psword:string;

xxx:char;

const

Yo:integer=14;

implementation

uses Unitkurs, Unitkurs3;

{$R *.DFM}

{процедура реализующая ЛИНЕЙНЫЙ КОНГУЭНТНЫЙ ГЕНЕРАТОР}

procedure Tform1.Generator;

begin

y:=(31*y+17)mod(257);

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

close

end;

{нажатие кнопки 'принять'}

procedure TForm1.Button1Click(Sender: TObject);

begin


if (EditID.Text='admin')and(EditPSW.Text='password')

then Form2.Visible:=true

else {если не администратор}

begin

Ident:=EditId.Text;

Psword:=EditPSW.Text;

i:=1;

repeat

if i>length(Ident) then Ident:=Ident+' ';

if i>length(Psword) then Psword:=Psword+' ';

i:=i+1;

until i>=11;

{запись в журнал аудита}

{$I-}

AssignFile(F_Mag,'audit');

Reset(F_Mag);

{$I+}

if IOResult<>0 then begin Rewrite(F_Mag); y:=Yo end

else begin

if FileSize(F_Mag)=0 then y:=Yo

else begin

y:=yo;

f:=20*round(FileSize(F_Mag)/30);

i:=1;

repeat

generator;

i:=i+1

until i>=f+1;

end;

end;

Seek(F_Mag,FileSize(F_Mag));

i:=1;

repeat

generator;

xxx:=Chr((ord(Ident[i]))xor(y));

Write(F_Mag,xxx);

i:=i+1;

until i>=11;

i:=1;

repeat

generator;

xxx:=Chr((ord(PSWord[i]))xor(y));

Write(F_Mag,xxx);

i:=i+1;

until i>=11;

{чтение информации из файла}

Y:=14;

AssignFile(F_PSW,'password.txt');

Reset(F_PSW);

{фамилии}

j:=1;

repeat

Read(F_PSW,Surname[j]);

j:=j+1

until j>=151;

{идентификаторы}

j:=1;

repeat

Read(F_PSW,IDs[j]);

generator;

ids[j]:=chr((ord(ids[j]))xor(y));

j:=j+1

until j>=101;

{пароли}

j:=1;

repeat

Read(F_PSW,PSWs[j]);

generator;

PSWs[j]:=chr((ord(PSWs[j]))xor(y));

j:=j+1

until j>=101;

CloseFile(F_PSW);

{сбор в массив UserMatrix}

i:=1;

repeat

stroca:='';

j:=1;

repeat

if Surname[(i-1)*15+j]<>' ' then stroca:=stroca+Surname[(i-1)*15+j];

j:=j+1

until j>=16;

UserMatrix[i,1]:=stroca;

i:=i+1

until i>=11;

i:=1;

repeat

stroca:='';

j:=1;

repeat

if IDs[(i-1)*10+j]<>' ' then stroca:=stroca+IDs[(i-1)*10+j];

j:=j+1

until j>=11;

UserMatrix[i,2]:=stroca;

i:=i+1

until i>=11;

i:=1;

repeat

stroca:='';

j:=1;

repeat

if PSWs[(i-1)*10+j]<>' ' then stroca:=stroca+PSWs[(i-1)*10+j];

j:=j+1

until j>=11;

UserMatrix[i,3]:=stroca;

i:=i+1

until i>=11;

{идентификация и аутентификация}

flag:=0;

i:=1;

repeat

if (EditID.Text=UserMatrix[i,2])and(EditPSW.Text=UserMatrix[i,3])and

(EditID.Text<>'') then begin

Flag:=1;

i1:=i end;

i:=i+1

until i>=11;

if flag=1 then begin

xxx:='y';

i:=1;

repeat

Write(F_Mag,xxx);

i:=i+1

until i>=11;

CloseFile(F_Mag);

Form3.Visible:=true;

end

else

begin

xxx:='n';

i:=1;

repeat

Write(F_Mag,xxx);

i:=i+1

until i>=11;

CloseFile(F_Mag)

end;

end;

end;

end.


unit Unitkurs;{администрирование}

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls, Grids, ComCtrls;

type

TForm2 = class(TForm)

ButtonAdd: TButton;

ButtonDel: TButton;

Button3: TButton;

Button1: TButton;

StringGrid1: TStringGrid;

procedure FormActivate(Sender: TObject);

procedure ButtonAddClick(Sender: TObject);

procedure ButtonDelClick(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

procedure Generator;

end;

var

Form2: TForm2;

F_PSW:file of char;{переменная, связанная с файлом 'password.txt'}

i,j,l:integer;

y:integer;{псевдослучайное число}

UserMatrix:array[1..10,1..3] of string;{массив фамилий, идентификаторов и паролей пользователей}

Surname:array[1..150] of char;{массив фамилий пользователей}

IDs:array[1..100] of char;{массив идентификаторов пользователей}

PSWs:array[1..100] of char;{массив паролей пользователей}

stroca:string;

implementation

uses Unitkurs4;

{$R *.DFM}

{процедура реализующая ЛИНЕЙНЫЙ КОНГУЭНТНЫЙ ГЕНЕРАТОР}

procedure Tform2.Generator;

begin

y:=(31*y+17)mod(257);

end;

procedure TForm2.FormActivate(Sender: TObject);

begin

y:=14;

{оглавление таблицы пользователей}

i:=1;

repeat

StringGrid1.Cells[0,i]:=IntToStr(i);

i:=i+1;

until i>=11;

StringGrid1.Cells[1,0]:='фамилия';

StringGrid1.Cells[2,0]:='идентификатор';

StringGrid1.Cells[3,0]:='пароль';

{чтение информации из файла 'password.txt'}

AssignFile(F_PSW,'password.txt');

Reset(F_PSW);

{фамилии}

j:=1;

repeat

Read(F_PSW,Surname[j]);

j:=j+1

until j>=151;

{идентификаторы}

j:=1;

repeat

Read(F_PSW,IDs[j]);

generator;

ids[j]:=chr((ord(ids[j]))xor(y));

j:=j+1

until j>=101;

{пароли}

j:=1;

repeat

Read(F_PSW,PSWs[j]);

generator;

PSWs[j]:=chr((ord(PSWs[j]))xor(y));

j:=j+1

until j>=101;

CloseFile(F_PSW);

{сбор в массив UserMatrix}

i:=1;

repeat

stroca:='';

j:=1;

repeat

if Surname[(i-1)*15+j]<>' ' then stroca:=stroca+Surname[(i-1)*15+j];

j:=j+1

until j>=16;

UserMatrix[i,1]:=stroca;

i:=i+1

until i>=11;

i:=1;

repeat

stroca:='';

j:=1;

repeat

if IDs[(i-1)*10+j]<>' ' then stroca:=stroca+IDs[(i-1)*10+j];

j:=j+1

until j>=11;

UserMatrix[i,2]:=stroca;

i:=i+1

until i>=11;

i:=1;

repeat

stroca:='';

j:=1;

repeat

if PSWs[(i-1)*10+j]<>' ' then stroca:=stroca+PSWs[(i-1)*10+j];

j:=j+1

until j>=11;

UserMatrix[i,3]:=stroca;

i:=i+1

until i>=11;

{отображение в таблице}

i:=1;

repeat

j:=1;

repeat

StringGrid1.Cells[j,i]:=UserMatrix[i,j];

j:=j+1

until j>=4;

i:=i+1

until i>=11;

end;

{===============нажатие кнопки 'сохранить изменения'=======================}

procedure TForm2.ButtonAddClick(Sender: TObject);

begin

y:=14;

{заполнение массива UserMatrix}

i:=1;

repeat

j:=1;

repeat

UserMatrix[i,j]:=StringGrid1.Cells[j,i];

j:=j+1

until j>=4;

i:=i+1

until i>=11;

{заполнение массива surname}

i:=1;

repeat

stroca:=UserMatrix[i,1];

l:=length(stroca);

j:=1;

repeat

if j<=l then Surname[(i-1)*15+j]:=stroca[j]

else Surname[(i-1)*15+j]:=' ';

j:=j+1

until j>=16;

i:=i+1

until i>=11;

{заполнение массива IDs}

i:=1;

repeat

stroca:=UserMatrix[i,2];

l:=length(stroca);

j:=1;

repeat

if j<=l then IDs[(i-1)*10+j]:=stroca[j]

else IDs[(i-1)*10+j]:=' ';

j:=j+1

until j>=11;

i:=i+1

until i>=11;

{заполнение массива PSWs}

i:=1;

repeat

stroca:=UserMatrix[i,3];

l:=length(stroca);

j:=1;

repeat

if j<=l then PSWs[(i-1)*10+j]:=stroca[j]

else PSWs[(i-1)*10+j]:=' ';

j:=j+1

until j>=11;

i:=i+1

until i>=11;

{запись в файл 'password.txt'}

AssignFile(F_PSW,'password.txt');

Rewrite(F_PSW);

{фамилии без преобразования}

j:=1;

repeat

write(F_PSW,Surname[j]);

j:=j+1

until j>=151;

{идентификаторы}

j:=1;

repeat

generator;

ids[j]:=chr((ord(ids[j]))xor(y));

write(F_PSW,IDs[j]);

j:=j+1

until j>=101;

{пароли}

j:=1;

repeat

generator;

PSWs[j]:=chr((ord(PSWs[j]))xor(y));

write(F_PSW,PSWs[j]);

j:=j+1

until j>=101;

CloseFile(F_PSW);

end;

{нажатие кнопки 'очистить'}

procedure TForm2.ButtonDelClick(Sender: TObject);

begin

{очистка таблицы}

i:=1;

repeat

j:=1;

repeat

StringGrid1.Cells[j,i]:='';

j:=j+1

until j>=4;

i:=i+1

until i>=11;

end;

procedure TForm2.Button3Click(Sender: TObject);

begin

close

end;

procedure TForm2.Button1Click(Sender: TObject);

begin

Form4.Visible:=True

end;

end.


unit Unitkurs4;{журнал аудита}

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls, Grids;

type

TForm4 = class(TForm)

StringGrid1: TStringGrid;

ButtonDel: TButton;

Button2: TButton;

ButtonShow: TButton;

procedure Button2Click(Sender: TObject);

procedure ButtonShowClick(Sender: TObject);

procedure ButtonDelClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

procedure Generator;

end;

var

Form4: TForm4;

F_Mag:file of char;{переменная, связанная с файлом 'audit.txt'}

i,j,l,i1:integer;

y:integer;{псевдослучайное число}

ident,psword:string;

xxx:char;

implementation

{$R *.DFM}

{процедура реализующая ЛИНЕЙНЫЙ КОНГУЭНТНЫЙ ГЕНЕРАТОР}

procedure Tform4.Generator;

begin

y:=(31*y+17)mod(257);

end;

procedure TForm4.Button2Click(Sender: TObject);

begin

close

end;

{нажатие кнопки 'показать'}

procedure TForm4.ButtonShowClick(Sender: TObject);

begin

i:=1;

repeat

StringGrid1.Cells[0,i]:=IntToStr(i);

i:=i+1;

until i>=11;

StringGrid1.Cells[1,0]:='идентификатор';

StringGrid1.Cells[2,0]:='пароль';

StringGrid1.Cells[3,0]:='результат';

{чтение информации из файла 'audit.txt'}

{$I-}

AssignFile(F_Mag,'audit');

Reset(F_Mag);

{$I+}

if IOResult=0 then begin

i1:=1;

y:=14;

while not(EoF(F_Mag)) do

begin

j:=1;

repeat

Read(F_Mag,xxx);

generator;

xxx:=chr((ord(xxx))xor(y));

ident:=ident+xxx;

j:=j+1

until j>=11;

i:=1;

repeat

Read(F_Mag,xxx);

generator;

xxx:=Chr((ord(xxx))xor(y));

psword:=psword+xxx;

i:=i+1;

until i>=11;

if StringGrid1.RowCount

then StringGrid1.RowCount:=StringGrid1.RowCount+1;

StringGrid1.Cells[0,i1]:=IntToStr(i1);

StringGrid1.Cells[1,i1]:=ident;

StringGrid1.Cells[2,i1]:=psword;

i:=1;

repeat

Read(F_Mag,xxx);

i:=i+1

until i>=11;

if xxx='y' then StringGrid1.Cells[3,i1]:='допуск'

else StringGrid1.Cells[3,i1]:='отказ';

ident:='';

psword:='';

i1:=i1+1;

end;

CloseFile(F_Mag) end;

end;

{нажатие кнопки 'очистить'}

procedure TForm4.ButtonDelClick(Sender: TObject);

begin

StringGrid1.RowCount:=11;

i:=1;

repeat

StringGrid1.Cells[1,i]:='';

StringGrid1.Cells[2,i]:='';

StringGrid1.Cells[3,i]:='';

i:=i+1

until i>=11;

AssignFile(F_Mag,'audit');

Rewrite(F_Mag);

CloseFile(F_Mag);

end;


end.


Литература:

  1. Белкин П.Ю. , Михальский О.О. , Першаков А.С. и другие “Программно-аппаратные средства обеспечения информационной безопасности: защита программ и данных”.

  2. Зима В.М. и другие “Защита компьютерных ресурсов от несанкционированных действий пользователя”.

  3. Романец Ю.В. , Тимофеев П.А. , Шаньгин В.Ф. “Защита информации в компьютерных системах”.




Министерство образования рф

ТАГАНРОГСКИЙ ГОСУДАРСТВЕННЫЙ РАДИОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ


КАФЕДРА БИТ


Курсовой проект


По курсу «ПАСОИБ»


на тему «Обнаружение вредоносных закладок»


Выполнил:

__________

__________


Проверили:

_________________________________

_________________________________



Таганрог 2002г.

ОТКРЫТЬ САМ ДОКУМЕНТ В НОВОМ ОКНЕ

ДОБАВИТЬ КОММЕНТАРИЙ [можно без регистрации]

Ваше имя:

Комментарий