Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

OIB6

.docx
Скачиваний:
4
Добавлен:
01.04.2022
Размер:
370.8 Кб
Скачать

Федеральное агентство связи

Ордена Трудового Красного Знамени федеральное государственное

бюджетное учреждение высшего образования

«Московский технический университет связи и информатики»

Кафедра «Математической кибернетики и информационных технологий»

Лабораторная работа №6

“Количественная оценка стойкости парольной защиты”

Выполнили

Проверила:

Магомедова Д. И.

Москва, 2020 г.

Оглавление

1. Цель работы: 2

2. Ход работы: 2

4.Код программы 3

5.Результат работы программы 6

1. Цель работы:

Получение основных теоретических сведений и практических навыков по оценке стойкости парольной защиты.

2. Ход работы:

1. Ознакомиться с теоретической частью данной работы.

2. Реализовать простейший генератор паролей, обладающий требуемой стойкостью к взлому.

3. Составить отчет по проделанной работе.

4. Защитить работу.

3. Постановка задачи:

  1. Вычислить по формуле нижнюю границу S* для заданных P, V, T.

  2. Выбрать некоторый алфавит с мощностью A и получить минимальную длину пароля L, при котором выполняется условие (3)

  3. Реализовать программу-генератор паролей пользователей. Программа должна формировать случайную последовательность символов длины L, при этом должен использоваться алфавит из A символов.

Таблица 1 - Задание варианта №17 к лабораторной работе № 6.

Номер варианта

P

V

T

17

10^(-4)

10 паролей / мин.

3 недели

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

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {

A = 0;

double p=SomeProjectDLL::Class1::Vvod(textBox1);

double v= SomeProjectDLL::Class1::Vvod(textBox2);

double t= SomeProjectDLL::Class1::Vvod(textBox3);

double sZvezd = ceil((v*t)/p);

t = t * 7 * 24 * 60;

double s = (v * t) / p;

//char latUpperCase[] = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' };

string latUpperCase[] = { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" };

int countLat = 26;

int countRus = 33;

//char latLowerCase[] = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' };

string latLowerCase[] = { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z" };

//char rusLowerCase[] = { 'а', 'б', 'в', 'г', 'д', 'е', 'ё', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я' };

string rusLowerCase[] = { "а", "б", "в", "г", "д", "е", "ё", "ж", "з", "и", "й", "к", "л", "м", "н", "о", "п", "р", "с", "т", "у", "ф", "х", "ц", "ч", "ш", "щ", "ъ", "ы", "ь", "э", "ю", "я" };

//char rusUpperCase[] = { 'А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ё', 'Ж', 'З', 'И', 'Й', 'К', 'Л', 'М', 'Н', 'О', 'П', 'Р', 'С', 'Т', 'У', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Ъ', 'Ы', 'Ь', 'Э', 'Ю', 'Я' };

string rusUpperCase[] = { "А", "Б", "В", "Г", "Д", "Е", "Ё", "Ж", "З", "И", "Й", "К", "Л", "М", "Н", "О", "П", "Р", "С", "Т", "У", "Ф", "Х", "Ц", "Ч", "Ш", "Щ", "Ъ", "Ы", "Ь", "Э", "Ю", "Я" };

string cifr[] = { "0","1","2","3","4","5","6","7","8","9" };

int countCifr = 10;

string simvol[] = { "!","#","$","%","^","&","*" };

int countSimvl = 7;

if (checkBox1->Checked == true) {

A += countLat;

}

if (checkBox2->Checked == true) {

A += countLat;

}

if (checkBox3->Checked == true) {

A += countRus;

}

if (checkBox4->Checked == true) {

A += countRus;

}

if (checkBox5->Checked == true) {

A += countSimvl;

}

if (checkBox6->Checked == true) {

A += countCifr;

}

label9->Text = A.ToString();

label6->Text = sZvezd.ToString();

int L = log(sZvezd)/ log(A) ;

label10->Text = L.ToString();

string password = "";

int i = 0;

Random^ r = gcnew Random();

int buf;

while (i!=L)

{

if (checkBox1->Checked == true) {

if (i == L) {

break;

}

buf= r->Next(countLat);

password += latUpperCase[buf];

i++;

}

if (checkBox2->Checked == true) {

if (i == L) {

break;

}

buf = r->Next(countLat);

password += latLowerCase[buf];

i++;

}

if (checkBox3->Checked == true) {

if (i == L) {

break;

}

buf = r->Next(countRus);

password += rusLowerCase[buf];

i++;

}

if (checkBox4->Checked == true) {

if (i == L) {

break;

}

buf = r->Next(countRus);

password += rusUpperCase[buf];

i++;

}

if (checkBox5->Checked == true) {

if (i == L) {

break;

}

buf = r->Next(countSimvl);

password += simvol[buf];

i++;

}

if (checkBox6->Checked == true) {

if (i == L) {

break;

}

buf = r->Next(countCifr);

password += cifr[buf];

i++;

}

}

System::String^ myString = marshal_as<String^>(password);

textBox4->Text = myString;

}

private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) {

A = 0;

checkBox1->Checked = false;

checkBox2->Checked = false;

checkBox3->Checked = false;

checkBox4->Checked = false;

checkBox5->Checked = false;

checkBox6->Checked = false;

}

};

}

5.Результат работы программы

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

— вероятность подбора пароля злоумышленником;

— скорость перебора паролей;

— срок действия пароля;

— используемый алфавит.

Рисунок 1 – Результат работы программы

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

Соседние файлы в предмете Основы информационной безопасности