Розробка та дослідження засобів ідентифікації, аутентифікації і надання прав доступу до інформації на носіях

Розробка програмного макету підсистеми для ідентифікації і аутентифікації користувачів в системах обробки інформації з обмеженим по доступом заданої загальній структурі засобів захисту і індивідуальними параметрами відповідних алгоритмів. Функції модуля.

Рубрика Программирование, компьютеры и кибернетика
Вид контрольная работа
Язык украинский
Дата добавления 01.12.2016
Размер файла 202,6 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Розробка та дослідження засобів ідентифікації, аутентифікації і надання прав доступу до інформації на носіях

1. Функції модуля реєстрації, ідентифікації та аутентифікації

програмний алгоритм аутентифікація користувач

При запуску програми першим вікном буде вікно авторизації (Див. Рис. 1.1.). В цьому вікні є можливість перейти до форми реєстрації (Див. Рис. 1.2.), де користувач має змогу зареєструвати свій логін. По умовчанню новому зареєстрованому логіну надається права «R», що дозволяють користувачу користуватися усіма логічними дисками окрім системного, але лише в режимі «читання». По умовчанню програма реєструє користувача «admin», який має усі права і допуск до усіх локальних дисків.

При реєстрації данні про новий логін заносяться в файл Users.txt в основному каталозі програми.

Для реалізації можливості реєструвати користувача було створено клас Users, код якого є можливість подивитися в додатку.

Рис. 1.1. Вікно авторизації

Рис. 1.2. Вікно реєстрації

Перше вікно програми (Див. Рис. 1.1.) дозволяє користувачу авторизуватися шляхом проходження ідентифікації на основі одностороннього «Рукостискання» з використанням елементарних математичних функцій: запит комп'ютера - X, відповідь користувача - Y = F (X). Програма генерує випадкових два числа - «a» та «x», та розраховує правильну відповідь використовуючи функції log (a*x).

При загрузки першої форми, проводиться занесення даних користувачів з файлу в Users.txt в каталог програми, з якого в надалі буде виконуватися другий етап ідентифікації та авторизації методом порівняння логіну користувача і відповідному до нього паролю. Реєстрація користувача «admin» прописано в самому коді програми.

Запит до запису користувача в файлі Users.txt має шаблон у вигляді:

<Логін користувача>;<Пароль користувача> -<Права логіна>

У разі введення не вірних даних, на екрані з'явиться вікно з зробленою помилкою (Див. Рис. 1.3. та Рис. 1.4.) та згенерує нове питання.

Рис. 1.3. Помилка вводу не правильної відповіді на питання

Рис. 1.4. Помилка вводу не правильного паролю чи логіну

У разі введення правильних даних, відриється трете вікно програми (Див. Рис. 1.5.). В якому користувач має змогу передивитися усі доступні для нього локальні диски. За умовчанням лише адміністратор має допуск до системного диску та форми керування користувачами (Див. Рис. 1.6.), в якій він може змінити права користувача або видалити його. Якщо користувачу надати права адміністратора, «А», то він отримає доступ до системного диску, але вікно управління користувачами буде закрита для нього.

При виборі диску чи папки в формі програми, в неї загрузиться каталог доступних папок. Уразі двійного кліку по вибраному диску чи папці - програма відкриє його в звичайному «Проводнике».

Рис. 1.5. Вікно роботи з локальними дисками

Рис. 1.6. Вікно керування користувачами

2. Функції модуля кодування

Усім користувачам доступна форма шифрування (Див. Рис. 2.1.), яку можна відрити у третій формі. В ній користувач має змогу зашифрувати, розшифрувати текст алгоритмом RSA (Див. Рис. 2.2.), зберегти результат та загрузити з txt файлу. Для програмної реалізації шифрування було використано клас RSACryptoServiceProvider стандартної бібліотеки Visual Studio System. Security. Cryptography.

RSA - криптографічна система з відкритим ключем. Безпека алгоритму RSA побудована на принципі складності факторизації цілих чисел. Алгоритм використовує два ключі - відкритий (public) і секретний (private), разом відкритий і відповідний йому секретний ключі утворюють пари ключів (keypair). Відкритий ключ не потрібно зберігати в таємниці, він використовується для шифрування даних. Якщо повідомлення було зашифровано відкритим ключем, то розшифрувати його можна тільки відповідним секретним ключем.

Генерування ключів

Для того, щоб згенерувати пари ключів виконуються такі дії:

1. Вибір двох взаємно простих більших чисел р и q

2. Визначення їхнього добутку: n =р * q

