Реферат по предмету "Информатика, программирование"


Разработка программы, генерирующей пароли пользователей

Федеральноеагентство по образованию
Пензенскийгосударственный университет
Кафедра«Информационная безопасность систем и технологий»
Пояснительнаязаписка к курсовой работе
по теме:
«Разработкапрограммы, генерирующей пароли пользователей»
Дисциплина:Теоретические основы
компьютернойбезопасности
Группа:                 .
Выполнил:
Проект принятс оценкой:
Руководительпроекта:                    .
 
Пенза, 2006г.

Реферат
Пояснительнаязаписка содержит 32 с., 2 рис., 4 источника, 4 прил.
MICROSOFT VISUAL С++, ПРОГРАММА, ПАРОЛЬНАЯ СИСТЕМА, КОЛИЧЕСТВЕННАЯОЦЕНКА СТОЙКОСТИ ПАРОЛЯ.
Объектом исследования являетсяпарольные системы.
Целью работы является разработкапрограммы, генерирующей пароли пользователей с учётом количественной оценкистойкости пароля.
В процессе работы была произведенаколичественная оценка стойкости паролей пользователей и в соответствии сполученной оценкой была разработана программа, генерирующая паролипользователей.
В результате работы была разработанапрограмма, генерирующаяпароли пользователей (её текст приведён вприложении).

Содержание
Реферат
Задание
Введение
1. Количественная оценка стойкости пароля
2. Интерфейс
2.1 Понятие интерфейса и его назначение
2.2. Выбор интерфейса
3. Разработка алгоритма программы
4.Создание программы на базе разработанного алгоритма
5. Экспериментальная проверка количественных оценокстойкости пароля
6. Руководство пользователя
Заключение
Списокиспользованных источников
ПРИЛОЖЕНИЕА. Алгоритм программы
ПРИЛОЖЕНИЕБ. Текст программы
ПРИЛОЖЕНИЕВ. Random.cpp
ПРИЛОЖЕНИЕГ. PassGenDlg.cpp

