Подпись Меркла: различия между версиями

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[непроверенная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
Нет описания правки
Нет описания правки
Строка 71: Строка 71:
|ссылка = https://www.researchgate.net/profile/Gerard_Cohen/publication/220963109_A_Trellis-Based_Bound_on_21-Separating_Codes/links/00b4952b0b8b1399d5000000.pdf#page=105
|ссылка = https://www.researchgate.net/profile/Gerard_Cohen/publication/220963109_A_Trellis-Based_Bound_on_21-Separating_Codes/links/00b4952b0b8b1399d5000000.pdf#page=105
|тип =
|тип =
|издательство = Springer
|издательство = Springer Berlin Heidelberg
|страницы =
|страницы =
|doi =
|doi = 10.1007/11586821_8
|год = 2005
|год = 2005
|ref = dods2005hash
|ref = dods2005hash
Строка 85: Строка 85:
|ссылка = https://pdfs.semanticscholar.org/6c2d/f86cb0b726a45c7e345c47dc8a3df7a8e09d.pdf
|ссылка = https://pdfs.semanticscholar.org/6c2d/f86cb0b726a45c7e345c47dc8a3df7a8e09d.pdf
|тип =
|тип =
|издательство = Springer
|издательство = Springer Berlin Heidelberg
|страницы =
|страницы =
|doi =
|doi = 10.1007/978-3-540-24676-3_32
|год = 2004
|год = 2004
|ref = szydlo2004merkle
|ref = szydlo2004merkle
Строка 99: Строка 99:
|ссылка = https://www-old.cdc.informatik.tu-darmstadt.de/reports/reports/REDBP08.pdf
|ссылка = https://www-old.cdc.informatik.tu-darmstadt.de/reports/reports/REDBP08.pdf
|тип =
|тип =
|издательство = Springer
|издательство = Springer Berlin Heidelberg
|страницы =
|страницы =
|doi =
|doi = 10.1007/978-3-540-85893-5_8
|год = 2008
|год = 2008
|ref = rohde2008fast
|ref = rohde2008fast

Версия от 23:33, 18 декабря 2016

Подпись Меркла — алгоритм постквантовой и многоразовой цифровой подписи, основанный на использовании дерева Меркла и какой-либо одноразовой цифровой подписи.[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]



Примечания

Литература