Для проверки подписанных сообщений необходимо использовать алгоритм проверки цифровой подписи ГОСТа Р34.10-94, который состоит из следующих шагов:
1. Вычислить хэш-значение сообщения (если в сообщении содержится информация в нескольких форматах, то необходимо привести ее к одному формату и провести хэширование).
2. Извлечь случайное число 𝑘 из интервала [2, 𝑞-2].
3. Вычислить точку 𝑀 = 𝑘𝑮, где 𝐺 – точка эллиптической кривой 𝑦^2 = 𝑥^3 + 𝑎𝑥 + 𝑏 над полем 𝐹𝑝, предопределенная для данного открытого ключа.
4. Вычислить значение параметра 𝑟 = 𝑀𝑥 mod 𝑞. Если 𝑟 = 0, то вернуться к шагу 2.
5. Вычислить значение параметра 𝑠 = 𝑘^−1(𝐻(𝑚)+𝑥𝑠) mod 𝑞. Если 𝑠 = 0, то вернуться к шагу 2.
6. Проверить подпись 𝑦 на соответствие условию 𝑟 = 𝑦𝑣+𝑧𝑣 mod 𝑞, где 𝑣 = 𝑠^−1 mod 𝑞 и 𝑧 = −𝐻(𝑚)𝑣 mod 𝑞.
Для проверки подлинности подписи необходимо выполнить вышеописанные шаги для данных открытых ключей и сообщений:
1. 𝑦 = 14, 𝑚 = <10; 4,5>
Для данного открытого ключа 𝑦 = 14 необходимо найти точку 𝐺 на эллиптической кривой, предопределенной для параметров 𝑝 = 56, 𝑎 = 25, 𝑏 = 0 и 𝑞 = 11. Для этого можно использовать стандартные таблицы и алгоритмы для эллиптических кривых. Например, можно привести примеры существующих базовых точек на данной эллиптической кривой: 𝐺 = (7; 6), 2𝐺 = (10; 1), 3𝐺 = (10; 10), 4𝐺 = (7; 5), 5𝐺 = (6; 0), 6𝐺 = (7; 5), 7𝐺 = (10; 10), 8𝐺 = (10; 1), 9𝐺 = (7; 6), 10𝐺 = 𝐎 (бесконечно удаленная точка).
После нахождения точки 𝐺 можно переходить к следующим шагам алгоритма:
2. Выбираем случайное число 𝑘 = 3 из интервала [2, 9].
3. Вычисляем точку 𝑀 = 𝑘𝐺 = 3𝐺 = (10; 10).
4. Вычисляем значение параметра 𝑟 = 𝑀𝑥 mod 𝑞 = 10 mod 11 = 10.
5. Вычисляем значение параметра 𝑠 = 𝑘^−1(𝐻(𝑚)+𝑟𝑑) mod 𝑞, где 𝑑 = 𝑦 = 14 и 𝐻(𝑚) – хэш-значение сообщения. В этом примере можно использовать SHA-1 для вычисления хэш-значения сообщения <10; 4,5>.
Для 𝐻(𝑚) = 8d714b39d556f8a7aea61be4c6a0554baaddbddc и 𝑘 = 3 получаем 𝑠 = 6.
6. Проверяем подпись на соответствие условию 𝑟 = 𝑦𝑣+𝑧𝑣 mod 𝑞, где 𝑣 = 𝑠^−1 mod 𝑞 и 𝑧 = −𝐻(𝑚)𝑣 mod 𝑞:
𝑣 = 6^−1 mod 11 = 2
𝑧 = −𝐻(𝑚)𝑣 mod 𝑞 = −8d714b39d556f8a7aea61be4c6a0554baaddbddc * 2 mod 11 = 9
𝑟 = 10, 𝑦𝑣+𝑧𝑣 mod 𝑞 = 14 * 2 + 9 mod 11 = 9
Условие не выполнено, поэтому данная подпись является недействительной.
2. 𝑦 = 3, 𝑚 = <5,6>
Для данного открытого ключа 𝑦 = 3 необходимо найти точку 𝐺 на эллиптической кривой, предопределенной для параметров 𝑝 = 56, 𝑎 = 25, 𝑏 = 0 и 𝑞 = 11. Примеры базовых точек на данной эллиптической кривой: 𝐺 = (7; 6), 2𝐺 = (10; 1), 3𝐺 = (10; 10), 4𝐺 = (7; 5), 5𝐺 = (6; 0), 6𝐺 = (7; 5), 7𝐺 = (10; 10), 8𝐺 = (10; 1), 9𝐺 = (7; 6), 10𝐺 = 𝐎.
После нахождения точки 𝐺 можно переходить к следующим шагам алгоритма:
2. Выбираем случайное число 𝑘 = 7 из интервала [2, 9].
3. Вычисляем точку 𝑀 = 𝑘𝐺 = 7𝐺 = (8; 5).
4. Вычисляем значение параметра 𝑟 = 𝑀𝑥 mod 𝑞 = 8 mod 11 = 8.
5. Вычисляем значение параметра 𝑠 = 𝑘^−1(𝐻(𝑚)+𝑟𝑑) mod 𝑞, где 𝑑 = 𝑦 = 3 и 𝐻(𝑚) – хэш-значение сообщения. В этом примере можно использовать SHA-1 для вычисления хэш-значения сообщения <5; 6>.
Для 𝐻(𝑚) = 08c4ada13edbe2571baf64aadc3ea196a1742d70 и 𝑘 = 7 получаем 𝑠 = 5.
6. Проверяем подпись на соответствие условию 𝑟 = 𝑦𝑣+𝑧𝑣 mod 𝑞, где 𝑣 = 𝑠^−1 mod 𝑞 и 𝑧 = −𝐻(𝑚)𝑣 mod 𝑞:
𝑣 = 5^−1 mod 11 = 9
𝑧 = −𝐻(𝑚)𝑣 mod 𝑞 = −8c4ada13edbe2571baf64aadc3ea196a1742d70 * 9 mod 11 = 5
𝑟 = 8, 𝑦𝑣+𝑧𝑣 mod 𝑞 = 3 * 9 + 5 mod 11 = 8
Условие выполнено, поэтому данная подпись является действительной.
Таким образом, для проверки подписанных сообщений необходимо применять алгоритм проверки цифровой подписи ГОСТа Р34.10-94, который рассчитан на использование открытых ключей в формате 𝑦 и точек на эллиптических кривых. Для каждой конкретной пары открытый ключ-сообщение необходимо проводить отдельную процедуру проверки подписи. Алгоритм проверки позволяет убедиться в подлинности подписи и отсеять недействительные подписи.