Что если несколько человек захотят подписать один и тот же документ ? Проще всего, чтобы они подписали его порознь, но рассматриваемая схема подписи делает это лучше . Пусть Алиса и Боб подписывают документ, а Кэрол проверяет подписи, но в процесс подписания может быть вовлечено произвольное количество людей . Как и раньше, Алиса и Боб обладают уникальными значениями /иВ: (JA,BA) и (JB,BB). Значения п и v являются общими для всей системы.
(1) Алиса выбирает случайное целое гА, находящееся в диапазоне от 1 до и-1. Она вычисляет ТА = г/ mod n и посылает ТА Бобу.
(2) Боб выбирает случайное целое гв, находящееся в диапазоне от 1 до и-1. Он вычисляет Тв = г/ mod n и посылает Тв Алисе.
(3) Алиса и Боб, каждый вычисляет Т= (ТА*ТВ) mod п.
(4) Алиса и Боб, каждый вычисляет d = ЩМ,Т), где М - подписываемое сообщение, а Щх) - однонаправленная хэш-функция. Значение d, полученное с помощью хэш-функции, должно быть в диапазоне от 0 до v-1 [1280]. Если выход хэш-функции выходит за этот диапазон, он должен быть приведен по модулю v.
(5) Алиса вычисляет DA = rABAd mod n и посылает DA Бобу.
(6) Боб вычисляет DB = rBBBd mod n и посылает DB Алисе.
(7) Алиса и Боб, каждый вычисляет D = DA DB mod п. Подпись состоит из сообщения М, двух вычисленных значений, d and D, и атрибутов обоих подписывающих: JA и JB.
(8) Кэрол вычисляет J = JA JB mod n.
(9) Кэрол вычисляет Т = Dvj mod п. Затем она вычисляет d' = Н(М,Т). Если d = d', то множественная подпись действительна.
Этот протокол может быть расширен на любое количество людей. Для этого подписывающие сообщение люди должны перемножить свои значения Г, на этапе (3), и свои значения Д на этапе (7). Чтобы проверить множественную подпись, нужно на этапе (8) перемножить значения У, подписывающих (8). Либо все подписи правильны, либо существует по крайней мере одна неправильная подпись .
21.3 SCHNORR
Безопасность схемы проверки подлинности и подписи Клауса Шнорра [1396,1397] опирается на трудность вычисления дискретных логарифмов. Для генерации пары ключей сначала выбираются два простых числа, р и q так, чтобы q было сомножителем р-1. Затем выбирается а, не равное 1, такое что aq = 1 (mod/;). Все эти числа могут быть свободно опубликованы и использоваться группой пользователей .
Для генерации конкретной пары ключей выбирается случайное число, меньшее д. Оно служит закрытым ключом, s. Затем вычисляется открытый ключ v = ds mod/;.