Введение
Проблему компьютерной безопасностинадуманной не назовешь. Практика показывает: чем более ценная информациядоверяется компьютерам, тем больше находится желающих нарушить ее нормальноефункционирование ради материальной выгоды или просто из праздного любопытства.Идет постоянная виртуальная война, в ходе которой организованности системныхадминистраторов противостоит изобретательность компьютерных взломщиков.
Основным защитным рубежом противзлонамеренных атак является система парольной защиты, которая имеется во всехсовременных программных продуктах. В соответствии с установившейся практикой,перед началом сеанса работы с операционной системой пользователь обязанзарегистрироваться, сообщив ей свое имя и пароль. Имя требуется дляидентификации пользователя, а пароль служит подтверждением правильностипроизведенной идентификации. Информация, введенная пользователем в диалоговомрежиме, сравнивается с той, что имеется в распоряжении операционной системы.Если проверка дает положительный результат, то пользователю становятся доступнывсе ресурсы операционной системы, связанные с его именем.
Несанкционированный доступ (Н.С.Д.) кинформации — доступ к информации, нарушающий установленное правилоразграничения доступа и осуществляемый с использованием нештатных средств, предоставляемыхавтоматизированной системой.
Выделяют 2 типа методов защиты отН.С.Д.:
1)   организационныемеры — определяются документально.
2)   Технические меры- группа методов, которые реализуются программными, аппаратными и программно — аппаратными средствами.
Существуют 3 группы методоваутентификации, которые основаны на обладании некоторого свойства или объекта
1)   обладаниеопределённым объектом;
2)   основано назнании информации известной пользователю и проверяющей стороне;
3)   основано на том, чтоу каждого пользователя есть уникальные биометрические характеристики.
Общие подходы к построению парольныхсистем.
Способы:
1.   с использованиемхранимой копии пароля;
2.   некотороепроверочное значение;
3.   парольная системабез непосредственной передачи информации, о пароле проверяющей стороне;
4.   использованиепароля для получения криптографического ключа.
Идентификатор пользователя — некоторая уникальная информация, позволяющая различать индивидуальныхпользователей парольной системы. Часто идентификатор пользователя называют именемпользователя. Пароль — некоторая секретная информация, которая известна толькопользователю и парольной системе, которая предъявляется для прохожденияпроцедуры идентификации.
Учётная запись пользователя — совокупность его идентификатора и пароля. База данных пользователей парольнойсистемы содержит учётные записи пользователей парольной системы. Под парольнойсистемой понимается программно-аппаратный комплекс, реализующий идентификацию иаутен-тификацию пользователей автоматизированной системы на основе одноразовыхи многоразовых паролей.
Угрозы для парольной системы.
1.   разглашениепараметров учётной записи
а) подбор пароля;
б) визуальное наблюдение;
в) перехват пароля в сети.
2. вмешательство в функционированиепарольной системы
а) использование программныхзакладок;
б) выведение из строя парольнойсистемы;
в) использование ошибок и недоработокв парольной системе.
Выбор паролей
Требования к выбору паролей:требования к выбору пароля достигнутый результат ограничение минимальной длины
1 усложняется подбор методом прямого перебора
2 усложняется подсматривание Использование различных групп символов усложняется подбор методом прямого перебора проверка и отбраковка по словарю затруднение подбора пароля по словарю установление срока действия пароля усложняется подбор методом прямого перебора и подстановки старого ведение журнала историй пароля повышается эффективность предыдущего ограничение количества попыток ввода препятствует подбору пароля поддержка режима принудительной смены пароля увеличение эффекта выполнения требования касающегося смены пароля принцип смена пароля после 1-ой регистрации защита от злоумышленных действий администратора запрет на выбор пароля самим пользователем защита от выбора пользователем лёгкого пароля Задержка при вводе неправильного пароля затрудняется подбор пароля когда он вводится с клавиатуры непосредственно за компьютером

1.Количественная оценка стойкости пароляПараметр Способ определения
“А”-мощность алфавита паролей
L-длина пароля
могут применяется для обеспечения требуемого значения S=AL “S”-мощность пространства паролей определяется на основе заданных значений P,T,V “V”-скорость подбора паролей скорость обработки 1-ой попытки регистрации “T”- срок действия пароля определяется из параметра Р. “P”- вероятность подбора пароля в течение срока его действия (подбор идёт неправильно в течение всего времени) выбирается заранее
Произведём количественную оценкупароля при заданных параметрах:
-вероятность подбора пароля Р-10-4;
-период действия пароля Т, минут-30;
-длина пароля L, 6 символов;
-мощность алфавита паролей А –прописные и строчные латинские буквы и цифры от 0 до 9 т.е. 62 символов;
Необходимо найти скорость подборапароля.
Для нахождения скорости подборапароля воспользуемся формулой P=V*T/S, причем мощностьпароля равна S=AL. Период действия выразим в секундах(Т=30 мин.* 60 сек. =1800 сек.). Таким образом получаем V=P*AL/T. Подставив значения получили V= 10-4*626/1800=3155пар./сек.
Подсчитав, мы получили величинускорости подбора пароля равную 3155 пар./сек.

2.Интерфейс
 
