Нуралиев Д.С.
Евразийский Национальный университет им.
Л.Н.Гумилева, Казахстан
Использование алгоритма ECDSA
"Стойкость криптосистем, основанных
на эллиптических кривых, недостаточно изучена, во многом из-за переусложненного
взгляда на природу самих эллиптических кривых. Очень немногие криптографы
понимают, что такое эллиптические кривые, поэтому, в отличие от RSA, нет
широкого понимания и консенсуса относительно стойкости, обеспечиваемой их
использованием при шифровании. Со временем ситуация может измениться, но сейчас
получить оценку стойкости криптосистемы, основанной на эллиптических кривых, -
все равно что получить оценку недавно обнаруженной древневавилонской
поэзии"
Рональд Ривест, создатель RSA,
комментарии к предлагаемому стандарту
FIPS, 1997
Немного истории
В
недавно начавшемся XXI веке системы телекоммуникации и обработки цифровой
информации играют все более и более значительную роль в различных видах
деятельности человека. Они уже сейчас исключительно важны для нормального
существования целых государств. В указанных условиях проблема защиты
телекоммуникационных систем и систем обработки информации от внешних
воздействий, имеющих целью внести искажения в их работу, приобретает не просто
важное, а критическое значение - от нее зависит безопасность и само выживание
людей.
Одним
из ключевых инструментов защиты информационных систем является криптография. Ее
сущность заключается в использовании преобразований информации, доступных
законным сторонам информационного цикла и недоступных всем остальным. В отличие
от множественных других подходов стойкость криптографических методов защиты
может быть надежно обоснована, а в отдельных случаях и формально доказана
теоретико-информационными методами.
ECDSA
(Elliptic Curve Digital Signature Algorithm) — алгоритм с открытым ключом для создания цифровой подписи, аналогичный по своему
строению DSA, но определённый в отличие от него не над полем целых чисел, а в группе точек эллиптической кривой.
Стойкость
алгоритма шифрования основывается на проблеме дискретного логарифма в группе
точек эллиптической кривой. В отличие от проблемы простого дискретного
логарифма и проблемы факторизации целого числа, не существует
суб-экспонециального алгоритма для проблемы дискретного логарифма в группе
точек эллиптической кривой. По этой причине «сила на один бит ключа»
существеннее выше в алгоритме, который использует эллиптические кривые. Алгоритм
ECDSA в 1999 г. был принят, как стандарт ANSI, в 2000 г. — как стандарт IEEE и
NIST. Также в 1998 г. алгоритм был принят стандартом ISO. Несмотря на то, что
стандарты ЭЦП созданы совсем недавно и находятся на этапе совершенствования,
одним наиболее перспективных из них на сегодняшний день является ANSI X9.62
ECDSA от 1999 — DSA для эллиптических кривых.
Практическая реализация
На сегодняшний день
реализация электронных цифровых подписей осуществляются программным образом.
Для создания подобных продуктов используют специальные программные пакеты,
позволяющие создавать криптографические приложения с использованием различных
внешних устройств безопасности.
Свою реализацию я
выполнил в среде Microsoft Visual Studio 2008, язык
программирования - C#. В платформе .NET имеется много библиотеки по криптографии. Нас же интересует именно
ECDsa и ECDsaCng классы, которые находятся в пространство имен - System.Security.Cryptography.
(Предоставляет криптографические службы, включающие безопасное кодирование и
декодирование данных, а также целый ряд других функций, таких как хэширование, генерация
случайных чисел и проверка подлинности сообщений.)
ECDsa - Предоставляет абстрактный базовый класс, инкапсулирующий алгоритм
цифровой подписи DSA на эллиптических кривых.
ECDsaCng - Обеспечивает реализацию CNG алгоритма цифровой подписи DSA на эллиптических
кривых.
В среде Visual Studio можно увидеть параметры и артибуты класса ECDsaCng. (см. Рис.1.)
Рис.1.
Самый обычный пример
использование алгоритма с открытым ключом для создания цифровой подписи представлен ниже:
byte[] data = Encoding.Default.GetBytes("Encrypted text");
ECDsaCng
ecDsaCng = new ECDsaCng();
byte[]
sign = ecDsaCng.SignData(data);
MessageBox.Show(Convert.ToBase64String(sign));
После того как мы
запустим нашу программу в компиляцию, можно получить цифровую подпись ECDsa:
Рис.2.
Литература:
1. Библиотека MSDN Library for Visual Studio 2008
2.
D. Brown Generic groups, collision resistance, and ECDSA. «Codes and Cryptography»