Алгоритм ассиметричного шифрования ECES
В алгоритме ECES (Elliptic Curve Encryption Scheme) сначала должны быть определены следующие параметры, являющиеся открытой информацией, общей для пользователей системы:
¨ конечное поле Fq;
¨ эллиптическая кривая E(Fq);
¨ большой простой делитель количества точек кривой п;
¨ точка Р, координаты которой должны иметь тот же порядок, что и число n.
Каждый пользователь системы генерирует пару ключей следующим образом:
¨ выбирается случайное целое число d, 1 < d < n – 1;
¨ вычисляется точка Q = dP.
Секретным ключом пользователя является число d, открытым ключом – точка Q.
Зашифрование сообщения (пользователь А шифрует сообщение М для пользевателя В):
¨ сообщение разбивается на блоки Мi, которые определенным образом дополняются слева (длина каждого блока равна 2L - 16 бит, где L равно ближайшему большему целому от );
¨ полученный блок разбивается на две части равной длины: тi1 и тi2; ¨ выбирается случайное целое число k, 1 < k < n - 1;
¨ вычисляется точка ;
¨ вычисляется точка ;
¨ с помощью определенного преобразования из mi1, mi2и х2 получают с1 и с2;
¨ зашифрованные данные: .
Расшифрование сообщения (пользователь В расшифровывает полученное оn пользователя А зашифрованное сообщение):
¨ вычисляется точка ;
¨ восстанавливается исходное сообщение тi1, тi2из c1, c2 и х2.
Функции хэширования
Функция хэширования (хэш-функция) представляет собой преобразование, на вход которого подается сообщение переменной длины М, а выходом является строка фиксированной длины h(M). Иначе говоря, хэш-функция принимает в качестве аргумента сообщение (документ) М произвольной длины и возвращает хэш-значение (хэш) фиксированной длины (рис. 4.19).
Рис. 4.19. Схема формирования хэша
Хэш-значение h(M) – это дайджест сообщения М, то есть сжатое двоичное представление основного сообщения М произвольной длины. Хэш-значение h(M) формируется функцией хэширования.
Функция хэширования позволяет сжать подписываемый документ М до 128 и более битов (в частности, 128 или 256 бит), тогда как М может быть размером d Мегабайт или более. Следует отметить, что значение хэш-функции h(M) зависит сложным образом от документа М и не позволяет восстановить сам документ М.
Функция хэширования должна обладать следующими свойствами:
1. Хэш-функция может быть применена к аргументу любого размера.
2. Выходное значение хэш-функции имеет фиксированный размер.
3. Хэш-функцию h(x) достаточно просто вычислить для любого х. Скорость вычисления хэш-функции должна быть такой, чтобы скорость выработки и проверки ЭЦП при использовании хэш-функции была значительно больше, чем при использовании самого сообщения.
4. Хэш-функция должна быть чувствительна к всевозможным изменениям в тексте М, таким как вставки, удаления, перестановки и т.п.
5. Хэш-функция должна быть однонаправленной, то есть обладать свойством необратимости; иными словами, задача подбора документа М', который обладал бы требуемым значением хэш-функции, должна быть вычислительно неразрешима.
6. Вероятность того, что значения хэш-функции двух различных документов (вне зависимости от их длин) совпадут, должна быть ничтожно мала; то есть для любого фиксированного х с вычислительной точки зрения невозможно найти , такое что .
Теоретически возможно, что два различных сообщения могут быть сжаты в одну и ту же свертку (так называемая коллизия, или столкновение). Поэтому для обеспечения стойкости функции хэширования необходимо предусмотреть способ избегать столкновений. Полностью столкновений избежать нельзя, поскольку в общем случае количество возможных сообщений превышает количество возможных выходных значений функции хэширования. Однако вероятность столкновения должна быть низкой.
Функция хэширования может использоваться для обнаружения изменений сообщения, то есть она может служить для формирования криптографической контрольной суммы (кодом аутентификации сообщения). В этом качестве хэш-функция используется для контроля целостности сообщения, при формировании и проверке электронной цифровой подписи.
Хэш-функции широко используются также для аутентификации пользователей. В ряде технологий информационной безопасности применяется своеобразный прием шифрования – шифрование с помощью односторонней хэш-функции. Своеобразие этого шифрования заключается в том, что оно, по существу, является односторонним, то есть не сопровождается обратной процедурой – расшифрованием на приемной стороне. Обе стороны (отправитель и получатель) используют одну и ту же процедуру одностороннего шифрования на основе хэш-функции.
Широко применяются следующие функции хэширования:
¨ отечественный стандарт ГОСТ Р34.11-94. Вычисляет хэш размером 256 бит;
¨ MD (Message Digest) – ряд алгоритмов хэширования, наиболее распространенных в мире. Каждый из них вырабатывает 128-битный хэш-код. Алгоритм MD2 – самый медленный из них, MD4 – самый быстрый. Алгоритм MD5 является модификацией MD4, при которой пожертвовали скоростью ради увеличения безопасности. Алгоритм MD5 применяется в последних версиях Microsoft Windows для преобразования пароля пользователя в 16-байтное число;
¨ SHA-1 (Secure Hash Algorithm Version 1) – алгоритм вычисления дайджеста сообщений, вырабатывающий 160-битный хэш-код входных данных; широко распространен в мире, используется во многих сетевых протоколах защиты информации;
¨ SHA-2 (Secure Hash Algorithm Version 2) – безопасный алгоритм хэширования версии 2, представляющий собой семейство более стойких хеш-функций SHA-224, SHA-256, SHA-384 и SHA-512 с длинами хэша соответственно 224, 256, 384 и 512 бит. Алгоритмы семейства SHA-2 работают в 2÷3 раза медленнее популярных хэш-алгоритмов MD5 и SHA-1.