Незашифрованный протокол SSL? - PullRequest
7 голосов
/ 18 декабря 2009

Можно ли отправить через https сообщение, которое не зашифровано? Например, требуется ли выполнять проверку и авторизацию сертификата, но не шифровать фактические данные, отправляемые через сокет?

Ответы [ 4 ]

20 голосов
/ 18 декабря 2009

Да, TLS и SSL поддерживают режимы без шифрования. Вопрос о том, настроены ли конкретные клиент и сервер для включения, является отдельной проблемой.

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

Вы можете использовать набор шифров TLS_RSA_WITH_NULL_SHA, среди прочего, для защиты подлинности и целостности трафика без шифрования.

«RSA» в этом случае относится к алгоритму обмена ключами, в то время как «SHA» относится к алгоритму аутентификации сообщений, используемому для защиты трафика от изменения. «NULL» - алгоритм шифрования или, в данном случае, отсутствие шифрования.

Важно понимать, что трафик, хотя он и не зашифрован, связан в записи SSL. Клиент и сервер должны быть с поддержкой SSL.

Если вы ищете пошаговое решение, при котором некоторые данные обмениваются через SSL, то SSL отключается, но трафик приложения продолжается, это тоже возможно, но имейте в виду, что он не обеспечивает абсолютно никакой безопасности для трафика открытого текста. ; это может быть подделано злоумышленником. Так, например, аутентификация с использованием SSL, а затем переход к протоколу «in-the-clear» для получения команд, использующих аутентификацию, согласованную с помощью SSL, будет небезопасной.

5 голосов
/ 24 февраля 2010

Спецификации SSL / TLS определяют «шифр NULL», который вы можете использовать для этого. Большинство клиентских и серверных программ отключают его по понятным причинам.

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

0 голосов
/ 18 декабря 2009

Я думаю, что вы можете.

но это будет глупо, вы потеряете точку аутентификации и оставите себя уязвимыми для атакующих, которые могут перехватывать и изменять ваши пакеты.

0 голосов
/ 18 декабря 2009

Нет, протокол не допускает этого.

Одно из решений, которое вы могли бы сделать, это подключиться через https, проверить подключение, а затем отбросить последующие подключения к HTTP с помощью файла cookie сеанса. Без этого файла cookie перенаправьте обратно на https, чтобы клиент всегда подключался к нему.

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

...