Введение

Протокол согласования ключей. Эллиптическая кривая Диффи — Хеллмана (ECDH) — это протокол согласования ключей, позволяющий двум сторонам, каждая из которых обладает парой ключей (открытым и закрытым) для эллиптической кривой, установить общий секрет по незащищенному каналу. Этот общий секрет может быть непосредственно использован в качестве ключа или для генерации другого ключа. Затем ключ или полученный ключ может быть использован для шифрования последующей связи с помощью симметричного шифра. Это вариант протокола Диффи — Хеллмана, использующий криптографию на эллиптических кривых.

Протокол о ключевом учреждении

Следующий пример иллюстрирует, как устанавливается общий ключ. Предположим, что Алиса хочет установить общий ключ с Бобом, но единственный доступный для них канал может быть прослушан третьей стороной. Первоначально параметры домена (то есть, в случае простых чисел или в двоичном случае) должны быть согласованы. Кроме того, каждая сторона должна иметь пару ключей, подходящую для криптографии на эллиптических кривых, состоящую из частного ключа (случайно выбранного целого числа в интервале) и открытого ключа, представленного точкой (где , то есть результат сложения к себе раз). Пусть пара ключей Алисы будет , а пара ключей Боба будет . Каждая сторона должна знать открытый ключ другой стороны до выполнения протокола. Алиса вычисляет точку , Боб вычисляет точку . Общий секрет — это (x-координата точки). Большинство стандартизированных протоколов, основанных на ECDH, получают симметричный ключ из , используя некоторую функцию вывода ключа на основе хэша. Общий секрет, рассчитанный обеими сторонами, равен, потому что единственная информация о ее ключе, которую Алиса изначально раскрывает, — это ее открытый ключ. Таким образом, ни одна сторона, кроме Алисы, не может определить частный ключ Алисы (Алиса, конечно, знает его, поскольку выбрала его), если только эта сторона не сможет решить задачу дискретного логарифма на эллиптической кривой. Частный ключ Боба также защищен. Ни одна сторона, кроме Алисы или Боба, не может вычислить общий секрет, если только эта сторона не сможет решить задачу Диффи — Хеллмана на эллиптической кривой. Открытые ключи могут быть либо статическими (и доверенными, например, через сертификат), либо эфемерными (также известными как ECDHE, где конечная «E» означает «эфемерный»). Эфемерные ключи являются временными и не обязательно аутентифицированными, поэтому, если требуется аутентификация, гарантии подлинности должны быть получены другими способами. Аутентификация необходима для предотвращения атак типа «человек посередине». Если один из открытых ключей Алисы или Боба статичен, то атаки типа «человек посередине» будут предотвращены. Статические открытые ключи не обеспечивают ни прямой секретности, ни устойчивости к компрометации ключей, среди других расширенных свойств безопасности. Владельцы статических закрытых ключей должны проверять другой открытый ключ и применять безопасную функцию вывода ключа к исходному общему секрету Диффи — Хеллмана, чтобы избежать утечки информации о статическом закрытом ключе. Для схем с другими свойствами безопасности см. MQV. Если Алиса злонамеренно выбирает недействительные точки кривой для своего ключа, а Боб не проверяет, что точки Алисы принадлежат выбранной группе, она может собрать достаточно остатков от ключа Боба, чтобы вывести его закрытый ключ. Было обнаружено, что несколько библиотек TLS уязвимы для этой атаки. Общий секрет равномерно распределен на подмножестве размера . По этой причине секрет не следует использовать напрямую в качестве симметричного ключа, но его можно использовать в качестве энтропии для функции вывода ключа.

Соглашение Диффи-Хеллмана по поводу кривых Монтгомери

Пусть такая, что эллиптическая кривая Монтгомери является множеством всех точек, удовлетворяющих уравнению, вместе с точкой в бесконечности, обозначаемой как . Это называется аффинной формой кривой. Множество всех рациональных точек , обозначаемое как , является множеством всех точек, удовлетворяющих , вместе с . При соответствующим образом определенной операции сложения, является группой с в качестве нейтрального элемента. Известно, что порядок этой группы кратен 4. Фактически, обычно можно найти такие и , что порядок равен для простого числа . Для более подробного обсуждения кривых Монтгомери и их арифметики можно обратиться к . Для вычислительной эффективности предпочтительнее работать с проективными координатами. Проективная форма кривой Монтгомери имеет вид . Для точки на , карта координат выглядит следующим образом: Монтгомери. Согласование ключей Диффи-Хеллмана на кривой Монтгомери может быть выполнено следующим образом. Пусть будет генератором подгруппы простого порядка в . Алиса выбирает секретный ключ и имеет открытый ключ ; Боб выбирает секретный ключ и имеет открытый ключ . Общий секретный ключ Алисы и Боба равен . Используя классические компьютеры, лучший известный метод получения из и требует примерно времени с использованием алгоритма Полларда ро. Наиболее известный пример кривой Монтгомери — Curve25519, представленная Бернштейном. Для Curve448, а также пара кривых Монтгомери, названных M[4698] и M[4058], конкурентоспособных Curve25519 и Curve448 соответственно, были предложены в . Для M[4698] , а для M[4058] . На уровне безопасности 256 бит были предложены три кривые Монтгомери: M[996558], M[952902] и M[1504058]. Для M[996558], для M[952902], и для M[1504058], соответственно. Помимо этих, другие предложения по кривым Монтгомери можно найти на.

Программное обеспечение

Curve25519 — популярный набор параметров эллиптической кривой и эталонная реализация, разработанная Дэниелом Дж. Бернштейном на языке C. Также доступны привязки и альтернативные реализации. Приложение для обмена сообщениями LINE использует протокол ECDH для сквозного шифрования всех сообщений, отправляемых через приложение, начиная с октября 2015 года. Протокол Signal использует ECDH для обеспечения безопасности после компрометации. Реализации этого протокола можно найти в Signal, WhatsApp, Facebook Messenger и Skype.