3. Визначення функції Ейлера: (n) = (p-1) (q-1)

4. Вибір відкритого ключа е з урахуванням умов:

1<e(n), НОД (е,(n))=1

5. Визначення секретного ключа d, що задовольняє умові

е * d = 1 (mod (n)), де d < n

Алгоритм шифрування повідомлення М (дії відправника):

1. Розбиває вихідний текст повідомлення на блоки (Mi=0,1,2,…, n)

2. Шифрує текст повідомлення у вигляді послідовності блоків:

Ci = Мie (mod n)

3. Відправляє одержувачеві криптограму: C1, C2,, Cn

4. Одержувач розшифровує криптограму за допомогою секретного ключа d за формулою:

Mi = Cid (mod n)

Рис. 2.1. Вікно шифрування

Рис. 2.2. Блок-схема алгоритму шифрування RSA

Додаток

Код класу Users

using System;

using System. Collections. Generic;

using System. Linq;

using System. Text;

namespace WindowsFormsApplication1

{

public class Users

{

String login;

String password;

String rules;

public Users()

{

login = «»;

password = «»;

rules = «R»;

}

public Users (String Login, String Password)

{

login = Login;

password = Password;

rules = «R»;

}

public Users (String Login, String Password, String Rules)

{

login = Login;

password = Password;

rules = Rules;

}

public string Login

{

get

{

return login;

}

set

{

}

}

public string Password

{

get

{

return password;

}

set

{

}

}

public string Rules

{

get

{

return rules;

}

set

{

rules = value;

}

}

}

}

Код першої форми (форми шифрування)

using System;

using System. Collections. Generic;

using System. ComponentModel;

using System. Data;

using System. Drawing;

using System. Linq;

using System. Text;

using System. Windows. Forms;

using System. Security. Cryptography;

using System.IO;

namespace WindowsFormsApplication1

{

public partial class Form1: Form

{

RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();

String publicKey;

String privateKey;

byte[] EncryptedData;

byte[] DecryptedData;

byte[] Data = new byte[1024];

public Form1 ()

{

InitializeComponent();

publicKey = RSA. ToXmlString(false);

privateKey = RSA. ToXmlString(true);

}

private void button3_Click (object sender, EventArgs e)

{

Data = Encoding.UTF8. GetBytes (richTextBox1. Text);

EncryptedData = RSA. Encrypt (Data, false);

richTextBox2. Text = Convert. ToBase64String(EncryptedData);

textBox2. Text = privateKey;

}

private void button4_Click (object sender, EventArgs e)

{

if (textBox2. Text!= privateKey && textBox2. Text!= «»)

{

privateKey = textBox2. Text;

RSA. FromXmlString(privateKey);

Data = Convert. FromBase64String (richTextBox2. Text);

DecryptedData = RSA. Decrypt (Data, false);

richTextBox1. Text = Encoding.UTF8. GetString(DecryptedData);

}

else

{

Data = Convert. FromBase64String (richTextBox2. Text);

DecryptedData = RSA. Decrypt (Data, false);

richTextBox1. Text = Encoding.UTF8. GetString(DecryptedData);

}

}

private void button1_Click (object sender, EventArgs e)

{

if (openFileDialog1. ShowDialog() == DialogResult.OK)

{

StreamReader sr = new StreamReader (openFileDialog1. FileName);

richTextBox2. Text = sr. ReadToEnd();

sr. Close();

}

}

private void button2_Click (object sender, EventArgs e)

{

if (openFileDialog1. ShowDialog() == DialogResult.OK)

{

StreamWriter sw = new StreamWriter (openFileDialog1. FileName);

sw. WriteLine (richTextBox2. Text);

sw. Close();

}

}

private void button5_Click (object sender, EventArgs e)

{

if (openFileDialog1. ShowDialog() == DialogResult.OK)

{

StreamWriter sw = new StreamWriter (openFileDialog1. FileName);

sw. WriteLine (textBox2. Text);

sw. Close();

}

}

private void button6_Click (object sender, EventArgs e)

{

if (openFileDialog1. ShowDialog() == DialogResult.OK)

{

StreamReader sr = new StreamReader (openFileDialog1. FileName);

textBox2. Text = sr. ReadToEnd();

sr. Close();

}

}

}

}

Код другої форми (форми аутинфікації та ідентифікації)

using System;

using System. Collections. Generic;

using System. ComponentModel;

using System. Data;

using System. Drawing;

using System. Linq;

using System. Text;

using System. Windows. Forms;

using System.IO;

namespace WindowsFormsApplication1

