Диффи-Хеллман вместо SSL? - PullRequest
       20

Диффи-Хеллман вместо SSL?

14 голосов
/ 27 октября 2009

Может ли алгоритм обмена ключами Диффи-Хеллмана использоваться для шифрования связи клиент-сервер на веб-странице вместо SSL? Если это возможно, каковы недостатки (то есть, почему стандарт использует SSL, который требует центра сертификации)? Насколько я понимаю, Диффи-Хеллмана можно использовать для секретного установления общего ключа, который затем можно использовать для шифрования любых дальнейших сообщений.

Ответы [ 5 ]

22 голосов
/ 27 октября 2009

Два не совсем сопоставимы. DH - это алгоритм обмена ключами, не более и не менее. SSL пытается установить, что сервер, к которому вы подключаетесь, действительно тот, о ком он говорит. Для этого он использует сертификат, который можно отследить кому-то, кому вы (как предполагается) можете доверять.

DH сам по себе только удерживает других от чтения переданных данных. SSL предназначен для установления значительно большего (но может использовать DH, чтобы другие не читали поток).

Просто для наглядного примера, используя DH (сам по себе), человек в средней атаке довольно прост. Если я смогу заставить вас подключиться к моему серверу вместо того, на который вы рассчитывали, я могу использовать DH для установления «безопасного» сеанса с вами. Затем я подключаюсь к серверу, который вы изначально намеревались. Каждый пакет, который я получаю от вас, я дешифрую, повторно шифрую ключом, который использовал для подключения к этому серверу, и отправляю на этот сервер. Я делаю то же самое со всеми ответными пакетами. Для вас все выглядит так, как будто оно пришло непосредственно с исходного сервера, а сделанная вами покупка (например) работает как обычно. Единственное, что изменится, это то, что я также сохраню номер вашей кредитной карты, и когда вы попытаетесь заправить свой автомобиль топливом на следующий день, заряд будет отклонен, потому что за это время я потратил весь ваш кредит.

Аутентификация в SSL по крайней мере предназначена для предотвращения этого. Если ваш браузер попытался подключиться к (например) www.amazon.com, он должен предупредить вас, если в моем SSL-сертификате не указано, что он был выпущен для www.amazon.com - и центр сертификации не должен выдавать такой сертификат для никому кроме Amazon.

DH сам по себе даже не гарантирует большей части того, что я сказал выше. Сам по себе DH - это просто способ обмена ключами (или, возможно, его можно сформулировать как «обмен информацией, необходимой обеим сторонам для создания идентичных ключей без обмена самим ключом в открытом виде»). После того, как у обеих сторон есть ключ, они могут (и, вероятно, будут) использовать его для шифрования / дешифрования данных - но это шифрование фактически отделено от самого DH.

9 голосов
/ 27 октября 2009

На самом деле Диффи-Хеллман является частью SSL. Но одна часть не заменяет другую.

С здесь SSL Диффи-Хелман используется для:

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

4 голосов
/ 27 октября 2009

Вы можете использовать анонимное соглашение о ключе Диффи-Хеллмана с SSL. Это обеспечивает конфиденциальность на канале, но без аутентификации.

Конечно, без аутентификации вы действительно не сможете получить конфиденциальность, потому что ваш частный канал может быть подключен к «человеку посередине». Вот почему анонимные комплекты шифрования DH не приветствуются.

Если отсутствие сертификата не позволяет использовать SSL там, где он действительно необходим, получите бесплатный по адресу startcom.org.

2 голосов
/ 27 октября 2009

Обмен ключами Диффи-Хеллмана составляет только для обмена ключами. Он не дает вам аутентификацию (с кем вы разговариваете), для этого вам нужны сертификаты и PKI.

Так что да, вы можете делать шифрование, но вы не знаете, с кем разговариваете

1 голос
/ 27 октября 2009

Обмен ключами DH сам по себе не может выполнять шифрование. Он используется для установки ключа сеанса, но не для шифрования. Таким образом, на этом уровне вопрос поставлен неправильно или выявляет либо недостаточную точность, либо непонимание (я полагаю, на этот раз проблема заключается в точности).

Вопрос:

  • Хотите ли вы вообще зашифровать данные с кем-либо?
  • Хочешь быть уверенным, с кем говоришь?

Как уже указывалось, SSL использует обмен ключами DH для установления сеансового ключа. Однако это также гарантирует, что программа на другом конце - это тот, кому вы доверяете (прямо или косвенно). Если вам не нужно беспокоиться о том, заслуживает ли другой человек доверия, вы можете просто использовать простой обмен ключами DH и затем отправлять зашифрованные данные без необходимости сертификатов. Но вы не будете уверены, с кем разговариваете, если не подтвердите это - и сертификаты, используемые SSL и т. Д., Помогут в этом подтверждении.

...