Full domain hash

В криптографии Full Domaine Hash (FDH или полный хеш домена) является схемой подписи на основе RSA, которая следует парадигме хеширования и подписи. Он доказуемо защищён (то есть не поддавался влиянию адаптивных атак с использованием выбранных сообщений) в модели случайного оракула. FDH включает в себя хеширование сообщения с использованием функции, размер изображения которой равен размеру модуля RSA, а затем возведение результата в степень секретной экспоненты RSA.

Введение

править

С момента открытия Уитфилдом Диффи (англ. Whitfield Diffie) и Мартином Хеллманом (англ. Martin Hellman) криптографии с открытым ключом[1] одной из наиболее важных тем исследования является разработка практичных и доказуемо (в практическом понимание) безопасных криптосистем. Доказательством практичной безопасности обычно является вычислительная сложность от решения хорошо известной задачи до взлома криптосистемы. Хорошо известные задачи включают в себя факторизацию больших целых чисел, вычисление дискретного логарифма по модулю простого числа p или извлечение корня по модулю составного целого числа, на которой основана криптосистема RSA[2].

Очень распространённая практика для подписи с RSA — сначала хешировать сообщение, добавить к сообщению соль , а затем возвести в степень открытого ключа. Эта парадигма «хеширования и расшифровки»(hash and decrypt) является основой многочисленных стандартов, таких как PKCS # 1 v2.0[англ.][3]. Схема состоит в том, чтобы взять хеш-функцию, выходной размер которой точно равен размеру модуля: это полнодоменная схема хеширования (FDH), введённая Белларом[англ.] и Рогэвеем[англ.] в статье "Random oracles are practical: a paradigm for designing efficient protocols"[4]. Схема FDH доказуемо безопасна в модели случайного оракула, предполагая, что инвертировать RSA, то есть извлечь корень по модулю составного целого числа, сложно. Методология случайного оракула была введена Белларом и Рогэвеем в "Random oracles are practical: a paradigm for designing efficient protocols"[4], где они показывают, как разрабатывать надёжно защищённые схемы подписи из любой функции с потайным входом. В модели случайного оракула хеш-функция рассматривается как оракул, который выдаёт случайное значение для каждого нового запроса . В оригинальной статье случайный оракул преобразует последовательность из 0 и 1 фиксированной длины в последовательность бесконечной длины и случайным образом выбирает из последовательности подпоследовательность необходимой длины . Основополагающая работа Беллара и Рогэвея подчёркивает, что для практического применения доказуемой безопасности важно учитывать «жёсткое» снижение безопасности. Снижение безопасности является «жёстким», когда любые действия криптоаналитика для взлома схемы подписи приводит к решению хорошо установленной задачи с достаточной вероятностью, в идеале с вероятностью, равной 1. В этом случае схема подписи почти так же безопасна, как и устоявшаяся задача. Напротив, если сокращение является «слабым», то есть вышеупомянутая вероятность слишком мала, гарантия на схему подписи может быть довольно слабой.

Определение

править

Схема подписи полного доменного хеша (Gen, Sign, Verify) определяется следующим образом. Алгоритм генерации ключей запускает RSA для получения  . Он выводит  , где   и  . Алгоритм подписи и проверки имеет доступ к оракулу c хеш-функцией  

Подпись и проверка выполняются следующим образом:

 

Анализ безопасности схемы FDH

править

Подход Беллара и Рогвея

править

Теорема 1 Предположим, что RSA  -безопасен (на взлом с вероятностью ɛ′ потребуется t′ времени ) Тогда схема FDH-подписи является   -безопасным, где

 .

Недостатком данного результата является то, что   может быть намного меньше  . Например, если мы предположим, что криптоаналитик может запрашивать  количество подписей и вычислять хеши на  сообщениях , даже если вероятность инверсии RSA составляет всего  , то все, что мы получаем, это что вероятность составляет почти  , что не является удовлетворительным. Чтобы получить приемлемый уровень безопасности, мы должны использовать больший размер модуля, который будет положительно влиять на эффективность схемы.

Чтобы получить наиболее подходящую границу безопасности, Беллар и Рогавей разработали новую схему — схему вероятностной подписи  , которая обеспечивает строгое снижение безопасности: вероятность подделки подписи практически также мала как и при инвертировании  . Вместо этого, существует альтернативный подход, который может быть применён по отношению к FDH схеме для получения лучшей границы.[5]

Альтернативный подход

править

Иное сокращение, которое даёт лучшую оценку безопасности для FDH, основано на доказательстве теоремы

Теорема 2 Пусть RSA   — безопасен. Тогда схема FDH подписи является   -безопасной, где

 .

Для больших  ,  .

Определение 1

править

Инвертором     - будем называть алгоритм взламывающий RSA , вероятность успеха которого по истечении не более t времени обработки составляет не менее ɛ .

Определение 2

править

