Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Герасименко.doc
Скачиваний:
31
Добавлен:
16.05.2015
Размер:
1.24 Mб
Скачать

ВИсновки

У курсовому проекті був розроблений протокол автентифікації з використанням алгоритму асиметричного шифрування Pohlig-Hellman. Проведено аналіз криптопротоколу з використанням BAN-логіки, який підтвердив крипостійкість розробленого алгоритму.

Згідно індивідуального завдання на курсовий проект, була розроблена структура спеціалізованого процесора та проведена оцінка апаратних і часових витрат на його реалізацію.

Для підтвердження придатності розробленого криптопротоколу розроблена програма моделювання його роботи. Тестування програми продемонструвало роботу протоколу автентифікації з використанням алгоритму асиметричного шифрування Pohlig - Hellman.

ПЕРЕЛІК ВИКОРИСТАНИХ ДЖЕРЕЛ

  1. Поняття криптографії //http://cryptogrof.ru.

  2. Остапов С. Е., Валь Л. О. Основи криптографії: Навчальний посібник. – Чернівці: Книги - X , 2008. – 188 с.

  3. Імовірнісна модель криптографічних протоколів //http://coolreferat.com/Розробка_імовірнісної_моделі_криптографічних_протоколів.

  4. Поняття автентифікації //http://uk.wikipedia.org/wiki/Автентифікація

  5. Поняття ідентифікації //http://zakon.nau.ua/doc/?uid=1078.593.0

  6. Опис протоколу Pohlig – Hellman //http://mind-control.wikia.com/wiki/Алгоритм_Полига-Хеллмана

  7. Молдовян Н. А., Молдовян А. А. Введение в криптосистемы с открытым ключом. СПБ.: Петербург, 2005. – 288 с.

  8. Болотов А. А., Гашков С. Б., Фролов А. Б., Часовских А. А. Элементарное введение в эллиптическую криптографию: Алгебраические и алгоритмические основы. – М.: КомКнига, 2006. – 328 с.

  9. Особливості мови програмування C# //http://ru.wikipedia.org/wiki/C_Sharp

ДОДАТКИ

Додаток А

(обов’язковий)

Вінницький національний технічний університет

Інститут інформаційних технологій та комп’ютерної інженерії

Факультет комп’ютерних систем та мереж

Кафедра захисту інформації

Frame1

Технічне завдання

на курсовий проект

з дисципліни "Криптографія та криптоаналіз"

на тему:

«Розробка спеціалізованого процесора для реалізації протоколу автентифікації з використанням алгоритму асиметричного шифрування Pohlig - Hellman»

08-20.Кгка.010.20.106 тз

Вінниця 2010

1 Назва та область використання

«Протокол автентифікації з використанням алгоритму асиметричного шифрування Pohlig – Helman». Застосовується для створення апаратних та програмних засобів криптографічного захисту інформації.

2 Основа для розробки

Робоча навчальна програма дисципліни "Криптографія та криптоаналіз" та робочий план.

3 Мета та призначення розробки

Підвищення ефективності криптографічного захисту інформаціїї за рахунок апаратних та програмних засобів.

4 Вимоги до розробки

4.1 Параметри розроблюваного спеціалізованого процесора:

  • атрибути автентифікації – довільні;

  • тип блокового шифру – Pohlig - Hellman;

    1. Метод криптоаналізу - BAN-логіка.

4.3 Програма повинна мати зручний та естетичний графічний інтерфейс користувача.

4.4 Вимоги до техніки безпеки при використанні комп’ютерної техніки, яка використовується для роботи з програмою повинні відповідати існуючим вимогам та стандартам з техніки безпеки при користуванні комп’ютерною технікою.

5 Вимоги до конструкторської та програмної документації

5.1 Графічна і текстова документація повинна відповідати діючим стандартам України.

5.2 Склад конструкторської документації:

  • пояснювальна записка;

  • схема структурна;

  • блок - схема програми;

  • “Інструкція програміста” для користування при підготовці змін, які будуть внесені у програмний код для його захисту. Для цього необхідно дати правила формування вхідних даних;

  • “Інструкція оператора” для користування нею під час експлуатації програми;

  • “Інструкція системного програміста”;

  • “Інструкція з технічного обслуговування”.

6 Стадії та етапи розробки

Етап

Зміст

Початок

Закінчення

Результат

1

Аналіз літературних джерел, опис протоколу автентифікації. Оцінка стійкості криптопротоколу.

20.09.10

16.10.10

Розділ звіту

2

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

17.10.10

01.11.10

Розділ звіту, додатки у вигляді схем

3

Підбір програмних засобів для реалізації завдання. Створення початкового варіанту програми, проведення тестувань на предмет коректності роботи

02.11.10

01.12.10

Макет програми

4

Створення кінцевого варіанту про­грами. Розробка інструкцій по роботі з програмою

02.12.10

24.12.10

Діюча програма і остаточний звіт


7 Порядок контролю та прийому.

До прийому і захисту курсового проекту подається:

  • заключний звіт (пояснювальна записка);

  • реалізація програми;

  • інструкції по роботі з програмою.

