Обмен криптографическими ключами
Ранее мы обсуждали разницу между симметричным и асимметричным шифрованием, а сегодня поговорим о том, как на самом деле происходит обмен ключами.
Как правило, протоколы обмена криптографическими ключами или обмена зашифрованными ключами (EKE) работают, позволяя двум сторонам генерировать общий секрет, не раскрывая секрет третьим лицам. Обычно это делается с использованием комбинации криптографии с открытым ключом и математических алгоритмов. Затем общий секрет можно использовать в качестве ключа для симметричного шифра, который позволяет обеим сторонам безопасно общаться.
Применение
Поскольку метод использует открытый ключ, он, естественно, применим только к асимметричному шифрованию, так как при симметричном шифровании ключи не являются общими — известны и согласованы заранее.
Обмен криптографическими ключами — это метод безопасного обмена криптографическими ключами по сети. Это фундаментальный аспект многих криптографических протоколов, поскольку он позволяет двум сторонам установить общий секрет, который можно использовать для безопасной связи друг с другом.
Обмен используется в различных приложениях, включая безопасную связь, безопасные онлайн-транзакции и контроль доступа. Он часто используется для установления безопасного соединения между двумя сторонами, такими как клиент и сервер, или между двумя устройствами. Поэтому, прежде чем какие-либо файлы можно будет безопасно отправлять по таким протоколам, как FTPS, HTTPS и SFTP, две взаимодействующие стороны должны сначала обменяться ключами.
Обзор
В самой общей форме EKE по крайней мере одна сторона шифрует эфемерный (одноразовый) открытый ключ с помощью пароля и отправляет его второй стороне, которая расшифровывает его и использует для согласования общего ключа с первой стороной.
Существует еще один вариант этой схемы, называемый Augmented-EKE. Дополнительные методы имеют дополнительную цель гарантировать, что данные проверки пароля, украденные с сервера, не могут быть использованы злоумышленником для маскировки под клиента, если только злоумышленник сначала не определит пароль (например, выполнив атаку грубой силы на украденных данных).
Двумя наиболее популярными алгоритмами обмена ключами являются RSA и Diffie-Hellman (теперь известный как Diffie-Helmlman-Merkle). Вероятно, не будет большим преувеличением сказать, что появление этих двух протоколов обмена ключами ускорило рост Интернета, особенно с точки зрения бизнеса. Это потому, что эти два протокола позволяли клиентам и серверам, а также серверам и серверам обмениваться криптографическими ключами через небезопасную среду (Интернет) и, в свою очередь, позволяли им совершать электронные транзакции безопасным образом.
В последнее время появление эллиптической криптографии представило новые протоколы обмена, такие как ECDH (эллиптическая кривая Диффи-Хеллмана) и ECDHE (эллиптическая кривая Диффи-Хеллмана Эфемерная).
Мы сосредоточимся на семействе Diffie-Hellman, известном как DH-EKE, которое за долгие годы пережило многочисленные атаки и привело к улучшенным вариациям.
Диффи-Хеллман
В 1976 году Уитфилд Диффи и Мартин Хеллман опубликовали криптографический протокол, названный обменом ключами Диффи-Хеллмана (D-H), основанный на концепциях, разработанных аспирантом Хеллмана Ральфом Мерклем. Протокол позволяет пользователям безопасно обмениваться секретными ключами, даже если противник отслеживает этот канал связи. Он основан на идее использования возведения в степень в конечном поле для создания общего секрета, который можно использовать для шифрования и дешифрования сообщений.
Вот пример процесса обмена ключами Диффи-Хеллмана, как показано на диаграмме ниже:
Алиса и Боб договариваются о конечном поле и простом числе в этом поле (это известно как «модуль»). Допустим, они выбирают конечное поле GF(23), p и простое число 5, g .
- Алиса выбирает секретное число «а», а Боб выбирает секретное число «b». Эти целые числа будут использоваться для создания общего секрета.
- Алиса вычисляет A = 5^a mod 23 и отправляет A Бобу. Боб вычисляет B = 5^b mod 23 и отправляет B Алисе.
- Алиса вычисляет общий секрет, выполняя следующее вычисление: sharedSecret = B^a mod 23. Боб вычисляет общий секрет, используя то же вычисление: sharedSecret = A^b mod 23.
- И у Алисы, и у Боба теперь есть общий секрет, который они могут использовать в качестве ключа для шифрования и расшифровки сообщений.
# Alice's side of thNote that in this example, the shared secret is the same for both Alice and Bob, even though they used different secret integers to generate it. This is because the shared secret is generated using a mathematical function that is commutative, meaning that the order of the operands does not affect the result. This property is what allows Alice and Bob to establish a shared secret without revealing their secret integers to each other.e key exchange
# Choose finite field and prime number
field = GF(23)
prime = 5
# Choose secret integer
secretA = 6
# Compute A and send to Bob
A = (prime ^ secretA) mod field
send A to Bob
# Receive B from Bob
B = receive from Bob
# Compute shared secret
sharedSecret = (B ^ secretA) mod field
# Bob's side of the key exchange
# Choose secret integer
secretB = 15
# Compute B and send to Alice
B = (prime ^ secretB) mod field
send B to Alice
# Receive A from Alice
A = receive from Alice
# Compute shared secret
sharedSecret = (A ^ secretB) mod field
Именно это свойство позволяет Алисе и Бобу установить общий секрет, не раскрывая свои секретные целые числа друг другу.
Причина, по которой обмен DH работает, заключается в криптографии дискретного логарифма, которая основана на сложности решения проблемы дискретного логарифма.
Вкратце, это математическая задача, заключающаяся в нахождении целого числа «x» в уравнении «g^x = y mod p», где «g» и «y» известны, а «p» — простое число. Эта проблема считается труднорешаемой, поскольку не существует известного эффективного алгоритма нахождения значения «x» для произвольных значений «g», «y» и «p».
В целом, несмотря на то, что протокол Диффи-Хеллмана является широко используемым и эффективным протоколом обмена ключами, однако существует несколько практических ограничений, что делает протокол Диффи-Хеллмана на эллиптических кривых (ECDH) предпочтительным выбором, если это возможно.
Эллиптическая кривая Диффи-Хеллмана (ECDH)
Эллиптическая кривая Диффи-Хеллмана (ECDH) — это вариант протокола обмена ключами Диффи-Хеллмана, который использует криптографию на эллиптических кривых вместо традиционного возведения в степень в конечном поле. ECDH имеет ряд преимуществ перед обычным методом Диффи-Хеллмана:
- ECDH более эффективен: операции с эллиптическими кривыми обычно выполняются быстрее и требуют меньше вычислительной мощности, чем операции с конечным полем, что делает ECDH более эффективным, чем обычный алгоритм Диффи-Хеллмана. Подробнее о том, как это работает и о его преимуществах, читайте в предыдущей статье.
- ECDH более безопасен: криптография на основе эллиптических кривых обычно считается более безопасной, чем криптография с конечным полем, поскольку она более устойчива к определенным типам атак.
- Ключи ECDH короче: поскольку операции с эллиптическими кривыми используют меньшие числа, ключи ECDH обычно короче, чем обычные ключи Диффи-Хеллмана, что упрощает их передачу и хранение.
- ECDH имеет меньший размер ключа: поскольку операции с эллиптическими кривыми более эффективны и безопасны, ECDH может обеспечить тот же уровень безопасности, что и обычный метод Диффи-Хеллмана, с меньшим размером ключа. Это может быть особенно полезно в приложениях, где размер ключа является ограничивающим фактором, например, в определенных типах аппаратных устройств.
Эллиптическая кривая эфемера Диффи-Хеллмана (ECDHE)
Эллиптическая кривая Диффи-Хеллмана (ECDHE) — это вариант эллиптической кривой Диффи-Хеллмана (ECDH), в котором используются эфемерные ключи.
В ECDHE каждая сторона генерирует новую пару ключей с коротким сроком действия для каждого сеанса, а не использует пару статических ключей с длительным сроком действия, как в ECDH. Это имеет несколько преимуществ:
- Улучшенная безопасность: поскольку ECDHE использует эфемерные ключи, которые используются только для одного сеанса, он более устойчив к определенным типам атак, таким как атаки с повторным воспроизведением, при которых злоумышленник захватывает и повторно использует ключ из предыдущего сеанса.
- Прямая секретность: в ECDHE общий секрет получается из эфемерных ключей, которые отбрасываются после сеанса. Это означает, что даже если злоумышленник получит копию эфемерных ключей, он не сможет расшифровать прошлое общение, поскольку общий секрет больше не известен.
- Упрощенное управление ключами: в ECDHE каждая сторона создает новую пару ключей для каждого сеанса вместо того, чтобы управлять долгоживущей парой статических ключей. Это может упростить управление ключами и снизить риск компрометации ключей.

![В любом случае, что такое связанный список? [Часть 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































