Реализуйте программу, которая будет подписывать доку- мент MS Word, посмотрите, как будет изменяться подпись при не- значительных и больших изменениях в исходном тексте.
Контрольные вопросы
Что такое хэш-функция?
Для чего применяется хэш-функция?
Особенности применения ЭЦП?
Отчетность по практической работе
Распечатайте код программы с подробными его коммента- риями и результатами выполнения программы.
ПРАКТИЧЕСКАЯ РАБОТА 11
РЕАЛИЗАЦИЯ ЭЛЕМЕНТОВ ЭЦП ГОСТ Р 34.10–94
Цель работы: формирование умений подписи электронных документов электронной цифровой подписью с помощью алго- ритма ГОСТ Р 34.10–94.
Первый российский стандарт цифровой подписи обознача- ется как ГОСТ Р 34.10–94. Алгоритм цифровой подписи, опре- деляемый этим стандартом, концептуально близок к алгоритму DSA. В нем используются следующие параметры:
p – большое простое число длиной от 509 до 512 бит либо от 1020 до1024 бит;
q – простой сомножитель числа (p – 1), имеющий длину
254–256 бит;
a – любое число, меньшее (p – 1), причем такое, что
aqmod p = 1;
x – некоторое число, меньшее q;
y = axmod p .
Кроме того, этот алгоритм использует однонаправленную хэш-функцию H(x).
Стандарт ГОСТ Р 34.10–94 определяет хэш-функцию, осно- ванную на использовании стандартного симметричного алго- ритма ГОСТ 28147–89.
Первые три параметра – p, q и a – являются открытыми и могут быть общими для всех пользователей сети. Число x явля- ется секретным ключом. Число y является открытым ключом.
Чтобы подписать некоторое сообщение m, а затем проверить подпись, выполняются следующие шаги:
Пользователь A генерирует случайное число k, причем k <q.
Пользователь А вычисляет значения:
r = (akmod p)mod q,
s = (xr + k(H(m)))mod q.
Если H(m)mod q = 0, то значение H(m)mod q принимают равным единице.
Если r = 0, то выбирают другое значение k и начинают снова. Цифровая подпись представляет собой два числа: r и s.
Пользователь А отправляет эти числа пользователю В.
Пользователь В проверяет полученную подпись, вычисляя:
v = H(m)q–2 mod q; 1z = (sv)mod q;
2z = ((q – r)v)mod q;
u = ((az1yz2)mod p)mod q.
Если u = r, то подпись считается верной.
Различие между этим алгоритмом и алгоритмом DSA за- ключается в том, что в DSA s = (k(xr + (H(m))))mod q, что приво- дит к другому уравнению верификации.
Следует также отметить, что в российском стандарте ЭЦП параметр q имеет длину 256 бит. Современных криптографов вполне устраивает q длиной примерно 160 бит. Различие в зна- чениях параметра q является отражением стремления разработ- чиков российского стандарта к получению более безопасной под- писи. Этот стандарт вступил в действие с начала 1995 г.