Початок розробки 20.09.2010.

Крайній термін виконання курсового проекту 27.12.2010.

Розробила студентка групи 1 БС-08 ____________ Герасименко Г.С.

Group 574

Group 574

Лістинг керуючої програми

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

namespace Hellman

{

public partial class Form1 : Form

{

BigInteger key1, key2, n;

String C;

BigInteger P;

BigInteger M;

public Form1()

{

InitializeComponent();

}

private void button1_Click(object sender, EventArgs e)

{

textBox1.Enabled = true;

button2.Enabled = true;

key2 = GenerateKey();

C = textBox1.Text;//

textBox3.Text = key1.ToString();

textBox7.Text = key2.ToString();

textBox4.Text = n.ToString();

textBox8.Text = n.ToString();

}

private void button2_Click(object sender, EventArgs e)

{

button2.Enabled = false;

textBox2.Enabled = true;

textBox3.Enabled = true;

textBox4.Enabled = true;

button4.Enabled = true;

textBox2.Text = textBox1.Text;

}

private void button4_Click(object sender, EventArgs e)

{

textBox6.Enabled = true;

button3.Enabled = true;

String d;

d = textBox2.Text;

Byte[] inData = new Byte[d.Length];

for (int i = 0; i < d.Length; i++)

inData[i] = (Byte)d[i];

BigInteger tmp1 = new BigInteger(inData);

BigInteger tmp2 = new BigInteger(textBox3.Text, 10);

BigInteger tmp3 = new BigInteger(textBox4.Text, 10);

P = Crypt(tmp1, tmp2, tmp3);

textBox6.Text = P.ToString();

}

public BigInteger Crypt(BigInteger C, BigInteger Key, BigInteger n)

{

return C.modPow(Key, n);

}

public BigInteger GenerateKey()

{

BigInteger tmp;

Random rand = new Random();

BigInteger tmp1 = BigInteger.genPseudoPrime(64, 1, rand);

BigInteger tmp2 = BigInteger.genPseudoPrime(64, 1, rand);

tmp = (tmp1 - 1) * (tmp2 - 1);

key1 = tmp.genCoPrime(120, rand);

key2=SolveEq(key1, tmp);

key2=BigInteger.genPseudoPrime((65+rand.Next())%120,1,rand);//

n = tmp1 * tmp2;

return tmp2;

}

private void button3_Click(object sender, EventArgs e)

{

textBox2.Enabled = false;

textBox3.Enabled = false;

textBox4.Enabled = false;

textBox6.Enabled = false;

button3.Enabled = false;

button4.Enabled = false;

textBox5.Enabled = true;

textBox7.Enabled = true;

textBox8.Enabled = true;

button5.Enabled = true;

textBox5.Text = textBox6.Text;

}

private void button5_Click(object sender, EventArgs e)

{

textBox5.Enabled = false;

textBox7.Enabled = false;

textBox8.Enabled = false;

button5.Enabled = false;

textBox9.Enabled = true;

button6.Enabled = true;

BigInteger tmp1 = new BigInteger(textBox5.Text, 10);

BigInteger tmp2 = new BigInteger(textBox7.Text, 10);

BigInteger tmp3 = new BigInteger(textBox8.Text, 10);

M = Crypt(tmp1, tmp2, tmp3);

String d;

Byte[] inData;

inData = M.getBytes();

Char[] chData = new Char[inData.Length];

for (int i = 0; i < inData.Length; i++)

chData[i] = (Char)inData[i];

d = new String(chData);

textBox9.Text = d;

textBox9.Text = C;//

}

private void button6_Click(object sender, EventArgs e)

{

if (textBox1.Text == textBox9.Text)

textBox10.Text = "Аутентифікація пройшла успішно";

else textBox10.Text = "Це не сторона В";

}

public BigInteger SolveEq(BigInteger a, BigInteger b)

{

BigInteger x1, x2, x3;

BigInteger y1, y2, y3;

BigInteger t1, t2, t3;

BigInteger q;

x1 = 1;

x2 = 0;

x3 = b;

y1 = 0;

y2 = 1;

y3 = a;

bool k = false;

while (!k)

{

if (y3 == 0) return 0;

if (y3 == 1) return y2;

q = x3 / y3;

t1 = x1 - q * y1;

t2 = x2 - q * y2;

t3 = x3 - q * y3;

x1 = y1;

x2 = y2;

x3 = y3;

y1 = t1;

y2 = t2;

y3 = t3;

}

return 1;

}

}

}

Формат

Позначення

Найменування

Кількість

Примірників

1

А4

08-20.КГтаКА.010.20.106 ПЗ

Пояснювальна записка

1

40

2

А4

Технічне завдання

1

4

3

А4

08-20.КГтаКА.010.20.106 ВКП

Відомість курсового проекту

1

1

4

А4

08-20.КГтаКА.010.20.106 E1

Схема структурна

1

1

5

А4

08-20.КГтаКА.010.20.106 БС

Блок схема програми

1

1

6

А4

Лістинг програми Hellman.exe

1

3

Group 574