Криптосистема Эль-Гамаля
Автор: Петрушенко Анастасия Александровна
Рубрика: 1. Информатика и кибернетика
Опубликовано в
V международная научная конференция «Технические науки в России и за рубежом» (Москва, январь 2016)
Дата публикации: 04.12.2015
Статья просмотрена: 2393 раза
Библиографическое описание:
Петрушенко, А. А. Криптосистема Эль-Гамаля / А. А. Петрушенко. — Текст : непосредственный // Технические науки в России и за рубежом : материалы V Междунар. науч. конф. (г. Москва, январь 2016 г.). — Москва : Буки-Веди, 2016. — С. 8-10. — URL: https://moluch.ru/conf/tech/archive/164/9306/ (дата обращения: 16.12.2024).
Криптосистему Эль-Гамаля используют для того, чтоб сформировать электронную подпись, или для шифровки данных. В данной статье рассмотрены идея этого метода шифрования, описание алгоритма.
Ключевые слова: криптосистема Эль-Гамаля, шифр, схема, шифрование, дешифрование, алгоритм, открытый ключ, закрытый ключ.
Криптосистема Эль-Гамаля — это шифрование с открытым ключом, которая базируется на свойствах дискретного логарифма. Непосредственное ее преимущество над алгоритмом RSA в том, что в RSA есть возможность подделать цифровую подпись под некоторыми сообщениями, без определения секретного ключа, когда в методе шифрования Эль-Гамаля такая возможность отсутствует.
Шифр Эль-Гамаля лежит в основе бывших стандартов электронной цифровой подписи в США (DSA) и России (ГОСТ Р 34.10–94).
Идея метода шифрования
Основная идея метода шифрования Эль-Гамаля заключается в том, что эффективного метода сравнивания ax==b (modp) не существует.
Обозначим через Z(n) вычеты по модулю n, через Z*(n)- мультипликативную группу обратимых элементов в Z(n), ab(modn) — возведение в степень b, принадлежащих Z(n).
Допустим, числа p и 2p+1 являются простыми, p>2, v — образующая мультипликативная группа Z*(p), а w — Z*(2p+1).
Лемма: если v — образующая Z*(p), то v0=(p+(p+1) v)(mod 2p) — образующая мультипликативная группа Z*(2p). А эта группа изоморфна Z*(p), поскольку если p является простым числом, то группа Z*(p) изоморфна Z(p-1).
Описание алгоритма
Для генерации пары ключей следует выбрать простое число p:
{ bool check = true;
if ((num % 10) % 2 == 0 && num!= 2)
{ TxtResult.Text = _mesNo;
return;}
BigInteger sqrtnum = Sqrt(num);
int del = 3;
while (del <= sqrtnum)
{ if (num % del == 0)
{ TxtResult.Text = _mesNo;
return;}
del += 2;}}
TxtResult.Text = _mesYes;
}static BigInteger Sqrt(BigInteger n)
{BigInteger x = n, y = n;
do{
y = x;
x = (y + (n / y)) / 2; }
while (y > x);
returnx; }
Листинг 1. Проверка на простое число p
Затем нужно выбрать два случайных числа g и x, которые строго меньше p: (g < p, x < p)
{ Random random = new Random();
k = random.Next(0, 10000);
if (GetNOD(k, p — 1) == 1)
{ g = random.Next(0, (int)p);
x = random.Next(0, (int)p);
break;}
Листинг 2. Задание двух случайных элементов q и x.
Далее нужно получить значение y из выражения: y = g xmodp.
ReturnValue ret = new ReturnValue();
num1 = BigInteger.Abs(num1);
num2 = BigInteger.Abs(num2);
BigInteger i = num2, x = 0, y = 1;
while (num1 > 0)
{ BigInteger q = i / num1, x1 = num1;
num1 = i % x1;
i = x1;
x1 = y;
y = x — q * x1;
x = x1;}
x %= num2;
if (x < 0) x = (x + num2) % num2;
ret.SetValue(x);
if (x!= 1)
{ ret.SetGetBoolValue(true);}
else
{ ret.SetGetBoolValue(false);}
returnret;
Листинг 3. Получение значения y.
Тройка чисел (y, g, p) является открытым ключом, причем g и p можно сделать общими для группы пользователей, х в свою очередь является закрытым ключом.
Для того, чтобы подписать сообщение M, вначале нужно выбирать случайное число k, так что бы НОД (k, p — 1) = 1
num1 = BigInteger.Abs(num1);
num2 = BigInteger.Abs(num2);
if (num1 * num2 == 0 {
return 1;}
while (num1!= num2)
{ if (num1 > num2)
{ num1 -= num2;}
else
{ num2 -= num1;}}
return num1;
Листинг 4. Выбор случайного значения k.
Значение k в дальнейшем сохраняется в секрете. Далее вычисляется значение a из выражения a = g kmodp.
Следом для нахождения b помощью расширенного метода Евклида решается уравнение: M = (xa + kb) mod (p — 1).
Подписью является пара чисел (a, b). Для того, чтоб убедиться в ее верности, необходимо проверить справедливость следующего равенства:
y a * ab mod p = g M mod p.
for (int i = 0; i < M.Length; i++)
{ if (((BigInteger.ModPow(y, a, p) * BigInteger.ModPow(a, b [i], p)) % p) == (BigInteger.ModPow(g, M [i], p)))
{ res.SetCheckValue(BigInteger.ModPow(g, M [i], p)); }
else
{ res.SetCheckValue(0);
break;}}
Листинг 5. Верно ли равенство.
Для каждой процедуры подписания необходимо новое значение k, которое выбирается случайным образом. Компрометация значения k дает возможность по перехваченным значениям M, a и b восстановить за полиномиальное время значение секретного ключа x.
Рис. 1. Пример шифрования цифровой подписью Эль-Гамаля
Заключение
В качестве иллюстрации к статье можно привести пример шифрования методом Эль-Гамаля (Рисунок 1).
Следует добавить, алгоритм Эль-Гамаля является криптосистемой с открытым ключом, которые в настоящее время считаются наиболее эффективными.
Литература:
- С. Бабичев. Криптография без секретов. 2012
- С. Сингх. Книга шифров. Тайно истории шифров и их расшифровки. М.: Аст, Астрель, 2006. 447 с.
- Б. А. Фороузан. Схема цифровой подписи Эль-Гамаля. Управления ключами шифрования безопасности и безопасности сети.
Ключевые слова
алгоритм, схема, шифрование, шифр, шифрование, дешифрование, криптосистема Эль-Гамаля, открытый ключ, закрытый ключПохожие статьи
Реализация Windows-приложения, выполняющего шифрование и дешифрование текста шифрами Цезаря и Хилла
В данной статье разобраны алгоритмы шифрования и дешифрования текста шифром Цезаря и шифром Хилла, а также описывается Windows-приложение, реализующее данные алгоритмы.
Создание криптографии с помощью модулярной математики
В данной статье рассматриваются основы криптографии, а также модулярной арифметики, которые легли в основу многих шифров. Особое место в криптографии занимает шифр Цезаря, который также строится на основах модулярной арифметики. Изучив механизм постр...
Обзор и применение квантового алгоритма Шора в дешифровании в системах криптографии, основанных на эллиптических кривых
В данной работе рассмотрен метод дешифрования систем, основанных на эллиптических кривых — квантовый алгоритм Шора.
Способ хранения закрытого ключа криптосистемы цифровой подписи
Предложен способ хранения закрытого ключа криптосистемы цифровой подписи. Детально описана идея способа, аргументированно выбраны алгоритмы работы. Предложены разные варианты.
На страже информации. Криптография
В статье автор доказывает возможность защиты информации с помощью криптографии. Он осуществляет шифрование открытого сообщения двумя разными алгоритмами, используя шифровальные устройства. Один алгоритм — известный, другой алгоритм — самостоятельно р...
Шифр Double
В статье авторы приводят алгоритм шифрования шифром «Double», созданного на основе 2-х симметричных шифров, и его исследование на криптостойкость.
Реализация Windows-приложения, выполняющего шифрование по правилам криптосистемы RSA
В данной статье разработан алгоритм шифрования по правилам криптосистемы RSA, а также описывается Windows-приложение, реализующее данный алгоритм.
Особенности проектирования и криптоанализа асимметричной криптографической системы RSA
В данной статье рассматриваются некоторые особенности проектирования асимметричной (открытой) криптосистемы RSA, проводится обзор тестов на принадлежность классу простых чисел, а также рассматривается выбор показателей степеней чисел при кодировании....
Роль больших простых чисел в современной криптографии
В этой статье проанализирована роль больших простых чисел в современной криптографии, вычисление количества простых чисел в заданном диапазоне, методы проверки числа на простоту и принцип использования таблиц простых чисел.
Обзор поточного шифра А5/2
В данной статье авторы стремятся исследовать поточное шифрование и шифр A5/2 с целью анализа их применения в современных информационных системах. Статья описывает алгоритм шифрования A5/2, который был разработан в результате международных переговоро...
Похожие статьи
Реализация Windows-приложения, выполняющего шифрование и дешифрование текста шифрами Цезаря и Хилла
В данной статье разобраны алгоритмы шифрования и дешифрования текста шифром Цезаря и шифром Хилла, а также описывается Windows-приложение, реализующее данные алгоритмы.
Создание криптографии с помощью модулярной математики
В данной статье рассматриваются основы криптографии, а также модулярной арифметики, которые легли в основу многих шифров. Особое место в криптографии занимает шифр Цезаря, который также строится на основах модулярной арифметики. Изучив механизм постр...
Обзор и применение квантового алгоритма Шора в дешифровании в системах криптографии, основанных на эллиптических кривых
В данной работе рассмотрен метод дешифрования систем, основанных на эллиптических кривых — квантовый алгоритм Шора.
Способ хранения закрытого ключа криптосистемы цифровой подписи
Предложен способ хранения закрытого ключа криптосистемы цифровой подписи. Детально описана идея способа, аргументированно выбраны алгоритмы работы. Предложены разные варианты.
На страже информации. Криптография
В статье автор доказывает возможность защиты информации с помощью криптографии. Он осуществляет шифрование открытого сообщения двумя разными алгоритмами, используя шифровальные устройства. Один алгоритм — известный, другой алгоритм — самостоятельно р...
Шифр Double
В статье авторы приводят алгоритм шифрования шифром «Double», созданного на основе 2-х симметричных шифров, и его исследование на криптостойкость.
Реализация Windows-приложения, выполняющего шифрование по правилам криптосистемы RSA
В данной статье разработан алгоритм шифрования по правилам криптосистемы RSA, а также описывается Windows-приложение, реализующее данный алгоритм.
Особенности проектирования и криптоанализа асимметричной криптографической системы RSA
В данной статье рассматриваются некоторые особенности проектирования асимметричной (открытой) криптосистемы RSA, проводится обзор тестов на принадлежность классу простых чисел, а также рассматривается выбор показателей степеней чисел при кодировании....
Роль больших простых чисел в современной криптографии
В этой статье проанализирована роль больших простых чисел в современной криптографии, вычисление количества простых чисел в заданном диапазоне, методы проверки числа на простоту и принцип использования таблиц простых чисел.
Обзор поточного шифра А5/2
В данной статье авторы стремятся исследовать поточное шифрование и шифр A5/2 с целью анализа их применения в современных информационных системах. Статья описывает алгоритм шифрования A5/2, который был разработан в результате международных переговоро...