Алгоритм цифровой подписи эллиптической кривой
В криптографии алгоритм цифровой подписи с эллиптической кривой ( ECDSA ) предлагает вариант алгоритма цифровой подписи (DSA), который использует криптографию с эллиптической кривой .
Размеры ключей и подписей
[ редактировать ]Как и в случае с криптографией на основе эллиптических кривых в целом, размер секретного ключа , который, как предполагается, необходим для ECDSA, примерно в два раза превышает размер уровня безопасности в битах. [ 1 ] Например, при уровне безопасности 80 бит — это означает, что злоумышленнику требуется максимум около операции по поиску закрытого ключа — размер закрытого ключа ECDSA будет составлять 160 бит. С другой стороны, размер подписи и для DSA, и для ECDSA одинаков: примерно биты, где является показателем степени в формуле , то есть около 320 бит для уровня безопасности 80 бит, что эквивалентно операции.
Алгоритм генерации подписи
[ редактировать ]Предположим, Алиса хочет послать Бобу подписанное сообщение . Первоначально они должны согласовать параметры кривой. . Помимо поля и уравнения кривой нам понадобится , базовая точка простого порядка на кривой; - мультипликативный порядок точки .
Параметр | |
---|---|
ИЗГИБ | используемое поле эллиптической кривой и уравнение |
Г | базовая точка эллиптической кривой, точка на кривой, которая порождает подгруппу большого простого порядка n |
н | целого порядка G означает, что , где является элементом идентичности. |
закрытый ключ (выбирается случайно) | |
открытый ключ (рассчитано по эллиптической кривой) | |
м | сообщение для отправки |
Порядок базовой точки должен быть простым . Действительно, мы предполагаем, что каждый ненулевой элемент кольца обратима, так что должно быть поле . Это подразумевает, что должно быть простым (ср. тождество Безу ).
Алиса создает пару ключей, состоящую из целого числа закрытого ключа. , случайно выбранный в интервале ; и точка кривой открытого ключа . Мы используем для обозначения умножения точки эллиптической кривой на скаляр .
Чтобы Алиса подписала сообщение , она выполняет следующие шаги:
- Рассчитать . (Здесь HASH — это криптографическая хеш-функция , такая как SHA-2 , выходные данные которой преобразуются в целое число.)
- Позволять быть самые левые биты , где длина в битах группового порядка . (Обратите внимание, что может быть больше, чем но не дольше . [ 2 ] )
- Выберите криптографически безопасное случайное целое число. от .
- Вычислить точку кривой .
- Рассчитать . Если , вернитесь к шагу 3.
- Рассчитать . Если , вернитесь к шагу 3.
- Подпись - пара . (И также является действительной подписью.)
Как отмечается в стандарте, это требуется не только для быть секретным, но также важно выбирать разные для разных подписей. В противном случае уравнение из шага 6 можно решить для , закрытый ключ: с учетом двух подписей и , используя ту же самую неизвестную для разных известных сообщений и , злоумышленник может вычислить и , и поскольку (все операции в этом пункте выполняются по модулю ) злоумышленник может найти . С , теперь злоумышленник может вычислить закрытый ключ .
Эта ошибка реализации была использована, например, для извлечения ключа подписи, используемого для PlayStation 3 . игровой консоли [ 3 ]
Другой способ, которым подпись ECDSA может привести к утечке закрытых ключей, — это когда генерируется неисправным генератором случайных чисел . Подобный сбой в генерации случайных чисел привел к тому, что пользователи Android Bitcoin Wallet потеряли свои средства в августе 2013 года. [ 4 ]
Чтобы гарантировать, что уникален для каждого сообщения, можно полностью обойти генерацию случайных чисел и генерировать детерминированные подписи, получив как из сообщения, так и из закрытого ключа. [ 5 ]
Алгоритм проверки подписи
[ редактировать ]Чтобы Боб подтвердил подлинность подписи Алисы в сообщении , у него должна быть копия ее точки кривой открытого ключа . Боб может проверить является допустимой точкой кривой следующим образом:
- Проверьте это не равен единичному элементу O , и в противном случае его координаты действительны.
- Проверьте это лежит на кривой.
- Проверьте это .
После этого Боб выполняет следующие шаги:
- Убедитесь, что r и s являются целыми числами в . В противном случае подпись недействительна.
- Рассчитать , где HASH — это та же функция, которая используется при генерации подписи.
- Позволять быть самые левые биты e .
- Рассчитать и .
- Вычислить точку кривой . Если тогда подпись недействительна.
- Подпись действительна, если , в противном случае недействителен.
Обратите внимание, что эффективная реализация будет вычислять обратную только один раз. Кроме того, используя трюк Шамира, сумма двух скалярных умножений можно вычислить быстрее, чем два скалярных умножения, выполненные независимо. [ 6 ]
Корректность алгоритма
[ редактировать ]Не сразу понятно, почему проверка вообще работает правильно. Чтобы понять почему, обозначим как C точку кривой, вычисленную на этапе 5 проверки:
Из определения открытого ключа как ,
Поскольку скалярное умножение на эллиптической кривой распределяется по сложению,
Расширяя определение и начиная с шага проверки 4,
Собираем общий термин ,
Расширяя определение s из шага 6 подписи,
Поскольку инверсия обратного элемента является исходным элементом, а произведение обратного элемента и элемента является единицей, у нас остается
Из определения r это шаг проверки 6.
Это показывает только то, что правильно подписанное сообщение будет проверено правильно; другие свойства, такие как неправильно подписанные сообщения, которые не могут быть проверены правильно, и устойчивость к криптоаналитическим атакам, необходимы для безопасного алгоритма подписи.
Восстановление открытого ключа
[ редактировать ]Учитывая сообщение m и подпись Алисы по этому сообщению Боб может (потенциально) восстановить открытый ключ Алисы: [ 7 ]
- Убедитесь, что r и s являются целыми числами в . В противном случае подпись недействительна.
- Вычислить точку кривой где является одним из , , и т. д. (при условии не слишком велико для поля кривой) и такое значение, что уравнение кривой удовлетворяется. Обратите внимание, что может быть несколько точек кривой, удовлетворяющих этим условиям, и каждое другое значение R приводит к отдельному восстановленному ключу.
- Рассчитать , где HASH — это та же функция, которая используется при генерации подписи.
- Пусть z будет самые левые биты e .
- Рассчитать и .
- Вычислить точку кривой .
- Подпись действительна, если , соответствует открытому ключу Алисы.
- Подпись недействительна, если были испробованы все возможные точки R , и ни одна из них не соответствует открытому ключу Алисы.
Обратите внимание, что недействительная подпись или подпись из другого сообщения приведет к восстановлению неправильного открытого ключа. Алгоритм восстановления можно использовать для проверки достоверности подписи только в том случае, если открытый ключ подписывающего лица (или его хэш) известен заранее.
Корректность алгоритма восстановления
[ редактировать ]Начните с определения с шага восстановления 6,
Из определения с момента подписания шага 4,
Поскольку скалярное умножение на эллиптической кривой распределяется по сложению,
Расширяя определение и с шага восстановления 5,
Расширяя определение s из шага 6 подписи,
Поскольку произведение обратного элемента и элемента является единицей, у нас остается
Первое и второе слагаемые компенсируют друг друга,
Из определения , это открытый ключ Алисы.
Это показывает, что правильно подписанное сообщение восстановит правильный открытый ключ при условии, что дополнительная информация была передана для однозначного расчета точки кривой. из значения подписи r .
Безопасность
[ редактировать ]В декабре 2010 года группа, назвавшая себя Fail0verflow, объявила о восстановлении закрытого ключа ECDSA, используемого Sony для подписи программного обеспечения для игровой консоли PlayStation 3 . Однако эта атака сработала только потому, что Sony не реализовала алгоритм должным образом, поскольку был статичным, а не случайным. Как указано выше в разделе «Алгоритм генерации подписи» , это делает разрешима, что делает весь алгоритм бесполезным. [ 8 ]
29 марта 2011 г. два исследователя опубликовали IACR . статью [ 9 ] демонстрация возможности получения закрытого ключа TLS сервера с использованием OpenSSL , который аутентифицируется с помощью Elliptic Curves DSA по двоичному полю посредством временной атаки . [ 10 ] Уязвимость была исправлена в OpenSSL 1.0.0e. [ 11 ]
В августе 2013 года выяснилось, что ошибки в некоторых реализациях Java- класса SecureRandom иногда приводили к коллизиям в ценить. Это позволило хакерам восстановить закрытые ключи, предоставив им тот же контроль над транзакциями биткойнов, что и владельцы законных ключей, используя тот же эксплойт, который использовался для раскрытия ключа подписи PS3 в некоторых реализациях приложений Android , которые используют Java и полагаются на ECDSA для аутентификации. транзакции. [ 12 ]
Эту проблему можно предотвратить с помощью детерминированной генерации k, как описано в RFC 6979.
Обеспокоенность
[ редактировать ]Некоторые опасения, высказанные по поводу ECDSA:
- Политические проблемы : достоверность кривых, полученных NIST, подвергается сомнению после того, как стало известно, что АНБ охотно вставляет бэкдоры в программное обеспечение, аппаратные компоненты и опубликованные стандарты; известные криптографы [ 13 ] выразили [ 14 ] [ 15 ] сомнения относительно того, как были построены кривые NIST, а добровольное искажение данных уже было доказано в прошлом. [ 16 ] [ 17 ] (См. также в libssh Curve25519 введение . [ 18 ] ) Тем не менее, доказательства того, что названные кривые NIST используют редкую слабость, пока отсутствуют.
- Технические проблемы : сложность правильной реализации стандарта, его медлительность и недостатки конструкции, которые снижают безопасность в недостаточно защищенных реализациях. [ 19 ]
Реализации
[ редактировать ]Ниже приведен список криптографических библиотек, обеспечивающих поддержку ECDSA:
- Ботан
- Надувной замок
- криптлиб
- Крипто++
- Крипто API (Linux)
- ГнуTLS
- libgcrypt
- LibreSSL
- mbed TLS
- Microsoft КриптоAPI
- OpenSSL
- волкСклеп
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Джонсон, Дон; Менезес, Альфред (1999). «Алгоритм цифровой подписи на основе эллиптической кривой (ECDSA)». Исследование Сертиком. Канада . CiteSeerX 10.1.1.38.8014 .
- ^ NIST FIPS 186-4, июль 2013 г., стр. 19 и 26.
- ↑ Взлом консоли 2010 — PS3 Epic Fail. Архивировано 15 декабря 2014 г., в Wayback Machine , страницы 123–128.
- ^ «Уязвимость безопасности Android» . Проверено 24 февраля 2015 г.
- ^ Порнин, Т. (2013). RFC 6979 — Детерминированное использование алгоритма цифровой подписи (DSA) и алгоритма цифровой подписи на основе эллиптических кривых (ECDSA) (технический отчет). дои : 10.17487/RFC6979 . Проверено 24 февраля 2015 г.
- ^ «Двойная система счисления в криптографии с эллиптическими кривыми» (PDF) . Проверено 22 апреля 2014 г.
- ^ Дэниел Р.Л. Браун SECG SEC 1: Криптография с эллиптическими кривыми (версия 2.0) https://www.secg.org/sec1-v2.pdf
- ^ Бендель, Майк (29 декабря 2010 г.). «Хакеры описывают безопасность PS3 как эпический провал: получите неограниченный доступ» . Exophase.com . Проверено 5 января 2011 г.
- ^ «Архив криптологии ePrint: отчет 2011/232» . Проверено 24 февраля 2015 г.
- ^ «Примечание об уязвимости VU#536044 — OpenSSL утечка закрытого ключа ECDSA в результате удаленной атаки по времени» . www.kb.cert.org .
- ^ «Журнал изменений» . Проект OpenSSL . Проверено 22 апреля 2014 г.
- ^ «Ошибка Android поражает биткойн-кошельки» . Регистр. 12 августа 2013 г.
- ^ Шнайер, Брюс (5 сентября 2013 г.). «АНБ взламывает большую часть шифрования в Интернете» . Шнайер по безопасности .
- ^ «SafeCurves: выбор безопасных кривых для криптографии с эллиптическими кривыми» . 25 октября 2013 г.
- ^ Бернштейн, Дэниел Дж.; Ланге, Таня (31 мая 2013 г.). «Угрозы безопасности кривых NIST» (PDF) .
- ^ Шнайер, Брюс (15 ноября 2007 г.). «Странная история Dual_EC_DRBG» . Шнайер по безопасности .
- ^ Гринмайер, Ларри (18 сентября 2013 г.). «Попытки АНБ обойти технологию шифрования, нарушившую стандарт криптографии США» . Научный американец.
- ^ « [электронная почта защищена] \doc - project/libssh.git» . Общий репозиторий libssh .
- ^ Бернштейн, Дэниел Дж. (23 марта 2014 г.). «Как спроектировать систему подписи на основе эллиптической кривой» . Блог cr.yp.to.
Дальнейшее чтение
[ редактировать ]- Аккредитованный комитет по стандартам X9 , ASC X9 выпускает новый стандарт криптографии с открытым ключом/ECDSA , 6 октября 2020 г. Источник
- Аккредитованный комитет по стандартам X9 , Американский национальный стандарт X9.62-2005, Криптография с открытым ключом для индустрии финансовых услуг, Алгоритм цифровой подписи на основе эллиптической кривой (ECDSA) , 16 ноября 2005 г.
- Certicom Research, Стандарты эффективной криптографии, SEC 1: Криптография с эллиптическими кривыми , версия 2.0, 21 мая 2009 г.
- Лопес Дж. и Дахаб Р. Обзор криптографии с эллиптическими кривыми , Технический отчет IC-00-10, Государственный университет Кампинаса, 2000 г.
- Дэниел Дж. Бернштейн , Алгоритм возведения в степень Пиппенджера , 2002.
- Дэниел Р.Л. Браун, Общие группы, устойчивость к столкновениям и ECDSA , Проекты, коды и криптография, 35 , 119–152, 2005. Версия для электронной печати
- Ян Ф. Блейк, Гадиэль Серусси и Найджел Смарт , редакторы, «Достижения в криптографии эллиптических кривых» , серия 317 лекций Лондонского математического общества, Cambridge University Press, 2005.
- Хэнкерсон, Д.; Ванстон, С. ; Менезес, А. (2004). Руководство по криптографии на основе эллиптических кривых . Springer Профессиональные вычисления. Нью-Йорк: Спрингер . дои : 10.1007/b97644 . ISBN 0-387-95273-Х . S2CID 720546 .