Смекни!
smekni.com

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

СОДЕРЖАНИЕ

Введение………………………………………………………………………………..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 секунды, aS= б символов,то ожидаемоевремя рас­крытияТ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=(Xmod100) * D+ WJ, где (Xmod100)-операциявзятия остаткаот целочисленногоделения Xна 100,D-текущий номердня недели, aW- текущий номернедели в теку­щеммесяце;

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

Паролямипользователядля последовательностиустановленныхпериодовдействия одногопароля будутсоответственно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= ()2- + .

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

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

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


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

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

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

На самомделе IDiможет соответствоватьразным пользователям,напримерноситель сенсорнойпамяти TouchMemoryсодержит 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(IDii),где F- функция, длякоторой можнокачест­венноописать свойство"невосстановимости"Kiпо Еiи IDi.

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

Кроме того,для пары Kiи Kjвозможно совпадениесоответствующихзначений Е. Всвязи с этимвводится вероятностьложной аутентификациипользователяРла,которая вычисляетсякак условнаявероятностьсобытия "совпадениеЕiи Ejпри условиинетождественностиК: и Kj".Эта вероят­ностьне должна бытьбольше некоторогопредельногозначения Р0.На практикезадают То =1020...10300= 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(k1j)


Y2


Y2=E(k2j)




Yn


Yn=Е(knn)


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

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

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

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)modm,

где 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) thenPsword:=Psword+' ';

i:=i+1;

until i>=11;

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

{$I-}

AssignFile(F_Mag,'audit');

Reset(F_Mag);

{$I+}

if IOResult0 then begin Rewrite(F_Mag); y:=Yoend

else begin

ifFileSize(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]' ' thenstroca:=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]' ' thenstroca:=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]' ' thenstroca:=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]' ' thenstroca:=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]' ' thenstroca:=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]' ' thenstroca:=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;

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

procedureTForm2.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

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

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

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' thenStringGrid1.Cells[3,i1]:='допуск'

elseStringGrid1.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г.