WikiSort.ru - Не сортированное

ПОИСК ПО САЙТУ | о проекте

Подпись Меркла — алгоритм постквантовой и многоразовой цифровой подписи, основанный на использовании дерева Меркла и какой-либо одноразовой цифровой подписи.[1]

История

Впервые подпись была опубликована Ральфом Мерклом в 1979 в его статье «Secrecy, authentication, and public key systems»[2], как многоразовая цифровая подпись, использующая одноразовую подпись Лэмпорта.[3]

Описание алгоритма

Подготовка

Подпись Меркла базируется на уже существующей одноразовой цифровой подписи, криптостойкость которой должна быть основана на криптостойкой хеш-функции. Примерами таких подписей могут быть Winternitz One-time Signature Scheme или подпись Лэмпорта.[4] Одноразовая цифровая подпись должна состоять из трех основных операций:[5]

  • Генерация секретного ключа и публичного ключа .
  • Генерация подписи из сообщения с помощью секретного ключа .
  • Проверка подписи с помощью открытого ключа .

Также необходимо определиться с криптостойкой хеш-функцией , которая позже будет использоваться для вычисления публичного ключа.[4]

Дерево Меркла для восьми ключей

Генерация ключей

Генерируются массивы ключей и длины . Длина выбирается равной степени двойки, так как это необходимо для построения дерева Меркла. Каждая пара используется как пара закрытый-открытый ключ для базовой одноразовой подписи. Массив  — является закрытым ключом подписи Меркла, для генерации открытого ключа строится дерево Меркла:

  • Для каждого вычисляем хеш-значение  — это будет нулевой слой дерева, то есть его листья. Обозначим этот слой . Всего содержит элементов. После чего вычисляем следующий слой, имеющий размер : каждый -ый элемент слоя вычисляется через два элемента с предыдущего слоя , где  — операция конкатенации. Таким образом, каждый следующий -ый слой, имеет длину и вычисляется через -ый слой. В итоге, мы придем к последнему слою дерева , имеющему длину и являющемуся корнем дерева.

За открытый ключ берется корень построенного дерева Меркла: .[6]

Дерево Меркла для восьми ключей с путем аутентификации

Генерация подписи

Для генерации подписи из массивов и выбирается -ая пара ключей .Для сообщения вычисляется одноразовая цифровая подпись с помощью закрытого ключа . Далее рассмотрим путь от корня дерева Меркла до листа , соответствующему ключу . Обозначим вершины, через которые проходит этот путь, как массив длины , где  — это корень дерева, а  — это . Значение каждой вершины , кроме , вычисляется как , где и являются непосредственными потомками . Таким образом, для того, чтобы вычислить путь от корня дерева достаточно знать и массив вершин , который будем называть аутентификационным путем. Таким образом, в подпись сообщения входит: верификационный ключ , одноразовая подпись и аутентификационный путь для вычисления пути до корня дерева.[7]

Проверка подписи

Во-первых, получатель проверяет одноразовую подпись на соответствие сообщению . Если проверка прошла успешно, то начинает построение пути от до корня дерева. Сначала вычисляется , потом и так далее. Если , то проверка подписи прошла успешно.[8]

Преимущества

Постквантовость

В часто используемых алгоритмах цифровой подписи, таких как RSA и DSA, используется сложность факторизации чисел и сложность вычисления дискретного логарифма. Однако, используя алгоритм Шора и квантовый компьютер, эти подписи могут быть взломаны за полиномиальное время. В отличие от них подпись Меркла является постквантовой, так как её криптографическая стойкость основана на стойкости криптографической хеш-функции и стойкости одноразовой цифровой подписи.[1]

Многоразовость

Одной из основных проблем цифровых подписей, основанных на криптостойких хеш-функциях, является то, что они, как правило, употребляются в контексте одноразовых цифровых подписей, то есть подписей, в которых одна пара ключей используется для подписи лишь одного сообщения. Однако, существуют способы расширения таких подписей до многоразовых. Одним из таких способов как раз является построение дерева Меркла, использующееся для аутентификации различных одноразовых подписей.[9]

Недостатки

Проблема обхода дерева

Эта проблема связана с нахождением эффективного алгоритма вычисления аутентификационных данных. Тривиальное решение — сохранить все данные в памяти — требует слишком много памяти. С другой стороны, подход вычисления аутентификационного пути в области, где он нужен, будет слишком затратен для некоторых вершин дерева.[10] Если длина массивов X и Y будет больше, чем 2^25, использование подписи Меркла становится непрактичным.[8]

Криптоанализ

Доказано, что алгоритм цифровой подписи Меркла является криптостойким против адаптивной атаки с выбором сообщений, если в нем используется хеш-функция, стойкая к коллизиям второго рода.[11][12] Однако, для того чтобы взломать подпись Меркла, криптоаналитику необходимо либо восстановить прообраз хеш-функции, либо вычислить коллизию первого рода. Это значит, что с практической точки зрения криптостойкость подписи Меркла базируется на необратимости использующейся хеш-функции и на её стойкости к коллизиям первого рода.[12]



Примечания

Литература

Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".

Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.

Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .




Текст в блоке "Читать" взят с сайта "Википедия" и доступен по лицензии Creative Commons Attribution-ShareAlike; в отдельных случаях могут действовать дополнительные условия.

Другой контент может иметь иную лицензию. Перед использованием материалов сайта WikiSort.ru внимательно изучите правила лицензирования конкретных элементов наполнения сайта.

2019-2024
WikiSort.ru - проект по пересортировке и дополнению контента Википедии