Windows NT использовала двухточечный протокол, в котором клиент может «безопасно» общаться с сервером, используя потоковый шифр для шифрования массива сообщений с некоторым ключом . Сервер также шифрует свой ответ тем же ключом . Но как он узнает об этом ключе?
В более общем плане : если Алиса и Боб используют какой-либо алгоритм шифрования / дешифрования, который работает с одним и тем же закрытым ключом , какой безопасный способ обмена этим ключом? (без использования другого ключа конечно)
Это то, о чем я всегда спрашивал себя, изучая криптографию с закрытым ключом.
cryptography
encryption
Кодда
источник
источник
Ответы:
Большинство алгоритмов с закрытым ключом полагаются на невозможность некоторых вычислений, таких как факторизация числа в его основные факторы, учитывая текущую вычислительную инфраструктуру.
В то же время большинство из них также требуют значительных вычислительных ресурсов при использовании для шифрования и дешифрования, и, следовательно, весь поток сообщений не шифруется с использованием закрытых ключей. Скорее, сообщение шифруется с использованием другого (менее интенсивного) алгоритма, а ключ, используемый для этого шифрования, шифруется с использованием закрытого ключа.
Конечно, как вы указываете, безопасный обмен ключами остается проблемой, которая может быть в определенной степени решена путем:
источник
Всякий раз, когда Алиса и Боб хотят договориться об одном и том же закрытом ключе, самый популярный метод - использовать Диффи-Хеллмана . Это работает следующим образом:
Сначала выбираются два публичных значения, скажем,n=13 g=17
Алиса вычисляет: а Боб вычисляет: , в этом случае и и они обмениваются значениями друг друга (могут быть через чат), то есть все знают значения и .A=gamodn B=gbmodn A=12 B=4 A B
Алиса вычисляет: а Боб вычисляет: , в этом случае .K=Bamodn K=Abmodn K=12
Теперь Алиса и Боб согласовали значение качестве своего ключа. Обратите внимание, что, поскольку значения и и очень большие простые числа, перехватчик практически не может их разложить на множители и вычислить сам ключ.K n g
Проблема криптографии с закрытым ключом заключается в атаке «человек посередине», и это является одной из основных причин выбора криптографии с открытым ключом вместо криптографии с закрытым ключом.
источник
Во-первых, пункт терминологии: то, что вы описываете, - это симметричное шифрование , а ключ, которым делятся участники, обычно называют секретным ключом; «Закрытый ключ» обычно означает ту часть ключа в криптографии с открытым ключом, которую знает только один участник.
Существует два способа распространения секретного ключа: его можно транспортировать физически безопасным способом или с использованием другой формы шифрования, обычно криптографии с открытым ключом.
Существуют способы обмена секретным ключом, которые не требуют секретного канала связи. Наиболее популярным является протокол обмена ключами Диффи-Хеллмана, Принцип Диффи-Хеллмана заключается в том, что каждый участник генерирует свою собственную пару ключей, и существует математическая операция, которая создает большое число из одного открытого ключа и одного закрытого ключа. Эта математическая операция обладает очень интересным свойством: большое число может быть создано из личного ключа Алисы и открытого ключа Боба или из личного ключа Боба и открытого ключа Алисы; вы получаете тот же номер в любом случае. Таким образом, Алиса и Боб обмениваются своими открытыми ключами, и обе стороны знают большое количество, которое затем можно использовать в качестве секретного ключа. Подслушиватель может обнаружить оба открытых ключа, но это невозможно… найти большое количество только из открытых ключей.
Обмен ключами Диффи-Хеллмана позволяет двум сторонам обмениваться секретами независимо от того, кто их слушает. Тем не менее, он не аутентифицирует Алису Бобу или наоборот. Поэтому он поддается атаке «человек посередине» : Мэллори выполняет обмен ключами с Алисой (которая считает, что она разговаривает с Бобом) и отдельно с Бобом (который считает, что он разговаривает с Алисой), и, таким образом, принимает решение или принимает решение. хотя бы знать секрет.
Когда злоумышленник может перехватывать и вводить сообщения, участникам требуется дополнительная криптография для аутентификации друг друга. (Пассивный злоумышленник фактически означает, что базовый транспортный протокол обеспечивает аутентификацию.) Каждый участник может легко узнать открытый ключ друг друга. Если Алиса знает открытый ключ Боба:
Существует много вариантов, в которых используется один из этих методов (или еще один вариант) в одном направлении и тот же или другой метод в другом направлении, или которые аутентифицируются только в одном направлении. Например, SSL / TLS (уровень криптографии для многих протоколов, таких как HTTPS, SMTPS, IMAPS и т. Д.), Может использовать несколько различных комбинаций шифров и обычно аутентифицирует сервер на клиенте, но может также дополнительно аутентифицировать клиента. Диффи-Хеллман медлителен и громоздок для этого приложения; самый распространенный алгоритм с открытым ключом - это RSA .
Конечно, Алиса и Боб могут не знать открытый ключ друг друга заранее. Таким образом, они вместо этого полагаются на цепочку доверия: Боб отправляет Алисе свой открытый ключ вместе с подписанным заявлением третьей стороны, подтверждающим, что этот ключ действительно является открытым ключом Боба. Это подписанное заявление называется сертификатом, а третья сторона является центром сертификации . Третья сторона может быть известна Бобу, или ее личность может быть подтверждена четвертой стороной, и так далее. В конце концов, эта цепочка доверия (… ваучеры для Доминика, ваучеры для Чарли, который поручается за Боба) должна достигнуть некоторой стороны Рона, которой Боб уже доверяет, то есть Боб имеет открытый ключ Рона и доверяет Рону только подписывать действительные сертификаты.
Существуют протоколы, которые не основаны на криптографии с открытым ключом. В частности, протокол Kerberos используется как в сетях на основе Unix, так и на основе Windows для установления соединений между клиентом и сервером. Kerberos использует центральный сервер аутентификации, называемый центром распространения ключей (KDC). KDC должен хранить пароль пользователя в базе данных, и клиент обычно запрашивает пароль у пользователя. Чтобы избежать раскрытия пароля, протокол не использует пароль напрямую, а использует криптографический хеш или, в более общем случае, функцию получения ключа, применяемую к паролю.
С помощью этого общего секрета клиент и KDC устанавливают безопасный канал, и KDC отправляет клиенту «билет». Билет содержит сеансовый ключ (то есть вновь сгенерированный секретный ключ), а также копию ключа, зашифрованного другим симметричным ключом, совместно используемым между KDC и сервером, с которым клиент хочет связаться. Затем клиент пересылает эту зашифрованную копию на сервер. Сервер расшифровывает это сообщение, чтобы получить ключ сеанса, и генерирует одноразовый номер, который он шифрует с помощью ключа сеанса и отправляет обратно клиенту. Затем клиент инициирует безопасный канал с сервером, зашифрованный с помощью ключа сеанса, и начинает с показа, что он может расшифровать одноразовый номер: это аутентифицирует клиента на сервере. Установление сеанса Kerberos является вариантом протокола Нидхэма-Шредера .
¹ В том смысле, что криптографы очень старались, но лучший способ, который они нашли, - это недостижимая вычислительная мощность.
источник
Возможный способ - сначала использовать криптографию с открытым ключом для обмена закрытым ключом. Однако, когда это невозможно, существуют некоторые конкретные протоколы обмена ключами, вероятно, наиболее известным является протокол Диффи-Хеллмана .
источник
Всегда есть тривиальное решение: пользователи встречаются и обмениваются ключами. Это не очень практично для многих случаев, но возможно.
В дополнение к протоколу обмена ключами Диффи-Хеллмана (DH) существуют также протоколы распределения квантовых ключей . Одним из наиболее известных протоколов QKD является протокол Беннетта-Брассарда, BB84 .
Преимущество BB84 перед DH заключается в том, что DH безопасен только в том случае, если дискретный логарифм не может быть эффективно выполнен (см. Предположение о дискретном логарифме , а также соответствующее допущение DDH ). Тем не менее, BB84 теоретически защищен. То есть, даже если , BB84 все еще будет в безопасности (но DH не будет).P=NP
С другой стороны, атака MITM также является проблемой для BB84, и нужно предположить, что пользователи используют аутентифицированный канал для преодоления этой проблемы (но для этого обычно требуется предварительный обмен ключом аутентификации, и мы вернулись на круги своя).
источник