Фальсификатором     - будем называть алгоритм нарушающий схему подписи (Gen, Sign, Verify), если после не более чем  запросов к хеш-оракулу,   подписанных запросов и   времени обработки, выводит подделку подписи с вероятностью не менее ɛ .


Доказательство Пусть   — фальсификатор   , который взламывает FDH. Мы предполагаем, что   никогда не повторяет один и тот же запрос хеш-оракулу или запрос на подпись. Строим инвертор    , который взламывает RSA. Инвертор   получает в качестве входных данных  , где   — открытый ключ, а   выбирается случайным образом в  (подмножества всех хешированных сообщений) . Инвертор   пытается найти  , где   — функция RSA, определённая из  . Инвертор   запускает   для этого открытого ключа. Фальсификатор   делает запросы к хеш-оракулу и запросы на подпись.   получая ответ от хеш-оракула самостоятельно подписывает их.

Для простоты мы предполагаем, что когда  делает запрос на подпись сообщения  , он уже сделал соответствующий запрос хеш-оракулу для  . Если нет - продолжаем и самостоятельно создаём запрос хеш- оракулу для сообщения  .В инверторе  используется счётчик  , изначально установленный на ноль. Когда   делает запрос хеш-оракулу для сообщения  , инвертор   увеличивает  , устанавливает соответствие хешированного сообщения и изначального сообщения  , а также выбирает случайное число   в  .  затем возвращает   с вероятностью   и   с вероятностью  . Здесь   — фиксированная вероятность, которая будет определена позже. Когда   делает запрос на подпись для  , он уже запросил хеш  , так что  для некоторых  .Если  , тогда  возвращает   в качестве подписи. В противном случае, процесс останавливается и происходит сбой инвертора.

В конце концов,   заканчивает работу и выводит подделку  . Мы предполагаем, что   запрашивал хеш   ранее. Если нет,  самостоятельно делает запрос хеш-оракулу, так что в любом случае   для некоторого  . Тогда, если  , мы получаем,  и   выводит   в качестве обратной величины для  . В противном случае процесс останавливается и происходит сбой инвертора.

Вероятность того, что мы ответим на все запросы сигнатур, составляет не менее  . Затем   выводит обратное   для   с вероятностью  . Таким образом, с вероятностью, по крайней мере,  ,   выводит обратное   для  . Функция   максимальна для   и

 

Следовательно, мы получаем:

 .

Для больших  ,

 .

Время работы   — это время работы  , добавленное ко времени, необходимому для вычисления значений  . По сути, это одно вычисление RSA, которое является кубическим временем (или лучше). Это даёт формулу для  .

Итоговое сокращение

править

Качество нового сокращения не зависит от количества хеш-вызовов, выполненных фальсификатором, и зависит только от количества запросов на подписи. Это имеет практическое значение, поскольку в реальных приложениях число вызовов хеш-функции ограничено только вычислительной мощностью фальсификатора, тогда как количество запросов на подпись может быть ограничено: подписывающее лицо может отказаться подписывать более   или   сообщений. Тем не менее, сокращение по-прежнему не является жестким и остаётся значительный разрыв между точной безопасностью FDH и точной безопасностью PSS.

Во многих доказательствах безопасности в модели случайного оракула инвертор должен «угадать», какой хеш-запрос будет использоваться противником для подделки, что приводит к коэффициенту   в вероятности успеха. Доказано, что лучшим методом является включение запроса   в ответ на многие хеш-запросы, чтобы подделка с большей вероятностью была полезна для инвертора. Это наблюдение также применимо к схеме подписи Рабина[6] , схеме подписи Пейе[7], а также к схеме подписи Дженнаро-Галеви-Рабина[8] , для которой коэффициент   в доказательстве безопасности случайного оракула также может быть уменьшен до  .

Примечания

править
  1. New directions in cryptography. Дата обращения: 25 декабря 2018. Архивировано 12 октября 2019 года.
  2. A method for obtaining digital signatures and public key cryptosystems. Дата обращения: 25 декабря 2018. Архивировано 26 декабря 2018 года.
  3. RSA cryptography specifications. Дата обращения: 25 декабря 2018. Архивировано 12 декабря 2018 года.
  4. 1 2 Random oracles are practical: a paradigm for designing efficient protocols. Дата обращения: 25 декабря 2018. Архивировано 24 декабря 2018 года.
  5. The exact security of digital signatures - How to sign with RSA and Rabin. Дата обращения: 25 декабря 2018. Архивировано 23 декабря 2018 года.
  6. Digitalized signatures and public-key functions as intractable as fac- torization. Дата обращения: 25 декабря 2018. Архивировано 3 ноября 2018 года.
  7. Public-key crypto systems based on composite degree residuosity classes. Proceedings of Eurocrypt’99. Дата обращения: 25 декабря 2018. Архивировано 6 мая 2021 года.
  8. Secure hash-and-sign signatures without the ran- dom oracle, proceedings of Eurocrypt’99. Дата обращения: 25 декабря 2018. Архивировано 14 июля 2012 года.