Электронная цифровая подпись

Автор работы: Пользователь скрыл имя, 26 Ноября 2014 в 14:40, курсовая работа

Краткое описание

Проблема защиты информации путем ее преобразования, исключающего ее прочтение посторонним лицом волновала, человеческий ум с давних времен. История криптографии - ровесница истории человеческого языка. Более того, первоначально письменность сама по себе была криптографической системой, так как в древних обществах ею владели только избранные. Священные книги Древнего Египта, Древней Индии тому примеры.

Содержание

ВСТУПЛЕНИЕ……………………………………………………………….3

1. ОБЩИЕ СВЕДЕНИЯ О КРИПТОГРАФИИ
1.1 Криптография……………………..……………………………..........….4
1.2 Требования к криптографическим системам защиты
информации и их возможности ………………………………...........…........4
1.3 Хэш-функция………………………………………………….…….........6
1.4 Электронная цифровая подпись……………………….……..…...….....7
2. ЭЛЕКТРОННАЯ ЦИФРОВАЯ ПОДПИСЬ ПО ЭЛЬ-ГАМАЛЮ
И DSS/DSA
2.1. Алгоритм цифровой подписи Эль-Гамаля (ЕGSА)………………...…..10
2.1.1 Формирование и проверка подписи EGSA………………………........11
2.2. Стандарт ЭЦП DSS ………………………………………………….......13
2.2.1.Подход DSS…………………………………………………...………....13
2.2.2 Формирование и проверка подписи DSS………………………….......14
2.3 Алгоритм цифровой подписи DSА……………………………..………..15
2.3.1 Формирование и проверка подписи DSА……………………………...16
3. РАЗРАБОТКА ПРОГРАММНОГО КОДА
3.1 Электронная цифровая подпись по Эль-Гамалю……………………..19
Электронная цифровая подпись по DSS/DSA………………………..24
РЕЗУЛЬТАТЫ
Интерфейс программы реализующей ЭЦП по ЕGSА ……………….28
Интерфейс программы реализующей ЭЦП по DSS/DSA…………….28
ВЫВОДЫ…………………………………………………………..………….29
ИСТОЧНИКИ ДАННЫХ………………

Прикрепленные файлы: 1 файл

Курсовая осн.docx

— 493.34 Кб (Скачать документ)

{

on_par1 = on_par1 * Y;

on_par1 = on_par1 % P;

}

par_1 = on_par1 % P;

for(var i_par2:Number = 0; i_par2 < b; i_par2++)

{

on_par2 = on_par2 * a;

on_par2 = on_par2 % P;

}

par_2 = on_par2 % P;

//ВЫЧИСЛЕНИЕ ПАРАМЕТРОВ  ДЛЯ ПРОВЕРКИ

on_A1 = par_1*par_2;

A_1 = on_A1 % P;

for(var i_A2:Number = 0; i_A2 < m; i_A2++)

{

on_A2 = on_A2 * G;

on_A2 = on_A2 % P;

}

A_2 = on_A2;

if(b < 0)

{

b = (b + (P - 1));

}

if(((b % 1) == 0) && (b > 5) && (a > 5) && (b != a) && (A_1 == A_2))

{

break;

}

on_a = 1;

on_Y = 1;

on_par1 = 1;

on_par2 = 1;

on_A2 = 1;}

Далее я реализовал режим проверки подлинности цифровой подписи:

function on_pr(e:MouseEvent):void

