Алгоритм подписи Рабина - Rabin signature algorithm
В криптография то Алгоритм подписи Рабина это метод цифровая подпись первоначально предложенный Майкл О. Рабин в 1979 году. Алгоритм подписи Рабина был одной из первых предложенных схем цифровой подписи, и это единственный алгоритм, который напрямую связывает надежность подделки с проблемой целочисленная факторизация. Алгоритм подписи Рабина экзистенциально неподдельный в случайный оракул модель, предполагающая, что проблема целочисленной факторизации неразрешима. Алгоритм подписи Рабина также тесно связан с Криптосистема Рабина.
Но Криптосистема RSA играет заметную роль на заре криптографии с открытым ключом, а алгоритм подписи Рабина не рассматривается в большинстве вводных курсов по криптографии.
Уравнения
Если H устойчив к столкновениям хеш-функция, m сообщение для подписи и
- и
подпись S дается уравнением
- .
Каждый может проверить
- ,
если значение публично.
Оригинальный алгоритм - небезопасен без хеш-функции
- Генерация ключей
- Подписывающий S выбирает простые числа п, q каждый размером приблизительно k / 2 бит и вычисляет произведение .
- S затем выбирает случайный б в .
- Открытый ключ (п, б).
- Закрытый ключ (р, д).
- Подписание
- Чтобы подписать сообщение м подписывающий S выбирает случайное заполнение U и вычисляет .
- S затем решает .
- Если нет решения S выбирает новую площадку U и пытается еще раз.
- Подпись на м пара (U, х)
- Проверка
- Учитывая сообщение м и подпись (U, х) верификатор V вычисляет и и проверяет, что они равны.
Безопасный и упрощенный алгоритм
Безопасный алгоритм основан на хэш-функции, устойчивой к коллизиям. .
В большинстве презентаций алгоритм упрощается путем выбора . Хеш-функция ЧАС с участием k выходные биты считаются случайный оракул и алгоритм работает следующим образом:
- Генерация ключей
- Подписывающее лицо S выбирает простые числа п, q каждый размером приблизительно k / 2 биты и р, д mod 4 равно 3. Он вычисляет произведение .
- Открытый ключ п.
- Закрытый ключ (р, д).
- Подписание
- Чтобы подписать сообщение м подписывающий S выбирает случайное заполнение U и вычисляет H (м, U).
- Если H (м, U) не квадрат по модулю п, S выбирает новую площадку U.
- S вычисляет одно значение x, которое решает уравнение .
- Подпись на м пара (U, х).
- Проверка
- Учитывая сообщение м и подпись (U, х), верификатор V вычисляет Икс2 мод n и H (м, U) и проверяет, что они равны.
Замечания
В некоторых случаях случайная прокладка U устраняется. Вместо этого мы можем в конечном итоге умножить хеш-значение на два числа а или б со свойствами и , где обозначает легендарный символ. Тогда для любого ЧАС по модулю п ровно одно из четырех чисел будет квадрат по модулю п, и подписывающий выбирает его для своей подписи.
Еще проще меняем сообщение м пока подпись не будет проверена.
def корень(м: ул, п, q): "" "Алгоритм подписи Рабина." "" в то время как Правда: Икс = час(м) сиг = пау(п, q - 2, q) * п * пау(Икс, (q + 1) / 4, q) сиг = (пау(q, п - 2, п) * q * пау(Икс, (п + 1) / 4, п) + сиг) % (нрабин) если (сиг * сиг) % нрабин == Икс: Распечатать(«Записать расширенное сообщение в файл m.txt») ж = открыто('m.txt', 'w') ж.записывать(м) ж.близко() перерыв м = м + ' ' вернуть сиг
Безопасность
Если хеш-функция ЧАС является случайным оракулом, т.е. его вывод действительно случайен в , а затем подделать подпись на любом сообщении м так же сложно, как вычислить квадратный корень из случайного элемента в .
Чтобы доказать, что извлечение случайного квадратного корня так же сложно, как разложение на множители, сначала отметим, что в большинстве случаев существует четыре различных квадратных корня, поскольку п имеет два квадратных корня по модулю п и два квадратных корня по модулю q, и каждая пара дает квадратный корень по модулю п посредством китайская теорема об остатках. Некоторые из четырех корней могут иметь одинаковое значение, но только с крайне низкой вероятностью.
Теперь, если мы сможем найти два разных квадратных корня, Икс,у такой, что но , то это сразу приводит к факторизации п поскольку п разделяет но он не разделяет ни один из факторов. Таким образом, принимая приведет к нетривиальной факторизации п.
Теперь мы предполагаем, что существует эффективный алгоритм, позволяющий найти хотя бы один квадратный корень. Затем мы выбираем случайный р по модулю п и квадрат , то с помощью алгоритма извлекаем один квадратный корень из р по модулю п, получим новый квадратный корень , а с вероятностью половинной .
использованная литература
- Мишель Элиа, Давиде Схипани, О подписи Рабина, 2011 PDF
- Бухманн, Йоханнес. Einf 眉 hrung в die Kryptographie. Второе издание. Берлин: Springer, 2001. ISBN 3-540-41283-2
- Менезеш, Альфред; van Oorschot, Paul C .; и Ванстон, Скотт А. Справочник по прикладной криптографии. CRC Press, октябрь 1996 г. ISBN 0-8493-8523-7
- Рабин, Майкл. Оцифрованные подписи и функции открытого ключа столь же трудноразрешимы, как и факторизация (в формате PDF). Лаборатория компьютерных наук Массачусетского технологического института, январь 1979 г.
- Скотт Линдхерст, Анализ алгоритма Шанка для вычисления квадратных корней в конечных полях. in R Gupta and KS Williams, Proc 5th Conf Can Nr Theo Assoc, 1999, vol 19 CRM Proc & Lec Notes, AMS, август 1999.
- Р. Кумандури и С. Ромеро, Теория чисел с компьютерными приложениями, Alg 9.2.9, Прентис Холл, 1997. Вероятностный коэффициент для квадратного корня из квадратичного вычета по простому модулю.