2.1Понятие интерфейса и его назначение
Перед началом самого программированияи даже составления алгоритмов необходимо представить себе как будет работатьпрограмма и посредством этого выбрать интерфейс.
Под интерфейсом понимают совокупностьсхемотехнических средств и правил, обеспечивающих непосредственноевзаимодействие составных элементов вычислительной системы и или программ.Интерфейс обеспечивает взаимосвязь между функциональными блоками илиустройствами системы.
Основным назначением интерфейсаявляется унификация внутрисистемных и межсистемных связей и устройствсопряжения с целью эффективной реализации прогрессивных методов проектированияфункциональных элементов вычислительной системы.
Системный подход при проектированиипредставляет собой комплексное, взаимосвязанное, пропорциональное рассмотрениевсех факторов, путей и методов решения сложной многофакторной и многовариантнойзадачи проектирования интерфейса взаимодействия. В отличие от классическогоинженерно- технического проектирования при использовании системного подходаучитываются все факторы проектируемой системы — функциональные,психологические, социальные и даже эстетические.
Автоматизация управления неизбежновлечёт за собой осуществление системного подхода, т.к. она предполагает наличиесаморегулирующейся системы, обладающей входами, выходами и механизмомуправления. Уже само понятие системы взаимодействия указывает на необходимостьрассмотрения окружающей среды, в которой она должна функционировать.
Таким образом, система взаимодействиядолжна рассматриваться как часть более обширной системы — АСУ реальноговремени, тогда как последняя — системы управляемой среды.
В настоящее время можно считатьдоказанным, что главная задача проектирования интерфейса пользователязаключается не в том, чтобы рационально «вписать» человека в контуруправления, а в том, чтобы, исходя из задач управления объектом, разработатьсистему взаимодействия двух равноправных партнёров (человек- оператор иаппаратно- программный комплекс АСУ), рационально управляющих объектомуправления.
 
2.2 Выборинтерфейса
Интерфейс взаимодействия спользователем является важным элементом любой программы. От его продуманности иудобства часто зависит коммерческий успех программного продукта.
Интерфейс пользователя можноразделить на пакетный и интерактивные. Пакетные характеризуются тем, чтопользователь должен сформировать пакет с заданиями, затем программа эти заданиявыполняет и выдаёт результат. Интерактивные характеризуются тем, чтопользователь в ходе работы программы постоянно с ней взаимодействует.Существует интерфейс на базе меню, псевдографический интерфейс, интерактивно-командный интерфейс, эти интерфейсы описывать не будем, так как программа,которую необходимо создать по заданию требует графический интерфейс.Графический интерфейс следует выбирать только для многомодульных программ,которые, предположительно будут иметь массовое применение. В соответствии сзаданием и для большего удобства и понятия принципа работы программы интерфейсдолжен содержать наименьшее количество кнопок. Вследствие чего выберем: 1 поле,в котором будем генерировать сам код, одну кнопку после нажатия, которой будетпроисходить генерация, и кнопку выход.
Интерфейс приведен на рисунке 1.

3.Разработка алгоритма программы
В данном разделе проводитсяразработка алгоритма работы программы, генерирующей пароли пользователей.
Прежде чем начать разработку, вводимнесколько ограничений:
— программа должна исключать подбор пароляпо словарю;
— программа должна обеспечивать взаимодействиес пользователем посредством графического интерфейса;
— процесс выполнения генерациипаролей должен быть реализован в интегрированной среде разработки Microsoft Visual C++ v. 6.0.
— символы не должны повторяться.
После запуска программы и нажатия наклавишу “Генерировать код” должен генерироваться случайно первый символ иззаранее созданного массива символов PassAlfavit[], после чего данный символ записывается в другой массив passwrd[]. Далее генерируется второй ипроисходит проверка, не повторяются ли символы. Если выполняется данноеусловие, то происходит удаление последнего символа, если же нет, то происходитзапись в массив passwrd[] соследующим символом.
Затем происходит проверка, недостигнута ли длина пароля, обеспечивающая его стойкость при заданныхпараметрах, в соответствии с заданием длина пароля будет равна 6 символам.После чего происходит присоединение символов в одно слово и происходит проверкана наличие сгенерированного пароля в словаре английских слов и аббревиатур,если данный пароль существует в словаре, то происходит его удаление и генерацияначинается сначала.
После завершения генерации пароля ондолжен быть выдан в специальном поле.
Структурная схема алгоритмапрограммы, генерирующей пароли пользователей, приведена в приложении А.

