Электронная цифровая подпись
Курсовая работа, 26 Ноября 2014, автор: пользователь скрыл имя
Краткое описание
Проблема защиты информации путем ее преобразования, исключающего ее прочтение посторонним лицом волновала, человеческий ум с давних времен. История криптографии - ровесница истории человеческого языка. Более того, первоначально письменность сама по себе была криптографической системой, так как в древних обществах ею владели только избранные. Священные книги Древнего Египта, Древней Индии тому примеры.
Содержание
ВСТУПЛЕНИЕ……………………………………………………………….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. РЕЗУЛЬТАТЫ
- Интерфейс программы реализующей ЭЦП по Е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#Криптографи ческие алгоритмы с открытым ключом) - Криптография (http://www.citforum.ru/
internet/securities/crypto. shtml) - Современные криптографические
методы защиты информации ( http://ppt.newmail.ru/
crypto04.htm#Heading20)