Введение
Протокол согласования ключей. Эллиптическая кривая Диффи — Хеллмана (ECDH) — это протокол согласования ключей, позволяющий двум сторонам, каждая из которых обладает парой ключей (открытым и закрытым) для эллиптической кривой, установить общий секрет по незащищенному каналу. Этот общий секрет может быть непосредственно использован в качестве ключа или для генерации другого ключа. Затем ключ или полученный ключ может быть использован для шифрования последующей связи с помощью симметричного шифра. Это вариант протокола Диффи — Хеллмана, использующий криптографию на эллиптических кривых.
Elliptic curve Diffie–Hellman (ECDH) is a key agreement protocol that allows two parties, each having an elliptic curve public–private key pair, to establish a shared secret over an insecure channel. This shared secret may be directly used as a key, or to derive another key. The key, or the derived key, can then be used to encrypt subsequent communications using a symmetric key cipher. It is a variant of the Diffie–Hellman protocol using elliptic curve cryptography.
Протокол о ключевом учреждении
Следующий пример иллюстрирует, как устанавливается общий ключ. Предположим, что Алиса хочет установить общий ключ с Бобом, но единственный доступный для них канал может быть прослушан третьей стороной. Первоначально параметры домена (то есть, в случае простых чисел или в двоичном случае) должны быть согласованы. Кроме того, каждая сторона должна иметь пару ключей, подходящую для криптографии на эллиптических кривых, состоящую из частного ключа (случайно выбранного целого числа в интервале) и открытого ключа, представленного точкой (где , то есть результат сложения к себе раз). Пусть пара ключей Алисы будет , а пара ключей Боба будет . Каждая сторона должна знать открытый ключ другой стороны до выполнения протокола. Алиса вычисляет точку , Боб вычисляет точку . Общий секрет — это (x-координата точки). Большинство стандартизированных протоколов, основанных на ECDH, получают симметричный ключ из , используя некоторую функцию вывода ключа на основе хэша. Общий секрет, рассчитанный обеими сторонами, равен, потому что единственная информация о ее ключе, которую Алиса изначально раскрывает, — это ее открытый ключ. Таким образом, ни одна сторона, кроме Алисы, не может определить частный ключ Алисы (Алиса, конечно, знает его, поскольку выбрала его), если только эта сторона не сможет решить задачу дискретного логарифма на эллиптической кривой. Частный ключ Боба также защищен. Ни одна сторона, кроме Алисы или Боба, не может вычислить общий секрет, если только эта сторона не сможет решить задачу Диффи — Хеллмана на эллиптической кривой. Открытые ключи могут быть либо статическими (и доверенными, например, через сертификат), либо эфемерными (также известными как ECDHE, где конечная «E» означает «эфемерный»). Эфемерные ключи являются временными и не обязательно аутентифицированными, поэтому, если требуется аутентификация, гарантии подлинности должны быть получены другими способами. Аутентификация необходима для предотвращения атак типа «человек посередине». Если один из открытых ключей Алисы или Боба статичен, то атаки типа «человек посередине» будут предотвращены. Статические открытые ключи не обеспечивают ни прямой секретности, ни устойчивости к компрометации ключей, среди других расширенных свойств безопасности. Владельцы статических закрытых ключей должны проверять другой открытый ключ и применять безопасную функцию вывода ключа к исходному общему секрету Диффи — Хеллмана, чтобы избежать утечки информации о статическом закрытом ключе. Для схем с другими свойствами безопасности см. MQV. Если Алиса злонамеренно выбирает недействительные точки кривой для своего ключа, а Боб не проверяет, что точки Алисы принадлежат выбранной группе, она может собрать достаточно остатков от ключа Боба, чтобы вывести его закрытый ключ. Было обнаружено, что несколько библиотек TLS уязвимы для этой атаки. Общий секрет равномерно распределен на подмножестве размера . По этой причине секрет не следует использовать напрямую в качестве симметричного ключа, но его можно использовать в качестве энтропии для функции вывода ключа.
The only information about her key that Alice initially exposes is her public key. So, no party except Alice can determine Alice's private key (Alice of course knows it by having selected it), unless that party can solve the elliptic curve discrete logarithm problem. Bob's private key is similarly secure. No party other than Alice or Bob can compute the shared secret, unless that party can solve the elliptic curve Diffie–Hellman problem. The public keys are either static (and trusted, say via a certificate) or ephemeral (also known as ECDHE, where final 'E' stands for "ephemeral"). Ephemeral keys are temporary and not necessarily authenticated, so if authentication is desired, authenticity assurances must be obtained by other means. Authentication is necessary to avoid man in the middle attacks. If one of either Alice's or Bob's public keys is static, then man in the middle attacks are thwarted. Static public keys provide neither forward secrecy nor key compromise impersonation resilience, among other advanced security properties. Holders of static private keys should validate the other public key, and should apply a secure key derivation function to the raw Diffie–Hellman shared secret to avoid leaking information about the static private key. For schemes with other security properties, see MQV. If Alice maliciously chooses invalid curve points for her key and Bob does not validate that Alice's points are part of the selected group, she can collect enough residues of Bob's key to derive his private key. Several TLS libraries were found to be vulnerable to this attack. The shared secret is uniformly distributed on a subset of of size For this reason, the secret should not be used directly as a symmetric key, but it can be used as entropy for a key derivation function.
Соглашение Диффи-Хеллмана по поводу кривых Монтгомери
Пусть такая, что эллиптическая кривая Монтгомери является множеством всех точек, удовлетворяющих уравнению, вместе с точкой в бесконечности, обозначаемой как . Это называется аффинной формой кривой. Множество всех рациональных точек , обозначаемое как , является множеством всех точек, удовлетворяющих , вместе с . При соответствующим образом определенной операции сложения, является группой с в качестве нейтрального элемента. Известно, что порядок этой группы кратен 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], соответственно. Помимо этих, другие предложения по кривым Монтгомери можно найти на.
along with Under a suitably defined addition operation, is a group with as the identity element. It is known that the order of this group is a multiple of 4. In fact, it is usually possible to obtain and such that the order of is for a prime For more extensive discussions of Montgomery curves and their arithmetic one may follow. For computational efficiency, it is preferable to work with projective coordinates. The projective form of the Montgomery curve is For a point on , the coordinate map is the following: Montgomery the Diffie Hellman key agreement can be carried out on a Montgomery curve as follows. Let be a generator of a prime order subgroup of Alice chooses a secret key and has public key ;
Bob chooses a secret key and has public key The shared secret key of Alice and Bob is Using classical computers, the best known method of obtaining from and requires about time using the Pollards rho algorithm. The most famous example of Montgomery curve is Curve25519 which was introduced by Bernstein. For Curve448, and Couple of Montgomery curves named M[4698] and M[4058] competitive to Curve25519 and Curve448 respectively have been proposed in. For M[4698], and for M[4058], At 256 bit security level, three Montgomery curves named M[996558], M[952902] and M[1504058] have been proposed in. For M[996558], , for M[952902], and for M[1504058], respectively. Apart from these two, other proposals of Montgomery curves can be found at.
Программное обеспечение
Curve25519 — популярный набор параметров эллиптической кривой и эталонная реализация, разработанная Дэниелом Дж. Бернштейном на языке C. Также доступны привязки и альтернативные реализации. Приложение для обмена сообщениями LINE использует протокол ECDH для сквозного шифрования всех сообщений, отправляемых через приложение, начиная с октября 2015 года. Протокол Signal использует ECDH для обеспечения безопасности после компрометации. Реализации этого протокола можно найти в Signal, WhatsApp, Facebook Messenger и Skype.