4.Создание программы на базе разработанного алгоритма
В данном разделе приводится описаниетекста программы выполняющей генерацию паролей пользователей. Данная программареализована на языке программирования С++ при помощи интегрированной среды обработкиVisual С++.
Поскольку архитектураWindows-программ основана на принципе сообщений, все эти программы содержатнекоторые общие компоненты. Обычно их приходится в явном виде включать висходный код. Но, к счастью, при использовании библиотеки MFC это происходитавтоматически; нет необходимости тратить время и усилия на их написание.Создание диалогового приложения с использованием AppWizard
Работа с элементами управления
Для начала необходимо создать поле, вкотором будет выводиться сгенерированный код. Для этого в рабочую областьперетаскивается элемент Edit Box (Текстовое поле). Затем регулируются ееразмеры и положение.
Так же необходимо создать клавишупосле, которой будет происходить генерация кода, для этого перетащим из панелиинструментов элемент с названием Button.
Откроем диалоговое окно EditProperties. В тестовое поле раскрывающего списка ID: (Идентификатор ресурса)вместо идентификатора IDC_EDIT1 введём идентификатор IDGEN, а в поле caption введём слово Generirowanie.
Клавишу Cancel которую создал MFC AppWizard оставим без изменений ноукажем новое местоположение.
На этом этап формирования диалоговогоокна можно считать законченным. Дело в том, что одновременно с производимыминами действиями программная оболочка Visual C++ фиксировала все вносимыеизменения в файлах PassGen.rc иresource.h.
Создание класса диалога
Приступим к созданию класса диалога.Очень большую долю работы по созданию этого класса уже выполнил мастерAppWizard, а еще некоторую часть работы возьмет на себя мастер ClassWizard.
Оболочка Visual C++ сама создаст Password.cpp и Random.cpp. Далее необходимо будет заменитьданные файлы, на файлы, приведённые в приложении Б и В соответственно.
Далее остаётся только сохранить иоткомпилировать данную программу.
На этом создание программы на языкеС++ закончилось.

5.Экспериментальная проверка количественных оценок
Данную экспериментальную проверкубудем осуществлять, изменяя скорость подбора паролей, и фиксировать время, закоторое не будет скомпрометирован пароль, при этом значения P и S изменяться не будут.
— вероятность подбора пароля P=10-3;
— мощность пространства паролейS=1,6*1012
Время, за которое данный пароль небудет скомпрометирован, вычисляется по следующей формуле: T=(P * S) / V
1 Скорость подбора пароля V, паролей/сек-1*105;
T=(10-3*1.6*1012)/ 105 = 1600 секунд => 4.44 часа
2 Скорость подбора пароля V, паролей/сек-2*105;
T=(10-3*1.6*1012)/ 2*105 = 8000 секунд => 2.22 часа
3 Скорость подбора пароля V, паролей/сек-2,5*105;
T=(10-3*1.6*1012)/ 2,5*105 = 6400 секунд => 1.77 часа
4 Скорость подбора пароля V, паролей/сек-3*105;
T=(10-3*1.6*1012)/ 3*105 = 5333 секунд => 1.48 часа
При увеличении скорости подборапаролей в два раза время, затраченное на подбор, уменьшается также в два раза.
Для того, что бы точноскомпрометировать пароль за три часа, необходима скорость подбора паролей V=1.5*108 паролей /сек. Времявзлома также уменьшается от вида атаки и от степени осведомлённостизлоумышленника. Так простейшая программа для взлома паролей архиватора RAR “Advanced RAR Password Recovery” предусматривает 3 типа атаки:
— перебор
— по маске
— по словарю
Сократить время взлома также можно,указав предполагаемую длину или установив её рамки, так же можно указать языкили набор символов, из которых предположительно состоит пароль.

