Отечественный стандарт цифровой подписи ГОСТ Р 34.10-2001
Отечественный стандарт цифровой подписи ГОСТ Р 34.10-2001 был принят 2001 году. Этот стандарт разработан взамен первого стандарта цифровой подписи ГОСТ Р 34.10-94. Необходимость разработки стандарта ГОСТ Р 34.10-2001 вызвана потребностью в повышении стойкости электронной цифровой подписи к несанкционированным изменениям. Стойкость ЭЦП основывается на сложности вычисления дискретного логарифма в группе точек эллиптической кривой, а так же на стойкости используемой хэш-функции по ГОСТ Р 34.11.
Принципиальное отличие нового стандарта от предыдущего ГОСТ Р 34.10-94 состоит в том, что все вычисления при генерации и проверке ЭЦП в новом алгоритме производятся в группе точек эллиптической кривой, определенной над конечным полем Fp.
Принадлежность точки (пары чисел х и у) к данной группе определяется следующим соотношением:
, (4.33)
где модуль системы р является простым числом, большим 3, а а и b являются константами, удовлетворяющими следующим соотношениям: a, b Î Fp и не сравнимо с нулем по модулю р.
Принципы вычислений по данному алгоритму схожи с предшествующим отечественным стандартом ЭЦП: генерируется случайное число х, с его помощью вычисляется r-часть ЭЦП, затем вычисляются s-часть ЭЦП из r-части, х, значения секретного ключа и хэш-значения подписываемых данных. При проверке подписи аналогичным вышеописанному образом проверяется соответствие определенным соотношениям r, s, открытого ключа и хэш-значения информации, подпись которой проверяется. Подпись считается неверной, если соотношения не соблюдаются.
Обозначения. В данном стандарте использованы следующие обозначения:
V256 – множество всех двоичных векторов длиной 256 бит;
V¥ – множество всех двоичных векторов произвольной конечной длины;
Z – множество всех целых чисел;
р – простое число, р > 3;
Fp – конечное простое поле, представляемое как множество из р целых чисел {0, 1, ..., р-1};
b (mod р) – минимальное неотрицательное число, сравнимое с b по модулю р;
М – сообщение пользователя, М Î V¥;
– конкатенация (объединение) двух двоичных векторов;
a, b – коэффициенты эллиптической кривой;
т – порядок группы точек эллиптической кривой;
q – порядок подгруппы группы точек эллиптической кривой;
– нулевая точка эллиптической кривой;
Р – точка эллиптической кривой порядка q;
d – целое число – ключ подписи;
Q – точка эллиптической кривой – ключ проверки;
w – цифровая подпись под сообщением М.
Общие положения. Механизм цифровой подписи реализуется посредством двух основных процессов:
¨ формирование цифровой подписи;
¨ проверка цифровой подписи.
В процессе формирования цифровой подписи в качестве исходных данных используются сообщение М, ключ подписи d и параметры схемы ЭЦП, а в результате формируется цифровая подпись w.
Ключ подписи d является элементом секретных данных, специфичным для субъекта и используемым только данным субъектом в процессе формирования цифровой подписи.
Параметры схемы ЭЦП – элементы данных, общие для всех субъектов схемы цифровой подписи, известные или доступные всем этим субъектам.
Электронная цифровая подпись w представляет собой строку битов, полученную в результате процесса формирования подписи. Данная строка имеет внутреннюю структуру, зависящую от конкретного механизма формирования подписи.
В процессе проверки цифровой подписи в качестве исходных данных используются подписанное сообщение, ключ проверки Q и параметры схемы ЭЦП, а результатом проверки является заключение о правильности или ошибочности цифровой подписи.
Ключ проверки Q является элементом данных, математически связанным с ключом подписи d и используемым проверяющей стороной в процессе проверки цифровой подписи.
Схематическое представление подписанного сообщения показано на рис. 4.23.
Поле «Текст», показанное на рис. 4.23 и дополняющее поле «Цифровая подпись», может, например, содержать идентификаторы субъекта, подписавшего сообщение, и/или метку времени.
Установленная в данном стандарте схема цифровой подписи должна быть реализована с использованием операций группы точек эллиптической кривой, определенной над конечным простым полем, а также хэш-функции.
Рис. 4.23. Схема подписанного сообщения
Криптографическая стойкость данной схемы цифровой подписи основывается на сложности решения задачи дискретного логарифмирования в группе точек эллиптической кривой, а также на стойкости используемой хэш-функции. Алгоритм вычисления хэш-функции установлен в ГОСТ Р 34.11.
Цифровая подпись, представленная в виде двоичного вектора длиной 512 бит, должна вычисляется и проверяется с помощью определенных наборов правил:
¨ простое число р – модуль эллиптической кривой, р > 2255. Верхняя граница данного числа должна определяться при конкретной реализации схемы цифровой подписи;
¨ эллиптическая кривая Е, задаваемая своим инвариантом J(Е) или коэффициентами a, b Î Fp;
¨ целое число т – порядок группы точек эллиптической кривой Е.
¨ простое число q – порядок циклической подгруппы группы точек эллиптической кривой E, для которого выполнены следующие условия:
(4.33)
¨ точка эллиптической кривой Е с координатами (х, у ), удовлетворяющая равенству qP = 0;
¨ хэш-функция : , отображающая сообщения, представленные в виде двоичных векторов произвольной конечной длины, в двоичные векторы длиной 256 бит. Хэш-функция определена в ГОСТ Р 34.11.
Каждый пользователь схемы цифровой подписи должен обладать личными ключами:
¨ ключом подписи – целым числом d, удовлетворяющим неравенству ;
¨ ключом проверки – точкой эллиптической кривой Q с координатами , удовлетворяющей равенству dP = Q.
На параметры схемы цифровой подписи накладываются следующие требования:
¨ должно быть выполнено условие для всех целых t = 1, 2, ..., В, где В удовлетворяет неравенству В ≥ 31;
¨ должно быть выполнено неравенство ;
¨ инвариант кривой должен удовлетворять условию J(E) ≠ 0 или 1728.
Двоичные векторы. Для определения процессов формирования и проверки цифровой подписи необходимо установить соответствие между целыми числами и двоичными векторами длиной 256 бит.
Рассмотрим следующий двоичный вектор длиной 256 бит, в котором младшие биты расположены справа, а старшие – слева:
, (4.34)
где , i = 0 ÷ 256, равно либо 1, либо 0. Будем считать, что число соответствует двоичному вектору , если выполнено равенство
, (4.35)
Для двух двоичных векторов и , соответствующибх целым числам a и b, определим операцию конкатенации (объединения) следующим образом. Пусть
, (4.36)
, (4.37)
тогда их объединение имеет вид
(4.38)
и представляет собой двоичный вектор длиной 512 бит, составленный из коэффициентов векторов и .
Основные процессы. Для реализации процессов формирования и проверки электронной цифровой подписи под сообщением пользователя необходимо, чтобы всем пользователям были известны параметры схемы цифровой подписи, удовлетворяющие приведенным выше требованиям.
Кроме того, каждому пользователю необходимо иметь ключ подписи d и ключ проверки подписи , которые также должны удовлетворять приведенным выше требованиям.
Формирование цифровой подписи. Для получения цифровой подписи под сообщением необходимо выполнить следующие действия.
Шаг 1. Вычислить хэш-код сообщения М: .
Шаг 2. Вычислить целое число a, двоичным представлением которого является вектор , и определить значение . Если е = 0, то определить е = 1.
Шаг 3. Сгенерировать случайное (псевдослучайное) целое число k, удовлетворяющее неравенству 0 < k < q.
Шаг 4. Вычислить точку эллиптической кривой С = kP и определить , где – координата точки С. Если r = 0, то вернуться к шагу 3.
Шаг 5. Вычислить значение . Если s = 0, то вернуться к шагу 3.
Шаг 6. Вычислить двоичные векторы и , соответствующие r и s, и определить цифровую подпись как конкатенацию двух двоичных векторов.
Исходными данными этого процесса являются ключ подписи d и подписываемое сообщение М, а выходным результатом – цифровая подпись w.
Проверка цифровой подписи. Для проверки цифровой подписи w под полученным сообщением М необходимо выполнить следующие действия.
Шаг 1. По полученной подписи w вычислить целые числа r и s. Если выполнены неравенства 0 < r < q, 0 < s < q, то перейти к следующему шагу. В противном случае подпись неверна.
Шаг 2. Вычислить хэш-код полученного сообщения М: .
Шаг 3. Вычислить целое число a, двоичным представлением которого является вектор , и определить . Если е = 0, то определить е = 1.
Шаг 4. Вычислить значение .
Шаг 5. Вычислить значения , .
Шаг 6. Вычислить точку эллиптической кривой и определить , где – х-координата точки С.
Шаг 7. Если выполнено равенство R = r, то подпись принимается, в противном случае подпись неверна.
Исходными данными этого процесса являются подписанное сообщение М, цифровая подпись w и ключ проверки Q, а выходным результатом – свидетельство о достоверности или ошибочности данной подписи.
Внедрение цифровой подписи на базе стандарта ГОСТ Р 34.10-2001 повышает, по сравнению с предшествующей схемой цифровой подписи, уровень защищенности передаваемых сообщений от подделок и искажений. Этот стандарт рекомендуется использовать в новых системах обработки информации различного назначения, а также при модернизации действующих систем.
Управление криптоключами
Управление ключами включает реализацию таких функций как генерация, хранение и распределение ключей. Распределение ключей – самый ответственный процесс в управлении ключами.
При использовании симметричной криптосистемы две вступающие в информационный обмен стороны должны сначала согласовать секретный сессионный ключ, то есть ключ для шифрования всех сообщений, передаваемых в процессе обмена. Этот ключ должен быть неизвестен всем остальным и должен периодически обновляться одновременно у отправителя и получателя. Процесс согласования сессионного ключа называют также обменом или распределением ключей.
Асимметричная криптосистема предполагает использование двух ключей – открытого и закрытого (секретного). Открытый ключ можно разглашать, а закрытый надо хранить в тайне. При обмене сообщениями необходимо пересылать только открытый ключ, обеспечив подлинность пересылаемого открытого ключа.
К распределению ключей предъявляются следующие требования:
· оперативность и точность распределения;
· конфиденциальность и целостность распределяемых ключей.
Для распределения ключей между пользователями компьютерной сети используются следующие основные способы:
1. Использование одного или нескольких центров распределения ключей.
2. Прямой обмен ключами между пользователями сети.
Проблемой первого подхода является то, что центру распределения ключей известно, кому и какие ключи распределены, и это позволяет читать все сообщения, передаваемые по сети. Возможные злоупотребления могут существенно нарушить безопасность сети. При втором подходе проблема состоит в том, чтобы надежно удостовериться в подлинности субъектов сети.
Задача распределения ключей сводится к построению такого протокола распределения ключей, который обеспечивает:
· взаимное подтверждение подлинности участников сеанса;
· подтверждение достоверности сеанса;
· использование минимального числа сообщений при обмене ключами.
Характерным примером реализации первого подхода является система аутентификации и распределения ключей Kerberos. Система Kerberos используется в системах клиент/сервер для аутентификации и обмена ключевой информацией, предназначенной для установления защищенного канала связи между абонентами, работающими как в локальной сети, так и в глобальных. Данный протокол встроен в качестве основного протокола аутентификации в Microsoft Windows и Unix.
При прямом обмене ключами между пользователи должны обменяться по каналу связи безопасным образом. Если пользователи меняют ключ достаточно часто, то доставка ключа превращается в серьезную проблему.
Для решения этой проблемы можно применить два основных способа:
1. Использование асимметричной криптосистемы с открытым ключом для защиты секретного ключа симметричной криптосистемы.
2. Использование системы открытого распределения ключей Диффи-Хеллмана.
Реализация первого способа осуществляется в рамках комбинированной криптосистемы с симметричными и асимметричными ключами. При таком подходе симметричная криптосистема применяется для шифрования и передачи исходного открытого текста, а асимметричная криптосистема с открытым ключом – для шифрования, передачи и последующего расшифрования только секретного ключа симметричной криптосистемы.
Второй способ безопасного распространения секретных ключей основан на применении алгоритма открытого распределения ключей Диффи-Хеллмана. Этот алгоритм позволяет пользователям обмениваться ключами по незащищенным каналам связи.