{

public partial class Form2: Form

{

List<Users> Users = new List<Users>();

double x;

double a;

double answer = 0;

int result;

int user_index = 0;

public Form2 ()

{

InitializeComponent();

Users. Add (new Users («admin», «admin», «A»));

Users. Add (new Users («login», «password»));

Users. Add (new Users («test1», «test1», «E»));

}

private void button1_Click (object sender, EventArgs e)

{

if (textBox1. Text!= «» && textBox2. Text!= «» && textBox4. Text!= «»)

{

if (Cheak (textBox1. Text, textBox2. Text) == true && Convert. ToString(result) == textBox4. Text)

{

MessageBox. Show («Вы вошли как» + textBox1. Text);

Form4 f = new Form4 (Users[user_index].Login, Users [user_index].Rules, Users, this);

f. Show();

this. Hide();

}

else

{

if (textBox4. Text!= Convert. ToString(result))

{

MessageBox. Show («Вы ввели не верный ответ»);

Generate_answer();

}

else

{

MessageBox. Show («Неверный логин / пароль»);

}

}

}

else

{

MessageBox. Show («Все поля должны быть заполнены»);

}

}

private void Form2_Load (object sender, EventArgs e)

{

Generate_answer();

Get_users();

}

private void label6_Click (object sender, EventArgs e)

{

Form3 f = new Form3 (this);

f. Show();

}

public void Generate_answer()

{

Random rnd = new Random();

x = rnd. Next (1, 100000);

a = rnd. Next (1, 100000);

result = Convert. ToInt32 (Math. Log (a * x));

textBox3. Text = «x =» + x +»; a =» + a +»;»;

textBox4. Text = Convert. ToString(result);

}

public Boolean Cheak (string login, string password)

{

for (int i = 0; i < Users. Count; i++)

{

if (login == Users[i].Login)

{

if (password == Users[i].Password)

{

user_index = i;

return true;

}

else

{

return false;

}

}

}

return false;

}

public Boolean Cheak_logins (string login)

{

for (int i = 0; i < Users. Count; i++)

{

if (Users[i].Login == login)

{

return false;

}

}

return true;

}

public void Get_users()

{

StreamReader sr = new StreamReader (Environment. CurrentDirectory + «\\Users.txt»);

for (string a = «»;! sr. EndOfStream;)

{

a = sr. ReadLine();

string[] b = a. Split (' ', ';', '-', ' ');

if (b[0]!= «» && b[1]!= «» && b[3]!= «»)

{

Add_user (b[0], b[1], b[3]);

}

}

sr. Close();

}

public void Add_user (string login, string password, string rules)

{

Users. Add (new Users (login, password, rules));

}

public void Delete_ueser (string my_login, string login)

{

if (my_login == «admin»)

{

for (int i = 0; i < Users. Count; i++)

{

if (Users[i].Login == login)

{

Users. RemoveAt(i);

break;

}

}

}

}

public void Reset()

{

Users = null;

Users = new List<Users>();

Users. Add (new Users («admin», «admin», «A»));

Users. Add (new Users («login», «password»));

Users. Add (new Users («test1», «test1», «E»));

textBox1. Text = «»;

textBox2. Text = «»;

textBox4. Text = «»;

Generate_answer();

Get_users();

}

}

}

Код третьої форми (форми реєстрації)

using System;

using System. Collections. Generic;

using System. ComponentModel;

using System. Data;

using System. Drawing;

using System. Linq;

using System. Text;

using System. Windows. Forms;

using System.IO;

namespace WindowsFormsApplication1

{

public partial class Form3: Form

{

Form2 F;

public Form3 ()

{

InitializeComponent();

}

public Form3 (Form2 f)

{

InitializeComponent();

F = f;

}

private void button1_Click (object sender, EventArgs e)

{

if (textBox2. Text == textBox3. Text && textBox2. Text!= «» && textBox1. Text!= «»)

{

if (F. Cheak_logins (textBox1. Text) == true)

{

StreamWriter sw = new StreamWriter (Environment. CurrentDirectory + «\\Users.txt», true);

sw. WriteLine (textBox1. Text +»;» + textBox2. Text +» - R»);

sw. Close();

F. Add_user (textBox1. Text, textBox2. Text, «R»);

MessageBox. Show («Регистрация прошла успешно»);

this. Close();

}

else

{

MessageBox. Show («Такой логин уже зарегистрирован, введите другой»);

}

}

else

{

MessageBox. Show («Ошибка ввода данных»);

}

}

}

}

Код четвертої форми (форми доступу до локальних дисків)

