Подпись Меркла
Подпись Меркла — алгоритм постквантовой и многоразовой цифровой подписи, основанный на использовании дерева Меркла и какой-либо одноразовой цифровой подписи.[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]
Примечания[править | править код]
- ↑ 1 2 CMSS, 2006, p. 349-350.
- ↑ Merkle, 1979.
- ↑ Security, 2005, p. 1.
- ↑ 1 2 CMSS, 2006, p. 352.
- ↑ CMSS, 2006, p. 351.
- ↑ Security, 2005, p. 3.
- ↑ CMSS, 2006, p. 352-353.
- ↑ 1 2 CMSS, 2006, p. 353.
- ↑ dods2005hash, 2005, p. 96.
- ↑ szydlo2004merkle, 2004, p. 541.
- ↑ Security, 2005, p. 4.
- ↑ 1 2 rohde2008fast, 2008, p. 109.
Литература[править | править код]
- Merkle, Ralph Charles. Secrecy, authentication, and public key systems : Technical Report No. 1979-1. — Citeseer, 1979. — doi:10.1.1.637.3952.
- Garcıa, LC Coronado. On the security and the efficiency of the Merkle signature scheme : Technical Report 2005/192. — Cryptology ePrint Archive, 2005.
- Buchmann, Johannes. CMSS–an improved Merkle signature scheme // International Conference on Cryptology in India. — Springer Berlin Heidelberg, 2006. — С. 349—363. — doi:10.1007/11941378_25. (недоступная ссылка)
- Dods, Chris and Smart, Nigel P and Stam, Martijn. Hash based digital signature schemes // IMA International Conference on Cryptography and Coding. — Springer Berlin Heidelberg, 2005. — С. 96—115. — doi:10.1007/11586821_8.
- Szydlo, Michael. Merkle tree traversal in log space and time // International Conference on the Theory and Applications of Cryptographic Techniques. — Springer Berlin Heidelberg, 2004. — С. 541—554. — doi:10.1007/978-3-540-24676-3_32.
- Rohde, Sebastian and Eisenbarth, Thomas and Dahmen, Erik and Buchmann, Johannes and Paar, Christof. Fast hash-based signatures on constrained devices // International Conference on Smart Card Research and Advanced Applications. — Springer Berlin Heidelberg, 2008. — С. 104—117. — doi:10.1007/978-3-540-85893-5_8.