Кривая25519
В криптографии , Curve25519 — это эллиптическая кривая используемая в криптографии с эллиптической кривой (ECC), обеспечивающая 128 бит безопасности 256 бит ( размер ключа ) и предназначенная для использования со схемой согласования ключей Диффи-Хеллмана на основе эллиптической кривой (ECDH). Это одна из самых быстрых кривых в ECC, и она не защищена никакими известными патентами. [1] Эталонная реализация является общедоступным программным обеспечением . [2] [3]
В исходной статье Curve25519 она определена как функция Диффи-Хеллмана (DH). С тех пор Дэниел Дж. Бернштейн предложил использовать имя Curve25519 для базовой кривой и имя X25519 для функции DH. [4]
Математические свойства
[ редактировать ]Используемая кривая , кривая Монтгомери , над простым полем, определяемым простым числом (отсюда и цифра «25519» в названии), и он использует базовую точку. . Эта точка порождает циклическую подгруппу, порядок которой равен простому числу . Эта подгруппа имеет кофактор , что означает, что количество элементов в подгруппе равно группа эллиптических кривых. Использование подгруппы простого порядка предотвращает проведение атаки по алгоритму Полига – Хеллмана . [5]
В протоколе используется сжатая эллиптическая точка (только координаты X ), поэтому он позволяет эффективно использовать лестницу Монтгомери для ECDH , используя только координаты XZ . [6]
Curve25519 построен таким образом, чтобы избежать многих потенциальных ошибок реализации. [7]
По своей конструкции Curve25519 невосприимчив к атакам по времени, принимает любую 32-байтовую строку в качестве допустимого открытого ключа и не требует проверки того, что данная точка принадлежит кривой или генерируется базовой точкой. [ нужна ссылка ]
Кривая бирационально эквивалентна скрученной кривой Эдвардса, используемой в Ed25519. [8] [9] схема подписи. [10]
История
[ редактировать ]В 2005 году Curve25519 был впервые выпущен Дэниелом Дж. Бернштейном . [5]
В 2013 году интерес начал значительно возрастать, когда было обнаружено, что АНБ потенциально внедрило бэкдор на основе кривой P-256 в алгоритм Dual_EC_DRBG . [11] Хотя это и не связано напрямую, [12] подозрительные аспекты констант P-кривой NIST [13] вызвало опасения [14] что АНБ выбрало значения, которые дали им преимущество во взломе шифрования. [15] [16]
«Я больше не доверяю константам. Я считаю, что АНБ манипулирует ими через свои отношения с промышленностью».
- Брюс Шнайер , АНБ взламывает большую часть шифрования в Интернете (2013)
С 2013 года Curve25519 стал фактической альтернативой P-256 и используется в самых разных приложениях. [17] Начиная с 2014 года OpenSSH [18] на основе Curve25519 по умолчанию используется ECDH , а в GnuPG добавлена поддержка ключей Ed25519 для подписи и шифрования. [19] В конечном итоге в 2020 году использование кривой было стандартизировано как для обмена ключами, так и для подписи. [20] [21]
В 2017 году NIST объявил, что Curve25519 и Curve448 будут добавлены в специальную публикацию 800-186, в которой указаны утвержденные эллиптические кривые для использования федеральным правительством США. [22] Оба описаны в RFC 7748. [23] В проекте FIPS 186-5 2019 года отмечается намерение разрешить использование Ed25519. [24] для цифровых подписей. Обновление специальной публикации 800-186 2023 года позволяет использовать Curve25519. [25]
В 2018 году в спецификацию DKIM были внесены изменения, позволяющие использовать подписи с помощью этого алгоритма. [26]
Также в 2018 году был опубликован RFC 8446 как новый стандарт Transport Layer Security v1.3 . Рекомендуется поддержка алгоритмов X25519 , Ed25519 , X448 и Ed448 . [27]
Библиотеки
[ редактировать ]- Libgcrypt [28]
- libssh [18] [29]
- libssh2 (начиная с версии 1.9.0)
- NaCl [30]
- ГнуTLS [31]
- mbed TLS (ранее PolarSSL) [32]
- волкSSL [33]
- Ботан [34]
- Сканал [а] [35]
- Либнатрий [36]
- OpenSSL начиная с версии 1.1.0 [37]
- LibreSSL [38]
- НСС начиная с версии 3.28 [39]
- Крипто++
- Curve25519-Далек [40]
- Надувной замок [41]
Протоколы
[ редактировать ]- OMEMO , предлагаемое расширение для XMPP (Jabber). [42]
- Безопасная оболочка
- Протокол сигнала
- Матрица (протокол)
- Токс
- Zcash
- Безопасность транспортного уровня
- WireGuard
Приложения
[ редактировать ]- Android-приложение «Разговоры» [б]
- Криптокот [43] [б]
- DNSCrypt [44]
- DNSкривая
- Дропбир [29] [45]
- Facebook Мессенджер [с] [д]
- Наслаждайтесь своим плагином [46] [б]
- GNUnet [47]
- ГнуПГ
- Google Алло [и] [д]
- I2P [48]
- ИПФС [49]
- iOS [50]
- Монеро [51]
- OpenBSD [ф]
- OpenSSH [29] [г]
- Перио [56]
- Протонная почта [57]
- Шпатлевка [58]
- Сигнал [д]
- Тихий телефон
- СмартFTP [29]
- СШЖ [29]
- СКРЛ [59]
- Мгновенный мессенджер Threema [60]
- TinySSH [29]
- КрошечныйТЕРМ [29]
- Тор [61]
- Вайбер [62]
- WhatsApp [д] [63]
- Проволока
- WireGuard
Примечания
[ редактировать ]- ^ Начиная с Windows 10 (1607), Windows Server 2016.
- ^ Jump up to: Перейти обратно: а б с По OMEMO протоколу
- ^ Только в «Секретных беседах»
- ^ Jump up to: Перейти обратно: а б с д Через сигнальный протокол
- ^ Только в «режиме инкогнито».
- ^ Используется для подписи релизов и пакетов. [52] [53]
- ^ Эксклюзивный обмен ключами в OpenSSH 6.7 при компиляции без OpenSSL . [54] [55]
Ссылки
[ редактировать ]- ^ Бернштейн. «Нерелевантные патенты на криптографию с эллиптическими кривыми» . cr.yp.to . Проверено 8 февраля 2016 г.
- ^ Современная функция Диффи-Хеллмана Дэниела Дж. Бернстайна «Моя библиотека Curve25519 вычисляет функцию Curve25519 с очень высокой скоростью. Библиотека находится в свободном доступе».
- ^ «Х25519» . Крипто++ . 5 марта 2019 г. Архивировано из оригинала 29 августа 2020 г. . Проверено 3 февраля 2023 г.
- ^ «Именование [Cfrg] 25519» . Проверено 25 февраля 2016 г.
- ^ Jump up to: Перейти обратно: а б Бернштейн, Дэниел Дж. (2006). «Curve25519: Новые рекорды скорости Диффи-Хеллмана» (PDF) . В Юнге, Моти; Додис, Евгений; Киайас, Аггелос; и др. (ред.). Криптография с открытым ключом — PKC 2006 . Криптография с открытым ключом. Конспекты лекций по информатике. Том. 3958. Нью-Йорк: Спрингер. стр. 207–228. дои : 10.1007/11745853_14 . ISBN 978-3-540-33851-2 . МР 2423191 .
- ^ Ланге, Таня . «EFD / Большая характеристика рода-1 / Координаты XZ для кривых Монтгомери» . EFD/База данных явных формул . Проверено 8 февраля 2016 г.
- ^ Бернштейн, Дэниел Дж.; Ланге, Таня (22 января 2017 г.). «SafeCurves: Введение» . SafeCurves: выбор безопасных кривых для криптографии с эллиптическими кривыми . Проверено 8 февраля 2016 г.
- ^ Бернштейн, Дэниел Дж.; Дуиф, Нильс; Ланге, Таня; Швабе, Питер; Ян, Бо-Инь (22 января 2017 г.). «Ed25519: высокоскоростные подписи с высоким уровнем безопасности» . Проверено 9 ноября 2019 г.
- ^ Бернштейн, Дэниел Дж.; Дуиф, Нильс; Ланге, Таня; Швабе, Питер; Ян, Бо-Инь (26 сентября 2011 г.). «Высокоскоростные подписи высокой безопасности» (PDF) . Проверено 9 ноября 2019 г.
- ^ Бернштейн, Дэниел Дж .; Ланге, Таня (2007). «Быстрое сложение и удвоение на эллиптических кривых» . В Куросаве, Каору (ред.). Достижения в криптологии – ASIACRYPT 2007 . Достижения в криптологии — ASIACRYPT. Конспекты лекций по информатике. Том. 4833. Берлин: Шпрингер. стр. 29–50. дои : 10.1007/978-3-540-76900-2_3 . ISBN 978-3-540-76899-9 . МР 2565722 .
- ^ Келси, Джон (май 2014 г.). «Двойной EC в X9.82 и SP 800-90» (PDF) . Национальный институт стандартов в области технологий . Проверено 2 декабря 2018 г.
- ^ Грин, Мэтью (14 января 2015 г.). «Несколько мыслей о криптографической инженерии: множество недостатков Dual_EC_DRBG» . blog.cryptographyengineering.com . Проверено 20 мая 2015 г.
- ^ «SafeCurves: Введение» .
- ^ Максвелл, Грегори (8 сентября 2013 г.). «[tor-talk] Криптовалюта, одобренная NIST в Tor?» . Проверено 20 мая 2015 г.
- ^ «SafeCurves: жесткость» . Safecurves.cr.yp.to . Проверено 20 мая 2015 г.
- ^ «АНБ взламывает большую часть шифрования в Интернете — Шнайер о безопасности» . www.schneier.com . Проверено 20 мая 2015 г.
- ^ «Вещи, которые используют Curve25519» . Проверено 23 декабря 2015 г.
- ^ Jump up to: Перейти обратно: а б Адамантиадис, Арис (3 ноября 2013 г.). «OpenSSH представляет [email protected] обмен ключами !» . libssh.org . Проверено 27 декабря 2014 г.
- ^ «GnuPG — Что нового в версии 2.1» . Август 2021.
- ^ А. Адамантиадис; либсш; С. Йозефссон; СЖД АБ; М. Баушке; Juniper Networks, Inc. (февраль 2020 г.). Метод обмена ключами Secure Shell (SSH) с использованием Curve25519 и Curve448 . дои : 10.17487/RFC8731 . RFC 8731 .
- ^ Б. Харрис; Л. Вельвиндрон (февраль 2020 г.). Алгоритмы открытого ключа Ed25519 и Ed448 для протокола Secure Shell (SSH) . дои : 10.17487/RFC8709 . RFC 8709 .
- ^ «Планы перехода для ключевых схем учреждения» . Национальный институт стандартов и технологий . 2017-10-31. Архивировано из оригинала 11 марта 2018 г. Проверено 4 сентября 2019 г.
- ^ RFC 7748. Получено из rfc:7748.
- ^ Регеншайд, Эндрю (31 октября 2019 г.). «ФИПС ПАБ 186-5» . Национальный институт стандартов и технологий (отозванный проект). doi : 10.6028/NIST.FIPS.186-5-draft . S2CID 241055751 .
- ^ «Рекомендации по криптографии на основе дискретного логарифма» (PDF) .
- ^ Джон Левин (сентябрь 2018 г.). Новый метод криптографической подписи для почты, идентифицируемой DomainKeys (DKIM) . IETF . дои : 10.17487/RFC8463 . RFC 8463 .
- ^ Э Рескорла (сентябрь 2018 г.). Протокол безопасности транспортного уровня (TLS) версии 1.3 . IETF . дои : 10.17487/RFC8446 . RFC 8446 .
- ^ Вернер Кох (15 апреля 2016 г.). «Объявление о выпуске Libgcrypt 1.7.0» . Проверено 22 апреля 2016 г.
- ^ Jump up to: Перейти обратно: а б с д и ж г Сравнение реализации SSH. «Сравнение методов обмена ключами» . Проверено 25 февраля 2016 г.
- ^ "Введение" . yp.to. Проверено 11 декабря 2014 г.
- ^ «крапива: ссылка на файл Curve25519.h» . Фосси (документация doxygen). Архивировано из оригинала 20 мая 2015 г. Проверено 19 мая 2015 г.
- ^ Лимитед, АРМ. «Выпущена версия PolarSSL 1.3.3 — Технические обновления — mbed TLS (ранее PolarSSL)» . tls.mbed.org . Проверено 19 мая 2015 г.
- ^ «Встроенная библиотека wolfSSL SSL/TLS | Продукты – wolfSSL» .
- ^ «Botan: src/lib/pubkey/curve25519/curve25519.cpp Исходный файл» . botan.randombit.net .
- ^ Юстинья. «TLS (Schannel SSP)» . docs.microsoft.com . Проверено 15 сентября 2017 г.
- ^ Денис, Фрэнк. «Введение · либнатрий» . libsodium.org .
- ^ «Примечания к выпуску серии OpenSSL 1.1.0» . Фонд OpenSSL . Архивировано из оригинала 17 марта 2018 г. Проверено 24 июня 2016 г.
- ^ «Добавьте поддержку ECDHE с помощью X25519. · openbsd/src@0ad90c3» . Гитхаб .
- ^ «Примечания к выпуску NSS 3.28» . Архивировано из оригинала 9 декабря 2017 года . Проверено 25 июля 2017 г.
- ^ «Реализация групповых операций на ristretto255 и Curve25519 на чистом Rust» . Гитхаб . Проверено 14 апреля 2021 г.
- ^ "Ed25519.java" . Гитхаб . 13 октября 2021 г.
- ^ Штрауб, Андреас (25 октября 2015 г.). «Шифрование ОМЕМО» . разговоры.им .
- ^ «Криптокэт – Безопасность» . крипто.кот . Архивировано из оригинала 7 апреля 2016 г. Проверено 24 мая 2016 г.
- ^ Фрэнк Денис. «Спецификация протокола DNSCrypt версии 2» . Гитхаб . Архивировано из оригинала 13 августа 2015 г. Проверено 3 марта 2016 г.
- ^ Мэтт Джонстон. «Dropbear SSH — Изменения» . Проверено 25 февраля 2016 г.
- ^ Бахтияр Гадимов; и др. «Плагин Gajim для многоконечного шифрования сообщений и объектов OMEMO» . Гитхаб . Проверено 1 октября 2016 г.
- ^ «GNUnet 0.10.0» . gnunet.org . Архивировано из оригинала 9 декабря 2017 года . Проверено 11 декабря 2014 г.
- ^ ззз (20 сентября 2014 г.). «Релиз 0.9.15 — Блог» . Проверено 20 декабря 2014 г.
- ^ «go-ipfs_keystore.go в мастере» . Гитхаб.com. 30 марта 2022 г.
- ^ «Безопасность платформы Apple» . Поддержка Apple .
- ^ «MRL-0003 — Monero не такая уж и загадочная» (PDF) . getmonero.com . Архивировано из оригинала (PDF) 1 мая 2019 г. Проверено 5 июня 2018 г.
- ^ Муренин Константин А. (19 января 2014 г.). Соулскилл (ред.). «OpenBSD переходит к подписанным пакетам — на основе криптографии DJ Bernstein» . Слэшдот . Проверено 27 декабря 2014 г.
- ^ Муренин, Константин А. (01 мая 2014 г.). Тимофей (ред.). «Выпущена OpenBSD 5.5» . Слэшдот . Проверено 27 декабря 2014 г.
- ^ Фридл, Маркус (29 апреля 2014 г.). "ssh/kex.c#kexalgs" . Перекрестная ссылка BSD, OpenBSD src/usr.bin/ . Проверено 27 декабря 2014 г.
- ^ Муренин, Константин А. (30 апреля 2014 г.). Соулскилл (ред.). «OpenSSH больше не зависит от OpenSSL» . Слэшдот . Проверено 26 декабря 2014 г.
- ^ «Как Peerio реализует сквозное шифрование?» . Перио . Архивировано из оригинала 9 декабря 2017 г. Проверено 4 ноября 2015 г.
- ^ «Proton Mail теперь предлагает криптографию на основе эллиптических кривых для повышения безопасности и более высоких скоростей» . 25 апреля 2019 г.
- ^ «Журнал изменений PuTTY» . www.chiark.greenend.org.uk .
- ^ Стив Гибсон (декабрь 2019 г.). «Информационный документ по криптографии SQRL» (PDF) .
- ^ «Информационный документ по криптографии Threeema» (PDF) .
- ^ Роджер Динглдайн и Ник Мэтьюсон. «Спецификации протокола Tor — Блог» . Проверено 20 декабря 2014 г.
- ^ «Обзор шифрования Viber» . Вайбер. 3 мая 2016 года . Проверено 24 сентября 2016 г.
- ^ Нидхи Растоги; Джеймс Хендлер (24 января 2017 г.). «Безопасность WhatsApp и роль метаданных в сохранении конфиденциальности». arXiv : 1701.06817 [ cs.CR ].