Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
криптография.docx
Скачиваний:
4
Добавлен:
24.04.2019
Размер:
506.78 Кб
Скачать

Вопрос 8 гост р 34.10 - 94).

Стойкость ЭЦП основана на сложности вычисления дискретного логарифма в циклической группе простого конечного поля, а также на стойкости используемой хэш-функции по ГОСТ Р 34.11.

Опишем базовые математические объекты, используемые в процессах формирования и проверки ЭЦП.

Пусть — простое число, либо , — простое число, и является делителем для , — целое число, , при этом , — целое число, .

Пусть — секретный ключ пользователя для формирования подписи, , — открытый ключ пользователя для проверки подписи, .

Числа не являются секретными. Конкретный набор их значений может быть общим для группы пользователей. Целое число , которое генерируется в процедуре подписи сообщения, должно быть секретным и должно быть уничтожено сразу после выработки подписи. Число снимается с физического датчика случайных чисел или вырабатывается псевдослучайным методом с использованием секретных параметров.

Опишем теперь алгоритмы формирования и проверки цифровой подписи под сообщением пользователя.

Для получения цифровой подписи под сообщением необходимо выполнить следующие шаги:

Шаг 1 — вычислить хэш-код сообщения .

Шаг 2 — вычислить целое число , соответствующее вектору , и определить . Если , то определить .

Шаг 3 — сгенерировать псевдослучайное целое число , удовлетворяющее неравенству .

Шаг 4 — вычислить два значения и . Если , то вернуться к шагу 3.

Шаг 5 — с использованием секретного ключа пользователя (отправителя сообщения) вычислить значение . Если , то вернуться к шагу 3.

Пара чисел и является цифровой подписью под данным сообщением.

Для проверки цифровой подписи под сообщением необходимо выполнить следующие шаги:

Шаг 1 — проверить выполнение неравенств . Если неравенства выполняются, то перейти к следующему шагу. В противном случае подпись неверна.

Шаг 2 — вычислить хэш-код сообщения .

Шаг 3 — вычислить целое число , соответствующее вектору , и определить . Если , то определить .

Шаг 4 — вычислить число .

Шаг 5 — вычислить значения и .

Шаг 6 — вычислить значение .

Шаг 7 — если выполнено равенство , то подпись принимается в противном случае подпись неверна.

Замечание. Важным моментом является получение чисел , удовлетворяющих перечисленным требованиям.

Вопрос 9 алгоритм диффи-хеллмана открытого распределения ключей

Пусть — простое число, а — примитивный элемент мультипликативной группы вычетов по модулю . Пользователи A и B выбирают себе случайные большие целые числа и , которые хранятся в секрете.

Шаг 1 — пользователь A вычисляет , а пользователь вычисляет .

Шаг 2 — пользователи A и B обмениваются и по открытым каналам.

Шаг 3 — пользователи вычисляют общий секретный ключ и находят число .

Теперь они могут шифровать куски (числа) сообщений по формуле , а расшифровывать по формуле .

Если у противника имеются числа , то ему нужно найти такое число , что , т.е. решить задачу дискретного логарифма.

Замечание 1. Если — простое число, то особенно легко находить образующие для мультипликативной группы вычетов. Образующей всегда будет одно из чисел либо . Кроме того, для чисел и достаточно потребовать нечетности. В этом случае примитивный элемент переходит в примитивный элемент либо .

Замечание 2. При обмене числами нужно иметь гарантию, что ключ получен от пользователя , а ключ получен от пользователя . Это можно решить с помощью электронной цифровой подписи, которой подписывают сообщение при формировании общего ключа. Можно также при этом задавать ключи шифрования непосредственно перед каждым сеансом, а не хранить их на дискетах и т.п.

Пример (алгоритм Диффи-Хеллмана). Пусть — простое число, а — примитивный элемент мультипликативной группы вычетов по модулю .

Пользователи A и B выбирают себе случайные большие целые числа и , которые хранятся в секрете.

Пусть . Тогда

,

Если сообщение , то зашифрованное сообщение , а восстановленное равно