СОДЕРЖАНИЕ
Введение………………………………………………………………………………..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(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=Е(kn,Кn) |
Алгоритмдоступа
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)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. Литература: Белкин П.Ю. ,МихальскийО.О. , ПершаковА.С. и другие“Программно-аппаратныесредства обеспеченияинформационнойбезопасности:защита программи данных”. Зима В.М. и другие“Защита компьютерныхресурсов отнесанкционированныхдействийпользователя”. Романец Ю.В. ,Тимофеев П.А., Шаньгин В.Ф.“Защита информациив компьютерныхсистемах”. Министерствообразованиярф ТАГАНРОГСКИЙГОСУДАРСТВЕННЫЙРАДИОТЕХНИЧЕСКИЙУНИВЕРСИТЕТ Курсовойпроект По курсу«ПАСОИБ» на тему«Обнаружениевредоносныхзакладок» __________ Проверили: _________________________________ _________________________________ Таганрог2002г.
КАФЕДРАБИТ
Выполнил:
__________