Протокол согласования ключей
Эллиптическая кривая Диффи-Хеллмана ( ECDH ) — это протокол согласования ключей , который позволяет двум сторонам, каждая из которых имеет пару открытого и закрытого ключей на эллиптической кривой , устанавливать общий секрет по незащищенному каналу . [1] [2] [3] Этот общий секрет может быть напрямую использован в качестве ключа или для получения другого ключа . Затем ключ или полученный ключ можно использовать для шифрования последующих сообщений с использованием симметричного шифра . Это вариант протокола Диффи-Хеллмана, использующий криптографию на эллиптических кривых .
Протокол установления ключа
Следующий пример иллюстрирует, как устанавливается общий ключ. Предположим, что Алиса хочет установить общий ключ с Бобом , но единственный доступный им канал может быть прослушан третьей стороной. Первоначально должны быть согласованы параметры домена (то есть в простом случае или в двоичном случае). Кроме того, каждая сторона должна иметь пару ключей, подходящую для эллиптической кривой криптографии, состоящую из закрытого ключа (случайно выбранное целое число в интервале ) и открытого ключа, представленного точкой (где , то есть результат сложения с собой раз). Пусть пара ключей Алисы будет , а пара ключей Боба будет . Каждая сторона должна знать открытый ключ другой стороны до выполнения протокола.
Алиса вычисляет точку . Боб вычисляет точку . Общий секрет — это ( координата x точки). Большинство стандартизированных протоколов на основе ECDH выводят симметричный ключ, используя некоторую функцию выведения ключа на основе хэша.
Общий секрет, вычисленный обеими сторонами, одинаков, поскольку .
Единственная информация о ее ключе, которую Алиса изначально раскрывает, — это ее открытый ключ. Таким образом, ни одна сторона, кроме Алисы, не может определить закрытый ключ Алисы (Алиса, конечно, знает его, выбрав его), если только эта сторона не может решить задачу дискретного логарифма эллиптической кривой . Закрытый ключ Боба также защищен. Ни одна сторона, кроме Алисы или Боба, не может вычислить общий секрет, если только эта сторона не может решить задачу Диффи–Хеллмана эллиптической кривой .
Открытые ключи могут быть статическими (и доверенными, например, через сертификат) или эфемерными (также известными как ECDHE , где финальная буква «E» означает «эфемерный»). Эфемерные ключи являются временными и не обязательно аутентифицированными, поэтому, если желательна аутентификация, гарантии подлинности должны быть получены другими способами. Аутентификация необходима для предотвращения атак типа «человек посередине» . Если один из открытых ключей Алисы или Боба является статическим, то атаки типа «человек посередине» будут сорваны. Статические открытые ключи не обеспечивают ни прямой секретности , ни устойчивости к подмене ключа, среди прочих расширенных свойств безопасности. Владельцы статических закрытых ключей должны проверять другой открытый ключ и применять функцию безопасного вывода ключа к необработанному общему секрету Диффи-Хеллмана, чтобы избежать утечки информации о статическом закрытом ключе. Для схем с другими свойствами безопасности см. MQV .
Если Алиса злонамеренно выбирает недействительные точки кривой для своего ключа, а Боб не подтверждает, что точки Алисы являются частью выбранной группы, она может собрать достаточно остатков ключа Боба, чтобы вывести его закрытый ключ. Было обнаружено, что несколько библиотек TLS уязвимы для этой атаки. [4]
Общий секрет равномерно распределен на подмножестве размера . По этой причине секрет не следует использовать напрямую как симметричный ключ, но его можно использовать как энтропию для функции вывода ключа.
Соглашение о ключах Диффи-Хеллмана по кривым Монтгомери
Пусть такой, что . Эллиптическая кривая в форме Монтгомери — это множество всех удовлетворяющих уравнению вместе с точкой на бесконечности, обозначенной как . Это называется аффинной формой кривой. Множество всех -рациональных точек , обозначенное как , является множеством всех удовлетворяющих
вместе с . При соответствующим образом определенной операции сложения представляет собой группу с в качестве единичного элемента. Известно, что порядок этой группы кратен 4. Фактически, обычно можно получить и такие, что порядок равен для простого числа . Более подробное обсуждение кривых Монтгомери и их арифметики можно найти здесь. [5] [6] [7]
Для эффективности вычислений предпочтительнее работать с проективными координатами. Проективная форма кривой Монтгомери — . Для точки на , -координатная карта имеет следующий вид: [7] если и если . Бернштейн [8] [9] представил карту следующим образом: которая определена для всех значений и в . Следуя Миллеру [10] Монтгомери [5] и Бернштейну [9] соглашение о ключах Диффи-Хеллмана может быть выполнено на кривой Монтгомери следующим образом. Пусть будет генератором подгруппы простого порядка . Алиса выбирает секретный ключ и имеет открытый ключ ; Боб выбирает секретный ключ и имеет открытый ключ . Общий секретный ключ Алисы и Боба — . Используя классические компьютеры, наиболее известный метод получения из и требует около времени с использованием алгоритма Поллардса rho . [11]
Самым известным примером кривой Монтгомери является Curve25519 , которая была введена Бернштейном. [9] Для Curve25519, и . Другая кривая Монтгомери, которая является частью TLS 1.3, — это Curve448 , которая была введена Гамбургом. [12] Для Curve448, и . Пара кривых Монтгомери, названных M[4698] и M[4058], конкурирующих с Curve25519 и Curve448 соответственно, была предложена в. [13] Для M[4698] и для M[4058], . На уровне безопасности 256 бит были предложены три кривые Монтгомери, названные M[996558], M[952902] и M[1504058] соответственно. [14] Для M[996558], , для M[952902] и для M[1504058], соответственно. Помимо этих двух, другие предложения кривых Монтгомери можно найти по адресу. [15]
Программное обеспечение
Смотрите также
Ссылки
- ^ NIST, Специальная публикация 800-56A, Рекомендации по схемам установления парных ключей с использованием дискретной логарифмической криптографии, март 2006 г.
- ^ Certicom Research, Стандарты эффективной криптографии, SEC 1: Эллиптическая криптография, версия 2.0, 21 мая 2009 г.
- ^ Криптография NSA Suite B, Руководство по внедрению Suite B к NIST SP 800-56A. Архивировано 06.03.2016 на Wayback Machine , 28 июля 2009 г.
- ^ Тибор Ягер; Йорг Швенк; Юрай Соморовски (2015-09-04). "Практические атаки с использованием недействительных кривых на TLS-ECDH" (PDF) . Европейский симпозиум по исследованиям в области компьютерной безопасности (ESORICS'15) .
- ^ ab Монтгомери, Питер Л. «Ускорение методов Полларда и эллиптических кривых факторизации» (PDF) . Математика вычислений, 48(177):243–264, 1987.
- ^ Бернстайн, Дэниел Дж.; Ланге, Таня. «Кривые Монтгомери и лестница Монтгомери». В книге редакторов Joppe W. Bos и Arjen K. Lenstra «Темы вычислительной теории чисел, вдохновленные Питером Л. Монтгомери», страницы 82–115. Cambridge University Press, 2017.
- ^ ab Костелло, Крейг; Смит, Бенджамин. «Кривые Монтгомери и их арифметика — случай больших характеристических полей». J. Cryptographic Engineering, 8(3):227–240, 2018.
- ^ Бернстайн, Дэниел Дж. «Можем ли мы избежать проверок на ноль в быстрой арифметике эллиптических кривых?» (PDF) .
- ^ abc Bernstein, Daniel J. "Curve25519: Новые рекорды скорости Диффи-Хеллмана". В: Yung, M., Dodis, Y., Kiayias, A., Malkin, T. (ред.) Public Key Cryptography - PKC 2006. Lecture Notes in Computer Science, т. 3958. Springer, Berlin, Heidelberg.
- ^ Миллер, Виктор С. «Использование эллиптических кривых в криптографии». В Advances in Cryptology - CRYPTO'85, Санта-Барбара, Калифорния, США, 18-22 августа 1985 г., Труды, страницы 417–426. Springer Berlin Heidelberg, 1985.
- ^ Поллард, Джон М. «Методы Монте-Карло для вычисления индекса mod p» (PDF) . Математика вычислений, 32:918–924, 1978.
- ^ Гамбург, Майк. «Ed448-goldilocks, новая эллиптическая кривая». Архив ACR Cryptology ePrint, 2015:625, 2015.
- ^ Нат, Каушик; Саркар, Палаш. «Компромиссы безопасности и эффективности для эллиптических кривых Диффи-Хеллмана на уровнях безопасности 128 и 224 бит». J Cryptogr Eng 12, 107–121 (2022)., Код доступен по адресу https://github.com/kn-cs/x25519
- ^ Нат, Каушик; Саркар, Палаш. «Эффективное вычисление эллиптической кривой Диффи-Хеллмана на уровне безопасности 256 бит». IET Information Security, 14(6):633640, 2020., Код доступен по адресу https://github.com/kn-cs/mont256-dh и https://github.com/kn-cs/mont256-vec
- ^ Бернстайн, Дэниел Дж.; Ланге, Таня. «Безопасные кривые: выбор безопасных кривых для криптографии на основе эллиптических кривых» . Получено 15 апреля 2024 г.
- ^ JI (13 октября 2015 г.). «Новое поколение безопасного обмена сообщениями: «Запечатывание писем»». Блог инженеров LINE . Корпорация LINE. Архивировано из оригинала 1 февраля 2019 г. Получено 5 февраля 2018 г.