1

Я знаю, как работают HTTP-прокси, но я не уверен в HTTPS-прокси. В частности, я запутался в части шифрования.

Итак, клиент подключается к прокси по HTTPS. Это я понимаю. Теперь скажите, что пользователь хочет подключиться к Gmail через этот прокси.

  1. Должен ли прокси-сервер сначала устанавливать HTTPS-соединение с gmail?
  2. И как клиент / сервер здоровается? Зашифровывает ли клиент «привет» через https, отправляет его прокси-серверу, который, в свою очередь, расшифровывает его, шифрует его с помощью метода шифрования, согласованного с gmail, и отправляет его в gmail?
  3. И затем, после того, как клиент / сервер приветствует и согласован метод шифрования, не запутывается ли клиент? Потому что, если все запросы проходят через прокси, не должен ли метод шифрования быть одним? Или клиент шифрует свои запросы в соответствии с хостом, на который они отправляются, независимо от IP-адреса?
  4. Еще кое-что; если прокси-сервер должен заменить адрес отправителя пакетов своим собственным адресом, то разве пакеты не должны быть полностью расшифрованы? Потому что, если это не так, то как прокси должен знать, куда вставить свой IP, если все данные искажены? Или часть отправителя не зашифрована?

2 ответа2

1

Комментарий «Нет прямых прокси HTTPS» не соответствует действительности. Они очень распространены. Любая компания приличного размера будет включать в себя явные прямые прокси-серверы для SSL, чтобы они могли расшифровывать трафик https для целей мониторинга, ведения журналов и фильтрации - распространенным эвфемизмом является «Отчетность о соответствии».

Некоторый фон, который вы, возможно, уже знаете, для контекста:

Начальное рукопожатие сеанса HTTPS состоит из трех частей:

  1. Приветствие: сообщение «ClientHello», содержащее поддерживаемые им версии и шифры SSL, и сообщение «ServerHello» с аналогичной информацией. Этот шаг и следующий не зашифрованы.

  2. Сертификат Exchange: Сервер предоставляет свой сертификат SSL, который клиент должен решить, доверяет ли он ему, - обычно реализуется с неявным доверием для тех, кто подписан центрами сертификации и требует вмешательства пользователя для самостоятельной подписи.

  3. Обмен ключами - используется метод, определенный на шаге 1; самый простой метод - транзакция типа обмена ключами RSA: клиент генерирует ключ, используя случайное число, и шифрует его, используя открытый ключ сервера. Это расшифровывается с помощью закрытого ключа сервера (его можно зашифровать только с помощью открытого ключа, его нельзя расшифровать без закрытого ключа, что является тонким, но многим не понятным).

С этого момента происходит полностью зашифрованная связь с почти всем зашифрованным пакетом TCP / IP (за исключением заголовков / полей, необходимых для маршрутизации)

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

Вот объяснение от Palo Alto Networks о том, как работает прямой https-прокси (PAN-OS ссылается на их сетевое ПО):

  1. Клиент пытается связаться с www.google.com с помощью https. Трафик соответствует политике дешифрования.
  2. Этот трафик обрабатывается нашим прокси-сервером SSL, а сертификат для www.google.com создается нашей внутренней PKI (подписанной сертификатом CA).
  3. PAN-OS проксирует трафик ssl и устанавливает новое соединение ssl с веб-сервером.
  4. Веб-сервер начинает рукопожатие с устройством PAN-OS.
  5. Устройство PAN-OS завершает свое рукопожатие SSL с клиентом, представляющим сгенерированный сертификат в сообщении приветствия сервера.

Это (если злонамеренный) явный человек в середине атаки - он превращает двухстороннюю транзакцию: ПК <====> google - в две отдельные транзакции: ПК <====> Прокси и Прокси <==== > Гугл.

Примечание:

Поскольку прямые прокси-серверы в основном используются для мониторинга трафика ssl, интересно, что не прокси-метод также обсуждался в этой ссылке PAN - входящая «проверка / дешифрование», которая требует, чтобы брандмауэр имел сертификаты и ключи серверов, и поэтому может полностью расшифровать связь с помощью простого мониторинга пакетов. Кроме того, это немного расстраивает, что они рекламируют это как ключевую функцию, когда можно надеяться, что у него будет очень мало вариантов использования - это требует, чтобы у оператора брандмауэра были открытые и закрытые ключи стороннего сайта - например, Google's закрытые ключи Казалось бы, это не будет распространенным явлением.

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

Обновление, чтобы получить информацию из комментариев:

  1. Другой способ реализации прямого прокси-сервера использует туннелирование TCP, которое эффективно создает оболочку для зашифрованных данных. Начальные транзакции здесь не зашифрованы и инициируются клиентом с помощью запроса CONNECT к прокси-серверу. Как только соединение установлено, связь между клиентом и сервером зашифрована. Смотрите это для деталей.

  2. HSTS (HTTP Strict Transport Security) - это протокол, разработанный для предотвращения перехвата злоумышленниками запросов от серверов для перевода текущей транзакции из http в https. Теория, лежащая в основе этого, состоит в том, что внедрить человека в середине атаки на http тривиально, и этот прокси-агент может затем подделать переход к https, если он увидит запрос на переход. Это напрямую не влияет на работу прокси-серверов https, но связано с ними; вот гораздо лучшее объяснение

  3. MITM-атаки, HTTPS и прокси-серверы. Вот отличное объяснение того, почему атаки MITM с использованием прокси-серверов в настоящее время не эффективны при использовании «прямого» HTTPS (то есть не перехода HTTP к HTTPS, который частично адресован HSTS). Вот дополнительная информация о MITM-атаках и HTTPS из вопроса о crypto.stackexchange.

Я думаю, что отвечает на оригинальные и обновленные вопросы. Если у меня что-то не так или неясно, дайте мне знать, и я обновлю.

0

HTTPS через прокси использует команду "CONNECT". Это называется туннелированием и использует сообщение HTTP-запроса с использованием глагола CONNECT для установки ретранслятора между клиентом и запрашиваемым сервером: порт. Прокси-сервер устанавливает соединение, указывает соединение с клиентом (например, отправляет обратно 200 Connection OK) и затем удаляется.

С этого момента клиент имеет ретранслируемое соединение с конечным сервером, аналогично тому, как если бы он подключался напрямую без прокси. Это используется для настройки уровня SSL/TLS, на котором выполняются последующие зашифрованные http-запросы.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .