- •08-20.Кгка.010.20.106 пз
- •Розробка криптопротоколу
- •Аналіз сучасного стану питання та обґрунтування теми
- •Поняття протоколів автентифікації та основні вимоги до них
- •Опис протоколу
- •Математичний опис алгоритму
- •Аналіз криптопротоколу
- •Постулати і правила ban-логіки
- •Аналіз криптопротоколу з використанням ban-логіки
- •Розробка структури спеціалізованого процесора
- •Опис операційного автомату
- •Розробка структурної схеми спеціалізованого процесора
- •Визначення технічних характеристик спеціалізованого процесора
- •Програмна реалізація моделі спеціалізованого процесора
- •Обґрунтування вибору програмних засобів
- •Розробка блок - схеми керуючої програми
- •Програмна реалізація основних функцій програми
- •Результати тестування програми
- •Інструкції по роботі з програмою
- •Інструкція з технічного обслуговування
- •Інструкція системного програміста
- •Інструкція програміста
- •ВИсновки
- •Технічне завдання
- •08-20.Кгка.010.20.106 тз
ВИсновки
У курсовому проекті був розроблений протокол автентифікації з використанням алгоритму асиметричного шифрування Pohlig-Hellman. Проведено аналіз криптопротоколу з використанням BAN-логіки, який підтвердив крипостійкість розробленого алгоритму.
Згідно індивідуального завдання на курсовий проект, була розроблена структура спеціалізованого процесора та проведена оцінка апаратних і часових витрат на його реалізацію.
Для підтвердження придатності розробленого криптопротоколу розроблена програма моделювання його роботи. Тестування програми продемонструвало роботу протоколу автентифікації з використанням алгоритму асиметричного шифрування Pohlig - Hellman.
ПЕРЕЛІК ВИКОРИСТАНИХ ДЖЕРЕЛ
Поняття криптографії //http://cryptogrof.ru.
Остапов С. Е., Валь Л. О. Основи криптографії: Навчальний посібник. – Чернівці: Книги - X , 2008. – 188 с.
Імовірнісна модель криптографічних протоколів //http://coolreferat.com/Розробка_імовірнісної_моделі_криптографічних_протоколів.
Поняття автентифікації //http://uk.wikipedia.org/wiki/Автентифікація
Поняття ідентифікації //http://zakon.nau.ua/doc/?uid=1078.593.0
Опис протоколу Pohlig – Hellman //http://mind-control.wikia.com/wiki/Алгоритм_Полига-Хеллмана
Молдовян Н. А., Молдовян А. А. Введение в криптосистемы с открытым ключом. СПБ.: Петербург, 2005. – 288 с.
Болотов А. А., Гашков С. Б., Фролов А. Б., Часовских А. А. Элементарное введение в эллиптическую криптографию: Алгебраические и алгоритмические основы. – М.: КомКнига, 2006. – 328 с.
Особливості мови програмування C# //http://ru.wikipedia.org/wiki/C_Sharp
ДОДАТКИ
Додаток А
(обов’язковий)
Вінницький національний технічний університет
Інститут інформаційних технологій та комп’ютерної інженерії
Факультет комп’ютерних систем та мереж
Кафедра захисту інформації
Технічне завдання
на курсовий проект
з дисципліни "Криптографія та криптоаналіз"
на тему:
«Розробка спеціалізованого процесора для реалізації протоколу автентифікації з використанням алгоритму асиметричного шифрування Pohlig - Hellman»
08-20.Кгка.010.20.106 тз
Вінниця 2010
1 Назва та область використання
«Протокол автентифікації з використанням алгоритму асиметричного шифрування Pohlig – Helman». Застосовується для створення апаратних та програмних засобів криптографічного захисту інформації.
2 Основа для розробки
Робоча навчальна програма дисципліни "Криптографія та криптоаналіз" та робочий план.
3 Мета та призначення розробки
Підвищення ефективності криптографічного захисту інформаціїї за рахунок апаратних та програмних засобів.
4 Вимоги до розробки
4.1 Параметри розроблюваного спеціалізованого процесора:
атрибути автентифікації – довільні;
тип блокового шифру – Pohlig - Hellman;
Метод криптоаналізу - 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 ____________ Герасименко Г.С.
Лістинг керуючої програми
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 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|