Алгоритм подписи Рабина - Rabin signature algorithm

В криптография то Алгоритм подписи Рабина это метод цифровая подпись первоначально предложенный Майкл О. Рабин в 1979 году. Алгоритм подписи Рабина был одной из первых предложенных схем цифровой подписи, и это единственный алгоритм, который напрямую связывает надежность подделки с проблемой целочисленная факторизация. Алгоритм подписи Рабина экзистенциально неподдельный в случайный оракул модель, предполагающая, что проблема целочисленной факторизации неразрешима. Алгоритм подписи Рабина также тесно связан с Криптосистема Рабина.

Но Криптосистема RSA играет заметную роль на заре криптографии с открытым ключом, а алгоритм подписи Рабина не рассматривается в большинстве вводных курсов по криптографии.

Уравнения

Если H устойчив к столкновениям хеш-функция, m сообщение для подписи и

и

подпись S дается уравнением

.

Каждый может проверить

,

если значение публично.

Оригинальный алгоритм - небезопасен без хеш-функции

  • Генерация ключей
    • Подписывающий S выбирает простые числа п, q каждый размером приблизительно k / 2 бит и вычисляет произведение .
    • S затем выбирает случайный б в .
    • Открытый ключ (п, б).
    • Закрытый ключ (р, д).
  • Подписание
    • Чтобы подписать сообщение м подписывающий S выбирает случайное заполнение U и вычисляет .
    • S затем решает .
    • Если нет решения S выбирает новую площадку U и пытается еще раз.
    • Подпись на м пара (U, х)
  • Проверка
    • Учитывая сообщение м и подпись (U, х) верификатор V вычисляет и и проверяет, что они равны.

Безопасный и упрощенный алгоритм

Безопасный алгоритм основан на хэш-функции, устойчивой к коллизиям. .

В большинстве презентаций алгоритм упрощается путем выбора . Хеш-функция ЧАС с участием k выходные биты считаются случайный оракул и алгоритм работает следующим образом:

Генерация ключей
  1. Подписывающее лицо S выбирает простые числа п, q каждый размером приблизительно k / 2 биты и р, д mod 4 равно 3. Он вычисляет произведение .
  2. Открытый ключ п.
  3. Закрытый ключ (р, д).
Подписание
  1. Чтобы подписать сообщение м подписывающий S выбирает случайное заполнение U и вычисляет H (м, U).
  2. Если H (м, U) не квадрат по модулю п, S выбирает новую площадку U.
  3. S вычисляет одно значение x, которое решает уравнение .
  4. Подпись на м пара (U, х).
Проверка
  1. Учитывая сообщение м и подпись (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. Вероятностный коэффициент для квадратного корня из квадратичного вычета по простому модулю.

внешние ссылки