МЕНЮ


Фестивали и конкурсы
Семинары
Издания
О МОДНТ
Приглашения
Поздравляем

НАУЧНЫЕ РАБОТЫ


  • Инновационный менеджмент
  • Инвестиции
  • ИГП
  • Земельное право
  • Журналистика
  • Жилищное право
  • Радиоэлектроника
  • Психология
  • Программирование и комп-ры
  • Предпринимательство
  • Право
  • Политология
  • Полиграфия
  • Педагогика
  • Оккультизм и уфология
  • Начертательная геометрия
  • Бухучет управленчучет
  • Биология
  • Бизнес-план
  • Безопасность жизнедеятельности
  • Банковское дело
  • АХД экпред финансы предприятий
  • Аудит
  • Ветеринария
  • Валютные отношения
  • Бухгалтерский учет и аудит
  • Ботаника и сельское хозяйство
  • Биржевое дело
  • Банковское дело
  • Астрономия
  • Архитектура
  • Арбитражный процесс
  • Безопасность жизнедеятельности
  • Административное право
  • Авиация и космонавтика
  • Кулинария
  • Наука и техника
  • Криминология
  • Криминалистика
  • Косметология
  • Коммуникации и связь
  • Кибернетика
  • Исторические личности
  • Информатика
  • Инвестиции
  • по Зоология
  • Журналистика
  • Карта сайта
  • Обнаружение вредоносных закладок

    т.д., т.е. для 1-го периода действия одного пароля паролем пользователя

    будет F'"1(X). Поэтому для того, чтобы вычислить очередной пароль по

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

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

    парольного преобразования и пароль, используемый до настоящего момента

    времени.

    С целью достижения высокого уровня безопасности функция преобразования

    пароля, задаваемая для каждого пользователя, должна периодически меняться,

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

    новый исходный пароль.

    Согласно методу «рукопожатия» существует функция F, известная только

    пользователю и ВС. Данная функция должна удовлетворять тем же требованиям,

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

    преобразования.

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

    или случайная последовательность символов X и вычисляется функция F(X),

    заданная для данного пользователя (см. Рис. 1.2). Далее X выводится

    пользователю, который должен вычислить F(X) и ввести полученное значение в

    систему. Значения F(X) и F(X) сравниваются системой и если они совпадают,

    то пользователь получает доступ в ВС.

    [pic]

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

    Например, в ВС генерируется и выдается пользователю случайное число,

    состоящее из семи цифр. Для заблуждения злоумышленника в любое место числа

    может вставляться десятичная точка. В качестве функции F принимается Y =

    ()2 - + .

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

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

    функции для четных и нечетных чисел месяца.

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

    информации между пользователем и ВС не передается. По этой причине

    эффективность данного метода особенно велика при его применении а

    вычислительных сетях для подтверждения подлинности пользователей,

    пытающихся осуществить доступ к серверам или центральным ЭВМ.

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

    подлинность той ВС, к которой он хочет осуществить доступ. Необходимость во

    взаимной проверке может понадобиться и когда два пользователя ВС хотят

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

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

    подходящим здесь является метод «рукопожатия». При его использовании ни

    один из участников сеанса связи не будет получать никакой секретной

    информации.

    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=Е(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)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

    ЗАКЛЮЧЕНИЕ

    В курсовой работе были рассмотрены существующие процедуры опознавания

    и приведены типовые решения в организации ключевых систем. На основании

    рассмотренного материала можно сделать вывод о том, что:

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

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

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

    пароля и его не тривиальностью.

    На основании рассмотренных процедур была создана программа,

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

    приложению, работающему в операционной среде Windows.

    В приложении В представлен листинг исходного модуля программы. Так как

    программа носит ознакомительный характер, то запуск приложения имитируется

    вызовом сообщения, говорящего о том, что процедура установления подлинности

    пройдена успешно.

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

    [pic]

    [pic]

    [pic]

    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=16;

    i:=i+1

    until i>=11;

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

    i:=1;

    repeat

    stroca:=UserMatrix[i,2];

    l:=length(stroca);

    j:=1;

    repeat

    if j=11;

    i:=i+1

    until i>=11;

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

    i:=1;

    repeat

    stroca:=UserMatrix[i,3];

    l:=length(stroca);

    j:=1;

    repeat

    if 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=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. Романец Ю.В. , Тимофеев П.А. , Шаньгин В.Ф. “Защита информации в

    компьютерных системах”.

    -----------------------

    начало

    Ввод идентификатора и пароля

    администратор

    Вызов процедуры администрирования

    Чтение файла ‘password.txt’

    Проверка подлинности

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

    ( файл ‘audit’)

    Процедура

    Опознания пройдена

    Запуск приложения

    конец

    начало

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

    Файла ‘password.txt’

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

    Внесены

    изменения

    Сохранение

    изменений

    конец

    Страницы: 1, 2


    Приглашения

    09.12.2013 - 16.12.2013

    Международный конкурс хореографического искусства в рамках Международного фестиваля искусств «РОЖДЕСТВЕНСКАЯ АНДОРРА»

    09.12.2013 - 16.12.2013

    Международный конкурс хорового искусства в АНДОРРЕ «РОЖДЕСТВЕНСКАЯ АНДОРРА»




    Copyright © 2012 г.
    При использовании материалов - ссылка на сайт обязательна.