Моделирование механизмов защиты компьютерной системы, страница 4

                            УчетКоличестваВходов(key);

                            this.Hide();

                            break;

                        }

                        else

                        {

                            Форма_входа_пользователя форма_входа_пользователя = new Форма_входа_пользователя();

                            форма_входа_пользователя.Show();

                            УчетКоличестваВходов(key);

                            this.Hide();

                        }

                    }

                    else

                    {

                        MessageBox.Show("Не верный пароль! Повторите ввод", "Ошибка аутентификации!");

                        flag = false;

                        break;

                    }

                }

            }

            if (flag)

            {

                MessageBox.Show("Логин не найден! Повторите ввод", "Ошибка идентификации!");

            }

        }

Шифрование пароля

Формализация задачи

Для шифрования пароля использовать шифр Перестановки (матрица размерности 2 х 5, запись – по периметру, начиная с первого элемента, чтение – по периметру, начиная с последнего элемента).

Словесное описание

Запись пароля в матрицу в одном порядке и чтение в обратном порядке равносильно зеркальному отображению строки-пароля. Реализация шифрования пароля  за счет его «реверса» более рациональна, т.к. занимает оперативной памяти и процессорного времени.

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

Формализация входных и выходных данных

Входные данные:

·  pass – открытый пароль, вектор целых чисел длинной 10

Выходные данные:

·  crypt_pass –закрытый пароль, вектор целых чисел длинной 10

Определение математических и логических зависимостей

Для i = 1, 2, … 5, с шагом 1

               tmp = pass[i]

               pass[i] = pass[9-i]

               pass[9-i] = tmp

ctypt_pass = pass

Схема алгоритма

Код программы

static public string Шифрование(string pass)

        {

            char[] buf = new char[10];

            buf = pass.ToCharArray();

            Array.Reverse(buf);

            pass = "";

            foreach (char a in buf)

            {

                pass += a.ToString();

            }

            return pass;

        }

Редактирование аутентифицирующего объекта

Формализация задачи

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

Описание элементов интерфейса формы администратора

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

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

Добавление нового пользователя

Словесное описание

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

Формализация входных и выходных данных

Входные данные:

·  login – имя пользователя, строка

·  pass – открытый пароль, вектор целых чисел длинной 10

·  АутОбъект – аутентифицирующий объект

Выходные данные:

·  АутОбъект – аутентифицирующий объект

Определение математических и логических зависимостей

login = содержимое текстового поля «Логин»

pass = содержимое текстового поля «Пароль»

flag = true

Просмотр аутентифицирующего объекта на существование такого же имени пользователя

Если в системе уже есть пользователь с таким именем, тогда flag = false

Если flag = true, тогда

                              Добавление пользователя в аутентифицирующий объект

Иначе

 сообщение об ошибке