6.Руководство пользователя
Для начала работы с программойнеобходимо запустить файл с названием PassGen. После запуска появится окно. Для генерации паролянеобходимо нажать на клавишу “GENERIROVANIE”. После чего в окошке появится сгенеррированный пароль. Далее необходимозапомнить пароль и использовать по назначению. При повторном нажатии на клавишупароль будет сгенерирован вновь. Для выхода из программы необходимо нажать наклавишу “Выход” или нажав на “крестик”.

Заключение
В процессе выполнения курсовогопроекта была разработана программа, генерирующая пароли пользователей.Программа была написана при помощи интегрированной среды разработки Visual C++. Программа соответствует всем функциональным требованиям,заданным на курсовое проектирование. Взаимодействие с пользователемосуществляется с помощью графического интерфейса.
Таким образом, задание на курсовоепроектирование было полностью выполнено.

Списокиспользованных источников
 
1http://www.diwaxx.ru/hak/index.php
2 www.passwords.ru
3 Келецкий Я.Энциклопедия языка Си/ Пер. с англ.- М.: Мир, 1992. -687с.
4 КерниганБ., Ричи Д., Фьюер А. Язык программирования Си. Задачи по языку С/ Пер. с англ.-М.: Финансы и статистика, 1985.-279с.

ПРИЛОЖЕНИЕА
Алгоритм программы
/>

