Курсовая работа (т): Электронная цифровая подпись

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

var osn:Number = 0;M:String;arr_o:Array = new Array();_hesh.addEventListener(MouseEvent.CLICK, get_hesh)get_hesh(e:MouseEvent):void

{= otkritii.text;(var ind_1:Number = 0; ind_1 < M.length; ind_1++)

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

//РЕАЛИЗАЦИЯ ФУНКЦИИ ХЕШИРОВАНИЯ(var ind_2:Number = 0; ind_2 < M.length; ind_2++)

{ arr_o.pop(); }

}

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

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

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

{

//ГЕНЕРАЦИЯ ПАРАМЕТРОВ P И G= Math.floor(Math.random()*330);= prostie_chisla[ind];_1 = (P - 1);_2 = (P - 3);pre_3:Number = 0;pre_4:Number = 0;( G = 1; G < P - 1; G++)

{(var i_on1:Number = 0; i_on1 < (P - 1); i_on1++)

{_G1 = on_G1 * G;_G1 = on_G1 % P;

}( on_G1 == 1)

{_3 = 1;

}( on_G1 != 1)

{_3 = 0;

}_G1 = 1;(var l:Number = 1; l < P - 2; l++)

{(var i_on2:Number = 0; i_on2 < l; i_on2++)

{_G2 = on_G2 * G;_G2 = on_G2 % P;

}( on_G2 == 1)

{_4 = 0;;

}( on_G2 != 1)

{_4 = 1;

}_G2 = 1;

}( pre_3 == 1 && pre_4 == 1)

{;

}

}

//ГЕНЕРАЦИЯ X И К И ВЫЧИСЛЕНИЕ Y

X = Math.floor(Math.random()*gua_2) + 2;(var i_Y:Number = 0; i_Y < X; i_Y++)

{_Y = on_Y * G;_Y = on_Y % P;

}= on_Y % P;(var l_1:Number = 1; l_1 > 0; l_1++)

{= Math.floor(Math.random()*gua_2) + 2;_a = P - 1;_b = K;(var l_2:Number = 1; l_2 > 0; l_2++)

{((nod_a != 0) || (nod_b != 0))

{(nod_a > nod_b)

{_a = nod_a % nod_b;

}nod_b = nod_b % nod_a;

}((nod_a == 0) || (nod_b == 0))

{= nod_a + nod_b;

break;

}

}(nod == 1)

{;

}}

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

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

{_a = on_a * G;_a = on_a % P;

}= on_a % P;(var b:Number = 1; b > 0; b++)

{_b1 = X*a + K*b;_b2 = on_b1 % (P - 1);(m == on_b2)

{;

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

{_par1 = on_par1 * Y;_par1 = on_par1 % P;

}_1 = on_par1 % P;(var i_par2:Number = 0; i_par2 < b; i_par2++)

{_par2 = on_par2 * a;_par2 = on_par2 % P;

}_2 = on_par2 % P;

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

on_A1 = par_1*par_2;_1 = on_A1 % P;(var i_A2:Number = 0; i_A2 < m; i_A2++)

{_A2 = on_A2 * G;_A2 = on_A2 % P;

}_2 = on_A2;(b < 0)

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

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

{;

}_a = 1;_Y = 1;_par1 = 1;

on_par2 = 1;_A2 = 1;}

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

function on_pr(e:MouseEvent):void

{

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

//ПРИНЯТИЕ ПАРАМЕТРОВ= Number(proverka.P_znach.text);

G = Number(proverka.G_znach.text);= Number(proverka.Y_znach.text);= Number(proverka.a_znach.text);= Number(proverka.b_znach.text);(P + " " + G + " " + Y + " " + a + " " + b);(var i_par1:Number = 0; i_par1 < a; i_par1++)

{_par1 = on_par1 * Y;_par1 = on_par1 % P;

}_1 = on_par1 % P;(var i_par2:Number = 0; i_par2 < b; i_par2++)

{_par2 = on_par2 * a;_par2 = on_par2 % P;

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

on_A1 = par_1*par_2;_1 = on_A1 % P;(var i_A2:Number = 0; i_A2 < m; i_A2++)

{_A2 = on_A2 * G;_A2 = on_A2 % P;

}_2 = on_A2;

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

proverka.A_1_znach.text = String(A_1);.A_2_znach.text = String(A_2);

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

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

var osn:Number = 0;M:String;arr_o:Array = new Array();_hesh.addEventListener(MouseEvent.CLICK, get_hesh)get_hesh(e:MouseEvent):void

{

//ВЗЯТИЕ ТЕКСТА ДЛЯ ХЕША= otkritii.text;

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

{ _o.push(M.charCodeAt(ind_1));

}

//ХЕШИРОВАНИЕ(var ind_2:Number = 0; ind_2 < M.length; ind_2++)

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

}.text = String(m);(var ind_3:Number = 0; ind_3 < M.length; ind_3++)

{ _o.pop();

}

}

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

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

{

//РЕЖИМ ПОДПИСИ(var gli:Number = 1; gli > 0; gli++)

{

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

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

{= Math.floor(Math.random()*330);= prostie_chisla[ind];_1 = (P - 3);= Math.floor(Math.random()*20);= prostie_chisla2[kon]((P - 1) % q == 0)

{(P + " " + q);_2 = (q - 3);;

}

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

{= Math.floor(Math.random()*gua_1) + 2;(var i_on1:Number = 0; i_on1 < ((P - 1)/q); i_on1++)

{_G = on_G * h;_G = on_G % P;

}= on_G;(G > 1)

{(G);

break;

}}

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

X = Math.floor(Math.random()*gua_2) + 2;(var i_on1:Number = 0; i_on1 < X; i_on1++)

{_Y = on_Y * G;_Y = on_Y % P;

}= on_Y;= Math.floor(Math.random()*gua_2) + 3;(var i_on1:Number = 0; i_on1 < K; i_on1++)

{_a = on_a * G;_a = on_a % P;

}= (on_a % q);(a);_b = (m + a*X)/K ;= (on_b % q);= (1 / b);_1 = (m*W);_2 = (a*W);_1 = Math.pow(G, U_1);_2 = Math.pow(Y, U_2);_V = ((par_1)*(par_2)) % P;= on_V % q;(V);_par1 = 1;_par2 = 1;_V = 1;_G = 1;_Y = 1;_a = 1;_b = 1;(((b % 1) == 0) && (a > 5) && (b > 5) && (a != b) && ((V % 1) == 0) && (a == V))

{;

}}

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

podpis.P_znach.text = String(P);.P_znach.text = String(P);.G_znach.text = String(G);.G_znach.text = String(G);.q_znach.text = String(q);.q_znach.text = String(q);.X_znach.text = String(X);.Y_znach.text = String(Y);.Y_znach.text = String(Y);.K_znach.text = String(K);.a_znach.text = String(a);.a_znach.text = String(a);.b_znach.text = String(b);.b_znach.text = String(b);

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

function on_pr(e:MouseEvent):void

{

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

//ПРИНЯТИЕ ПАРАМЕТРОВ= Number(proverka.P_znach.text);

G = Number(proverka.G_znach.text);= Number(proverka.q_znach.text);= Number(proverka.Y_znach.text);= Number(proverka.a_znach.text);= Number(proverka.b_znach.text);

//ВЫЧИСЛЕНИЕ ПАРАМЕТРОВ ДЛЯ ПРОВЕРКИ= (1 / b);

U_1 = (m*W);_2 = (a*W);_1 = Math.pow(G, U_1);_2 = Math.pow(Y, U_2);_V = ((par_1)*(par_2)) % P;= on_V % q;_par1 = 1;

on_par2 = 1;_V = 1;

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

proverka.U_1_znach.text = String(U_1);.U_2_znach.text = String(U_2);.V_znach.text = String(V);

}

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

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

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

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

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

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

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

ВЫВОДЫ

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

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

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

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

Беляев А.В. "Методы и средства защиты информации".

Баричев С.Г. Основы современной криптографии - Москва, Горячая линия - Телеком, 2001.

Петров А.А. Компьютерная безопасность. Криптографические методы защиты. ДМК Москва, 2000 г.

Столлингс В. Криптография и защита сетей: теория и практика. М: Вильямс. 2001.

Терехов А.Н. "Программирование РАН", N 5 (сентябрь-октябрь), 1994, стр. 17--22 .

Криптографические алгоритмы с открытым ключом (http://argosoft.webservis.ru/Base/RSAintro.html#Криптографические алгоритмы с открытым ключом)

Источник: https://www.bibliofond.ru/detail.aspx?id=786966