using System;

using System. Collections. Generic;

using System. ComponentModel;

using System. Data;

using System. Drawing;

using System. Linq;

using System. Text;

using System. Windows. Forms;

using System.IO;

namespace WindowsFormsApplication1

{

public partial class Form4: Form

{

String login = «»;

String rules = «R»;

List<Users> Users;

Form2 F;

public Form4 ()

{

InitializeComponent();

}

public Form4 (string Login, string Rules, List<Users> user, Form2 f)

{

InitializeComponent();

login = Login;

rules = Rules;

this. Text = login;

Users = user;

F = f;

}

private void Form4_Load (object sender, EventArgs e)

{

string system = Environment. GetFolderPath (Environment. SpecialFolder. System);

DirectoryInfo dirInfo = new DirectoryInfo(system);

DriveInfo[] dr = DriveInfo. GetDrives();

foreach (DriveInfo d in dr)

{

try

{

if (d. DriveType!= DriveType.CDRom)

{

if (d. RootDirectory. Name!= dirInfo. Root. Name)

{

TreeNode aNode = new TreeNode (d. Name);

treeView1. Nodes. Add(aNode);

}

else

{

if (login == «admin» || rules == «A»)

{

TreeNode aNode = new TreeNode (d. Name);

treeView1. Nodes. Add(aNode);

}

}

}

}

catch (Exception)

{

MessageBox. Show («Устройство не готово»);

}

}

if (login == «admin»)

{

управлениеПользователямиToolStripMenuItem. Enabled = true;

}

}

private void treeView1_AfterSelect (object sender, TreeViewEventArgs e)

{

string path = treeView1. SelectedNode. FullPath;

DirectoryInfo dir = new DirectoryInfo(path);

TreeNode aNode = new TreeNode(path);

foreach (DirectoryInfo drs in dir. GetDirectories())

{

Add_node (treeView1. SelectedNode, drs. Name);

}

}

public void Add_node (TreeNode node, string value)

{

node. Nodes. Add(value);

}

private void treeView1_NodeMouseDoubleClick (object sender, TreeNodeMouseClickEventArgs e)

{

string path = treeView1. SelectedNode. FullPath;

DirectoryInfo dir = new DirectoryInfo(path);

System. Diagnostics. Process. Start («explorer», dir. FullName);

}

private void открытьФормуШифрованияToolStripMenuItem_Click (object sender, EventArgs e)

{

Form1 f = new Form1 ();

f. Show();

}

private void управлениеПользователямиToolStripMenuItem_Click (object sender, EventArgs e)

{

Form5 f = new Form5 (Users);

f. Show();

}

private void завершитьСеансToolStripMenuItem_Click (object sender, EventArgs e)

{

F. Reset();

F. Show();

this. Close();

}

}

}

Код п'ятої форми (форми керуванням зареєстрованими користувачами)

using System;

using System. Collections. Generic;

using System. ComponentModel;

using System. Data;

using System. Drawing;

using System. Linq;

using System. Text;

using System. Windows. Forms;

using System.IO;

namespace WindowsFormsApplication1

{

public partial class Form5: Form

{

List<Users> Users;

public Form5 ()

{

InitializeComponent();

}

public Form5 (List<Users> users)

{

InitializeComponent();

Users = users;

}

private void Form5_Load (object sender, EventArgs e)

{

for (int i = 0; i < Users. Count; i++)

{

comboBox1. Items. Add (Users[i].Login);

}

}

private void button1_Click (object sender, EventArgs e)

{

String path = Environment. CurrentDirectory + «\\Users.txt»;

String str = «»;

try

{

using (StreamReader sr = new StreamReader(path))

{

while (sr. Peek() >= 0)

{

String temp = sr. ReadLine();

if (temp. IndexOf (comboBox1. Text)!= -1)

{

comboBox1. Items. Remove (comboBox1. Text);

textBox1. Text = «»;

}

else

{

str += temp + «\r\n»;

}

}

}

if (! str. Equals(«»))

str = str. Substring (0, str. Length - 2);

}

catch (Exception)

{

MessageBox. Show («Возникли проблемы с чтением данных!»);

return;

}

try

{

using (StreamWriter sw = new StreamWriter(path))

{

sw. Write(str);

}

}

catch (Exception)

{

MessageBox. Show («Возникли проблемы с записью данных!»);

}

MessageBox. Show («Пользователь успешно удален!»);

}

private void comboBox1_TextChanged (object sender, EventArgs e)

{

for (int i = 0; i < Users. Count; i++)

{

if (comboBox1. Text == Users[i].Login)

{

textBox1. Text = Users[i].Rules;

}

}

}

private void button2_Click (object sender, EventArgs e)

{

if (textBox1. Text!= «»)

{

for (int i = 0; i < Users. Count; i++)

{

if (Users[i].Login == comboBox1. Text)

{

Users[i].Rules = textBox1. Text;

String path = Environment. CurrentDirectory + «\\Users.txt»;

String str = «»;

try

{

using (StreamReader sr = new StreamReader(path))

{

while (sr. Peek() >= 0)

{

String temp = sr. ReadLine();

if (temp. IndexOf (comboBox1. Text)!= -1)

{

str += Users[i].Login +»;» + Users[i].Password +» - «+ Users[i].Rules + «\r\n»;

}

else

{

str += temp + «\r\n»;

}

}

}

 // if (! str. Equals(«»))

 // str = str. Substring (0, str. Length - 2);

}

catch (Exception)

{

MessageBox. Show («Возникли проблемы с чтением данных!»);

return;

}

try

{

using (StreamWriter sw = new StreamWriter(path))

{

sw. Write(str);

}

}

catch (Exception)

{

MessageBox. Show («Возникли проблемы с записью данных!»);

}

MessageBox. Show («Права изменены»);

}

}

}

}

}

}