{

//РЕЖИМ ПРОВЕРКИ

//ПРИНЯТИЕ ПАРАМЕТРОВ

P = Number(proverka.P_znach.text);

G = Number(proverka.G_znach.text);

Y = Number(proverka.Y_znach.text);

a = Number(proverka.a_znach.text);

b = Number(proverka.b_znach.text);

trace(P + "      " + G + "        " + Y + "     " + a + "     " + b);

for(var i_par1:Number = 0; i_par1 < a; i_par1++)

{

on_par1 = on_par1 * Y;

on_par1 = on_par1 % P;

}

par_1 = on_par1 % P;

for(var i_par2:Number = 0; i_par2 < b; i_par2++)

{

on_par2 = on_par2 * a;

on_par2 = on_par2 % P;

}

par_2 = on_par2 % P;

//ВЫЧИСЛЕНИЕ ПАРАМЕТРОВ  ДЛЯ ПРОВЕРКИ

on_A1 = par_1*par_2;

A_1 = on_A1 % P;

for(var i_A2:Number = 0; i_A2 < m; i_A2++)

{

on_A2 = on_A2 * G;

on_A2 = on_A2 % P;

}

A_2 = on_A2;

//ВЫВОД В ИНТЕРФЕЙС

proverka.A_1_znach.text = String(A_1);

proverka.A_2_znach.text = String(A_2);

3.2 Электронная цифровая подпись по DSS/DSA

Для получения рабочей электронной цифровой подписи по DSS/DSA мне было необходимо реализовать в программе хеширование. В алгоритме программы функция хеширования описывается подобным образом:

var m:Number = 0;

var osn:Number = 0;

var M:String;

var arr_o:Array = new Array();

 

key_hesh.addEventListener(MouseEvent.CLICK, get_hesh)

 

function get_hesh(e:MouseEvent):void

{

//ВЗЯТИЕ ТЕКСТА ДЛЯ  ХЕША

M = otkritii.text;

for (var ind_1:Number = 0; ind_1 < M.length; ind_1++)

{

arr_o.push(M.charCodeAt(ind_1));

}

//ХЕШИРОВАНИЕ

for(var ind_2:Number = 0; ind_2 < M.length; ind_2++)

{

osn = Math.pow(arr_o[ind_2], m) % 256;

m = ((osn + arr_o[ind_2]) % 30) + 2;

}

hesh.text = String(m);

for (var ind_3:Number = 0; ind_3 < M.length; ind_3++)

{

arr_o.pop();

}

}

В слудующей части программы я реализовал объявление переменных в диапазоне от 1381до 3989.

Теперь я приступил к реализации самой электронной цифровой подписи:

{

//РЕЖИМ ПОДПИСИ

for(var gli:Number = 1; gli > 0; gli++)

{

//ГЕНЕРАЦИЯ ПАРАМЕТРОВ  P, Q И G

for(var kil:Number = 1; kil > 0; kil++)

{

ind = Math.floor(Math.random()*330);

P = prostie_chisla[ind];

gua_1 = (P - 3);

kon = Math.floor(Math.random()*20);

q = prostie_chisla2[kon]

if((P - 1) % q == 0)

{

trace(P + "        " + q);

gua_2 = (q - 3);

break;

}

}

for(var ali:Number = 1; ali > 0; ali++)

{

h = Math.floor(Math.random()*gua_1) + 2;

for(var i_on1:Number = 0; i_on1 < ((P - 1)/q); i_on1++)

{

on_G = on_G * h;

on_G = on_G % P;

}

G = on_G;

if(G > 1)

{

trace(G);

break;

}}

//ГЕНЕРАЦИЯ X И K, ВЫЧИСЛЕНИЕ Y, A И B

X = Math.floor(Math.random()*gua_2) + 2;

for(var i_on1:Number = 0; i_on1 < X; i_on1++)

{

on_Y = on_Y * G;

on_Y = on_Y % P;

}

Y = on_Y;

K = Math.floor(Math.random()*gua_2) + 3;

for(var i_on1:Number = 0; i_on1 < K; i_on1++)

{

on_a = on_a * G;

on_a = on_a % P;

}

a = (on_a % q);

trace(a);

on_b = (m + a*X)/K ;

b = (on_b % q);

W = (1 / b);

U_1 = (m*W);

U_2 = (a*W);

par_1 = Math.pow(G, U_1);

par_2 = Math.pow(Y, U_2);

on_V = ((par_1)*(par_2)) % P;

V = on_V % q;

trace(V);

on_par1 = 1;

on_par2 = 1;

on_V = 1;

on_G = 1;

on_Y = 1;

on_a = 1;

on_b = 1;

if(((b % 1) == 0) && (a > 5) && (b > 5) && (a != b) && ((V % 1) == 0) && (a == V))

{

break;

}}

Следующей частью кода я вывожу электронную цифровую подпись в интерфейс.

podpis.P_znach.text = String(P);

proverka.P_znach.text = String(P);

podpis.G_znach.text = String(G);

proverka.G_znach.text = String(G);

podpis.q_znach.text = String(q);

proverka.q_znach.text = String(q);

podpis.X_znach.text = String(X);

podpis.Y_znach.text = String(Y);

proverka.Y_znach.text = String(Y);

podpis.K_znach.text = String(K);

podpis.a_znach.text = String(a);

proverka.a_znach.text = String(a);

podpis.b_znach.text = String(b);

proverka.b_znach.text = String(b);

Далее я реализовал режим проверки подлинности цифровой подписи:

function on_pr(e:MouseEvent):void

{

//РЕЖИМ ПРОВЕРКИ ПОДПИСИ

//ПРИНЯТИЕ ПАРАМЕТРОВ

P = Number(proverka.P_znach.text);

G = Number(proverka.G_znach.text);

q = Number(proverka.q_znach.text);

Y = Number(proverka.Y_znach.text);

a = Number(proverka.a_znach.text);

b = Number(proverka.b_znach.text);

//ВЫЧИСЛЕНИЕ ПАРАМЕТРОВ  ДЛЯ ПРОВЕРКИ

W = (1 / b);

U_1 = (m*W);

U_2 = (a*W);

par_1 = Math.pow(G, U_1);

par_2 = Math.pow(Y, U_2);

on_V = ((par_1)*(par_2)) % P;

V = on_V % q;

on_par1 = 1;

on_par2 = 1;

on_V = 1;

//ВЫВОД В ИНТЕРФЕЙС

proverka.U_1_znach.text = String(U_1);

proverka.U_2_znach.text = String(U_2);

proverka.V_znach.text = String(V);


4. РЕЗУЛЬТАТЫ

    1. Интерфейс программы реализующей ЭЦП по ЕGSА

Интерфейс моей программы состоит из трёх основных режимов работы: хеширования сообщения, формирования подписи и проверки подписи.

Рисунок 4.1.1 – Интерфейс программы реализующей ЭЦП по ЕGSА

    1. Интерфейс программы реализующей ЭЦП по DSS/DSA

Интерфейс моей программы состоит из трёх основных режимов работы: хеширования сообщения, формирования подписи и проверки подписи.

Рисунок 4.2.1 – Интерфейс программы реализующей ЭЦП по DSS/DSA

ВЫВОДЫ

Научно-техническая революция в последнее время приняла грандиозные масштабы в области информатизации общества на базе современных средств вычислительной техники, связи, а также современных методов автоматизированной обработки информации. Применение этих средств и методов приняло всеобщий характер, а создаваемые при этом информационно-вычислительные системы и сети становятся глобальными как в смысле территориальной распределенности, так и в смысле широты охвата в рамках единых технологий процессов сбора, передачи, накопления, хранения, поиска, переработки информации и выдачи ее для использования.

Информация в современном обществе – одна из самых ценных вещей в жизни, требующая защиты от несанкционированного проникновения лиц, не имеющих к ней доступа.

Электронная цифровая подпись - эффективное решение для всех, кто хочет идти в ногу с новыми требованием времени. Если у Вас нет времени ждать прихода фельдъегерской или курьерской почты за многие сотни километров, чтобы проверить подтвердить заключение сделки или подлинность полученной информации. Преимущества ЭЦП очевидны - документы, подписанные электронной цифровой подписью, могут быть переданы к месту назначения в течение нескольких секунд. Все участники электронного обмена документами получают равные возможности независимо от их удаленности друг от друга. Границы благодаря новым технологиям стираются в 21 веке.

Подделать ЭЦП невозможно – для этого требуется огромного количества вычислений, которые не могут быть реализованы при современном уровне вычислительной техники и математики за приемлемое время, то есть пока информация, содержащаяся в подписанном документе, сохраняет актуальность.

 

ИСТОЧНИКИ ДАННЫХ

  1. Беляев А.В. "Методы и средства защиты информации".
  2. Баричев С.Г.   Основы современной криптографии –  Москва,  Горячая линия – Телеком, 2001.
  3. Петров А.А. Компьютерная безопасность. Криптографические   методы защиты. ДМК Москва, 2000 г.
  4. Столлингс В. Криптография и защита сетей: теория и практика. М: Вильямс. 2001.
  5. Терехов А.Н. "Программирование РАН", N 5 (сентябрь-октябрь), 1994, стр. 17--22 .
  6. Криптографические алгоритмы с открытым ключом (http://argosoft.webservis.ru/Base/RSAintro.html#Криптографические алгоритмы с открытым ключом)
  7. Криптография (http://www.citforum.ru/internet/securities/crypto.shtml)
  8. Современные криптографические методы защиты информации                     ( http://ppt.newmail.ru/crypto04.htm#Heading20)

 

 


Информация о работе Электронная цифровая подпись