Я использую соединение HTTPS без действительного сертификата SSL. Безопасно ли соединение? Информация зашифрована?
Безопасно ли соединение HTTPS без действительного сертификата SSL?
Ответы (6)
Соединение шифруется, даже если сертификат SSL недействителен (истек срок действия, змеиное масло, ненадежный ЦС и т. д.). Проверка SSL-сертификата просто гарантирует, что вы подключаетесь к тем людям, к которым, по вашему мнению, подключаетесь. Шифрование не принесет вам никакой пользы, если люди, расшифровывающие ваши данные, являются взломщиками, а не PayPal.
На самом деле можно установить зашифрованное соединение между совершенно незнакомыми людьми без сертификата, используя алгоритмы обмена ключами Диффи-Хеллмана или подобные.
Алиса и Боб договариваются о случайном числе x. Алиса вычисляет xa, где a — большое простое число, известное только Алисе, и отправляет его Бобу. Боб вычисляет xb и отправляет его Алисе. Алиса вычисляет (xb)a, а Боб вычисляет (xa)b . Поскольку (xa)b = (xb)a = xab, Алиса и Боб теперь оба знают число xab и могут его использовать. в качестве ключа шифрования. Прелесть этого в том, что Боб не знает a, Алиса не знает b, а любые перехватчики не знают ни одного числа (поскольку вычисление a от xa, в случае больших чисел, потребуются годы).
Как указывает supercat, это само по себе все еще подвержено атаке «человек посередине», и поэтому по крайней мере один конец транзакции должен пройти аутентификацию с использованием сертификата. Однако, если быть точным, это проверяет не сервер, а браузер, и большинство браузеров позволят пользователю продолжить, если сертификат недействителен (или, возможно, даже мусор). В этом случае соединение все равно будет значительно более безопасным, чем обычное соединение. Чтобы прослушивать, вам нужно было бы иметь возможность манипулировать IP-маршрутизацией или поиском DNS, и вам нужно было бы настроить его до того, как соединение будет впервые установлено, что непросто сделать.
Кстати, пары ключей в сертификатах не используются для шифрования фактического трафика; они используются для создания нового одноразового ключа для гораздо более быстрого симметричного шифра (такого как DES), который затем выполняет остальную часть работы.
Если бы не было проверки SSL-сертификатов, то кто-то, перехвативший канал связи, мог бы перехватить запрос на подключение к https://www.acmebank.com, отправить собственный запрос на www.acmebank.com и согласовать ключи как с acmebank.com, так и с пользователем. После этого он может получить каждый кусочек данных от пользователя, расшифровать с помощью ключа пользователя и зашифровать с помощью ключа acmebank, а также сделать то же самое с данными с acmebank.com. Конечным результатом будет то, что ни пользователь, ни acmebank не увидят ничего неправильного, но перехватчик сможет расшифровать все данные между пользователем и acmebank. Пользователь и банк будут использовать разные ключи для связи, но ни одна организация не будет об этом знать. Добавление в протокол любого стандартного аспекта для запроса того, какой ключ используется, не поможет, поскольку перехватчик может обнаружить такие запросы и соответствующим образом изменить ответы.
SSL предотвращает атаку «человек посередине», требуя от хоста отправить получателю копию ключа, который использует хост, зашифрованную в форме, которую злоумышленник не сможет подделать (если только злоумышленник не сможет подделать CA). по крайней мере удостоверения). Если не использовать сертификат, выданный ЦС, будет слабая защита от атаки «человек посередине», хотя зашифрованный уровень предотвратит пассивную или ретроспективную расшифровку содержимого сеанса (кстати, я бы хотел, чтобы были стандарты для чего-то между незашифрованной связью и SSL, для ситуаций, когда пассивное или ретроспективное дешифрование является основной угрозой, но я не знаю ни одной).
Не беспокойтесь больше о недействительном ssl-сертификате. Теперь вы можете сгенерировать бесплатный действительный сертификат браузера для своего сервера так же легко, как и сертификат змеиного масла (самозаверяющий, недействительный для браузера). Посетите https://letsencrypt.org/, это бесплатно и открыто для внесения вклада.
Неа. Что вы делаете при использовании HTTPS, так это говорите браузеру подключаться через другой порт (443), тогда как обычно вы подключаетесь через (80). Без сертификата сервер откажет в соединении. HTTPS просто невозможен без сертификата. Посмотрите здесь, и вы увидите, что для работы необходим сертификат.
Да, можно установить зашифрованное соединение, но все же возможно, что вы общаетесь со взломанным cpmputer, а не с реальным сервером. Таким образом, взломанный компьютер сообщает серверу, что он будет клиентом, расшифровывает все данные, сохраняет их и отправляет зашифрованные данные клиенту (и сообщает ему, что он будет сервером). Так что это просто безопасное соединение, если между сервером и клиентом нет уязвимого места, чего никто не может гарантировать.