Размещено на Allbest.ru


Подобные документы

  • Вивчення інтерфейсу, архітектури, функцій (генерування криптографічних послідовностей випадкових чисел, операції із електронним підписом) бібліотеки CryptoAPI. Розгляд способів ідентифікації та аутентифікації як захисту від несанкціонового доступу.

    реферат [502,9 K], добавлен 06.04.2010

  • Основи безпеки даних в комп'ютерних системах. Розробка програми для забезпечення захисту інформації від несанкціонованого доступу: шифрування та дешифрування даних за допомогою криптографічних алгоритмів RSA та DES. Проблеми і перспективи криптографії.

    дипломная работа [823,1 K], добавлен 11.01.2011

  • Основи технології запису на оптичні диски. Довготривале зберігання інформації на оптичних носіях. Дослідження існуючих програмних і технічних засобів шифрування даних. Можливі рішення проблем і попередження злому. Програмні засоби шифрування даних.

    дипломная работа [4,0 M], добавлен 27.01.2012

  • Проблемі захисту інформації. Основні загрози та методи їх рішень. Апаратно-програмні засоби захисту. Використання ідентифікації приводу оптичного накопичувача за характеристиками лазерного диску. Аутентифікація за допомогою ідентифікації лазерного диску.

    курсовая работа [65,2 K], добавлен 01.04.2013

  • Криптологія - захист інформації шляхом перетворення, основні положення і визначення. Криптографія - передача конфіденційної інформації через канали зв'язку у зашифрованому виді. Системи ідентифікації, характеристика алгоритмів шифрування; криптоаналіз.

    реферат [125,8 K], добавлен 19.12.2010

  • Аналіз інформаційних систем, етапів обробки інформації, Web-програмування. Огляд засобів ідентифікації користувача в САТДН. Розробка інформаційної і адміністративної підсистем для системи автоматизованого тестування для дистанційного навчання (САТДН).

    дипломная работа [10,3 M], добавлен 21.04.2014

  • Дослідження криптографічних методів захисту даних від небажаного доступу. Основи безпеки даних в комп'ютерних системах. Класифікаційні складові загроз безпеки інформації. Характеристика алгоритмів симетричного та асиметричного шифрування інформації.

    курсовая работа [245,8 K], добавлен 01.06.2014

  • Місце мікропроцесора в структурі мікропроцесорних приладів, його функції. Інтегральні мікросхеми із великою ступінню інтеграції. Розробка структурної схеми мікропроцесорної системи обробки інформації на основі мікроконтролера ATmega128 та інших мікросхем.

    курсовая работа [2,1 M], добавлен 18.09.2010

  • Визначення функціонального профілю захищеності комп’ютеризованої системи від несанкціонованого доступу і вимог до захищеності інформації від витоку технічними каналами. Вибір та обґрунтування необхідних фізичних та організаційних засобів захисту.

    курсовая работа [2,4 M], добавлен 22.11.2014

  • Побудова комплексної системи захисту інформації на OOO "Віпіком". Забезпечення інженерно-технічними заходами конфіденційності, цілісності та доступності інформації. Своєчасне виявлення і протидія загрозам безпеці інформації з обмеженим доступом.

    курсовая работа [343,5 K], добавлен 05.01.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.