Случайное генерирование 1-го символа из массива PassAlfavit[]   -----------[с листа2
/>

/>/>/>--------------[на лист 2
Рисунок А.1. Алгоритм программы

/>---------------------------------------[слиста 1/> /> /> /> /> /> /> /> />

Присоединение символов   ------[на лист 1
/>

Рисунок А.1. Лист №2

ПРИЛОЖЕНИЕБ
Текст программы
// Password.cpp:implementation of the Password class.
//////////////////////////////////////////////////////////////////////
#include
#include«stdafx.h»
#include«PassGen.h»
#include«Password.h»
#include«Random.h»
#ifdef _DEBUG
#undef THIS_FILE
static charTHIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
//Construction/Destruction
//////////////////////////////////////////////////////////////////////
Password::Password(int l)
{length = l;
passwrd = new char[length+1];
dicstr = new char[length+1];
PassAlfavit = new char[36];
HowMuchn = new int[length];
dicstr[length]='\0';
ValueOfDictionary=134547;}
Password::~Password()
{delete(passwrd);
delete(dicstr);
delete(PassAlfavit);
delete(HowMuchn);}
void Password::GenAlfavit()
{char symbol='A';
for (intindex=0;index
{if (index==26)
symbol='0';
PassAlfavit[index]=symbol;
symbol++;}}
char *Password::GetPassword()
{return passwrd;}
void Password::GenPass()
{Random rnd1;
for (int index=0;index
passwrd[index]=PassAlfavit[rnd1.NextR(35)];
passwrd[index]='\0';}
BOOL Password::TestChar()
{ClearMass(length,HowMuchn);
for (intindex1=0;index1
for (intindex2=0;index2
if(passwrd[index1]==passwrd[index2])
HowMuchn[index1]++;
if(HowMuch(length,HowMuchn))
return TRUE;
else return FALSE;}
voidPassword::ClearMass(int length,int * mass)
{for (int index=0;index
mass[index]=0;}
BOOL Password::HowMuch(intlength, int *HowMuch)
{for (int index =0;index
if (HowMuch[index]>1)
return FALSE;
return TRUE;}
BOOLPassword::TestDictionary()
{CFile Dictionary;
Try
{Dictionary.Open(«length08.txt»,CFile.modeRead,NULL);}
catch(CFileException *e )
{Dictionary.Abort(); //close file safely and quietly
e->~CFileException();
MessageBox(0,«Не удается открытьсловарь», «ошибка»,MB_APPLMODAL|MB_OK|MB_ICONSTOP);
return FALSE;}
for (int index=0;index
{Dictionary.Read(dicstr,8);
Dictionary.Seek(2,CFile.current);
if (Compare(length))
return FALSE;}
Dictionary.Close();
return TRUE;}
int Password::Compare(intlength)
{for (intindex=0;index
if(passwrd[index]!=dicstr[index])
return 0;
return 1;}

ПРИЛОЖЕНИЕВ
Random.cpp
// Random.cpp:implementation of the Random class.
//////////////////////////////////////////////////////////////////////
#include
#include
#include
#include«stdafx.h»
#include«PassGen.h»
#include«Random.h»
#ifdef _DEBUG
#undef THIS_FILE
static charTHIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
//Construction/Destruction
//////////////////////////////////////////////////////////////////////
Random::Random()
{srand(GetTickCount());}
Random::~Random()
{}
int Random::NextR(int x)
{int rnd1;
rnd1=rand();
srand(rnd1);
rnd1=rand() % x;
return rnd1;}

ПРИЛОЖЕНИЕГ
PassGenDlg.cpp
// PassGenDlg.cpp: implementationfile
#include«stdafx.h»
#include «PassGen.h»
#include«PassGenDlg.h»
#include«Password.h»
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] =__FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CPassGenDlg dialog
CPassGenDlg::CPassGenDlg(CWnd*pParent /*=NULL*/)
:CDialog(CPassGenDlg::IDD, pParent)
{//{{AFX_DATA_INIT(CPassGenDlg)
// NOTE: the ClassWizardwill add member initialization here
//}}AFX_DATA_INIT
// Note that LoadIcon doesnot require a subsequent DestroyIcon in Win32
m_hIcon =AfxGetApp()->LoadIcon(IDR_MAINFRAME);}
voidCPassGenDlg::DoDataExchange(CDataExchange* pDX)
{CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CPassGenDlg)
// NOTE: the ClassWizardwill add DDX and DDV calls here
//}}AFX_DATA_MAP}
BEGIN_MESSAGE_MAP(CPassGenDlg,CDialog)
//{{AFX_MSG_MAP(CPassGenDlg)
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDGEN,OnGen)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CPassGenDlg messagehandlers
BOOLCPassGenDlg::OnInitDialog()
{CDialog::OnInitDialog();
// Set the icon for thisdialog. The framework does this automatically
// when the application'smain window is not a dialog
SetIcon(m_hIcon, TRUE);                          //Set big icon
SetIcon(m_hIcon, FALSE);               //Set small icon
// TODO: Add extrainitialization here
return TRUE; // returnTRUE unless you set the focus to a control}
// If you add a minimizebutton to your dialog, you will need the code below
// to draw the icon. ForMFC applications using the document/view model,
// this is automaticallydone for you by the framework.
voidCPassGenDlg::OnPaint()
{if (IsIconic())
{CPaintDC dc(this); //device context for painting
SendMessage(WM_ICONERASEBKGND,(WPARAM) dc.GetSafeHdc(), 0);
// Center icon in clientrectangle
int cxIcon =GetSystemMetrics(SM_CXICON);
int cyIcon =GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() — cxIcon + 1) / 2;
int y = (rect.Height() — cyIcon + 1) / 2;
// Draw the icon
dc.DrawIcon(x, y,m_hIcon);}
else
{CDialog::OnPaint();}}
// The system calls thisto obtain the cursor to display while the user drags
// the minimized window.
HCURSORCPassGenDlg::OnQueryDragIcon()
{return (HCURSOR)m_hIcon;}
void CPassGenDlg::OnGen()
{Password ps (8) ;
ps.GenAlfavit();
do
{ps.GenPass();
if (!ps.TestChar())
continue;
else
if (ps.TestDictionary())
break;
else
continue;}
while (TRUE);
SetDlgItemText(IDC_EDIT1,ps.GetPassword());}


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

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем реферат самостоятельно:
! Как писать рефераты
Практические рекомендации по написанию студенческих рефератов.
! План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом.
! Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач.
! Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты.
! Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ.

Читайте также:
Виды рефератов Какими бывают рефераты по своему назначению и структуре.