Является ли самоподписанный сертификат SSL ложным чувством безопасности?

30

Является ли самоподписанный SSL-сертификат ложным чувством безопасности?

Если вас подслушивают, пользователь просто примет сертификат, как он всегда делает.

Andre
источник

Ответы:

25

Интересный вопрос, это зависит от использования на мой взгляд. Вы по-прежнему защищены с точки зрения того, что сеанс зашифрован, но вы не можете сказать, является ли это правильным сертификатом SSL, предоставленным вам, если вы не передаете свой корневой сертификат CA пользователям / клиентам. Для внутреннего тестирования / разработки проектов это будет работать отлично, вы создаете сертификат корневого центра сертификации, который вы используете, распространяете среди своих пользователей (это можно сделать с помощью групповой политики в Windows и через командную строку openssl в Linux / BSD), а затем используете этот корневой сертификат для подписав свой CSR. Пользователи не увидят предупреждение или что-либо еще, и вы знаете, что сертификат подписан вашим внутренним центром сертификации.

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

Однако, с другой стороны, существует множество очень дешевых «коммерческих» эмитентов сертификатов, в том числе GoDaddy . Вы можете получить сертификат примерно за 40 евро в год. GoDaddy даже предлагает бесплатные сертификаты для сайтов проекта OpenSource.

HampusLi
источник
Это именно то, что мы делаем. Будьте осторожны, хотя с дешевыми сертификатами. Некоторые из них имеют довольно странные корневые ЦС, и не все они находятся в коллекции сертификатов корневых ЦС, которые поставляются со всеми браузерами.
wolfgangsz
4
+1 за исключением того, что «самоподписанный сертификат лучше, чем отсутствие SSL вообще» - если вы убедитесь, что это ваш сертификат, а не тот, который был предоставлен MITM. Честно говоря, когда в последний раз это делал нормальный пользователь? (Я подозреваю, что ответом будет голубая луна и летающие свиньи) Другими словами, используя самозаверяющий SSL-сертификат, не раздавая ваши CA-сертификаты пользователям, вы снижаете чувствительность пользователей к страшному предупреждению, которое они получают - они узнают чтобы просмотреть это, как "ну, они сказали мне игнорировать предупреждение на mysite.example.com, чтобы я мог игнорировать его везде; смотри, значок замка!" Вуаля, ложное чувство безопасности!
Писквор
7
@Piskvor, на самом деле это вина браузеров. Во-первых, браузеры обычно не предоставляют способ «постоянно принимать» ранее неизвестные самозаверяющие сертификаты, чтобы пользователь не подвергал себя опасности при каждом входе в систему. Во-вторых, браузеры не препятствуют использованию старого простого HTTP, что также создает ложное чувство безопасности. Таким образом, HTTP всегда хуже, чем HTTPS, как в плане безопасности, так и в плане осведомленности пользователей (по крайней мере, они получают предупреждение!).
Rotsor
1
@Rotsor: Во-первых, у Opera есть встроенная функция, которую вы описываете, у FF есть Certificate Patrol (который, по крайней мере, предупреждает об изменении сертификата). Также обратите внимание, что не все в SSL является браузером (IMAPS и т. Д.). Во-вторых, как из-за существующего изобилия HTTP только сайты обнаруживают ошибку браузеров? (и нет, браузеры только с HTTPS никогда не завоевывали популярность, именно потому, что у них была значительно меньшая сеть для просмотра). В-третьих, «они получают предупреждение» было бы полезно, если бы только пользователи читали его, а не слепо нажимали «принять», чтобы оно исчезло. «Нажатие« принять »означает понимание» - общее заблуждение разработчиков.
Писквор
1
@Piskvor, приятно знать, что некоторые браузеры предоставляют такую ​​возможность. Что касается HTTP, я не могу сказать, что должно быть сделано (запрет HTTP, очевидно, не вариант), но наличие большего количества связанных с безопасностью предупреждений с самозаверяющим SSL, чем вообще без SSL, определенно неверно и является браузером. вина!
Rotsor
12

Я собираюсь не согласиться, один раз на узких технических основаниях, и один раз на общих основаниях.

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

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

Самоподписанный сертификат похож на ключ ssh из моего known_hostsфайла. Без независимой проверки я не смогу заверить меня в том, что я говорю с той системой, в которую верю; но это может заверить меня, что система, с которой я сейчас разговариваю, - это та же система, с которой я говорил в прошлый раз, когда мне показалось, что я разговаривал с ней. Мы постоянно кешируем ssh-ключи, и я еще никогда не встречал системного администратора, который независимо проверял бы более чем часть открытых ключей в своем known_hostsфайле.

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

Кроме того, тех , кто хочет представить использование сертификатов , подписанных признанный CA как одно-и только панацея безопасности Интернет , возможно , придется серьезно подумать о таких вопросах, как включение CA подписания китайского правительства в стандартной Mozilla пачке , и мошеннические SSL-сертификаты, подписанные Comodo .

MadHatter поддерживает Монику
источник
Увы, модель «доверенного ЦС» действительно сломана (и существует уже много лет); к сожалению, это не уходит (и на самом деле нет ничего лучше, чтобы заменить его). Как всегда, SSL и доверенные CA не являются волшебной пылью безопасности; пользователь должен активно поддерживать безопасность - что по большей части является довольно сумасшедшим предположением.
Писквор
2
Могут ли ваши пользователи сделать обоснованную оценку уровня уверенности в целостности своего пути к текущему DNS-серверу (включая возможность отравления кэша) и устройства, на которое они попали? Мои не знают, что такое DNS, и тем более не способны принимать обоснованные решения по безопасности относительно их подключения к серверу в другом состоянии, подключенному к другому сайту через MPLS, который подключен к пользователю через клиентскую VPN, которую они через незашифрованную кофейню wifi. Избегайте давать им эту ответственность.
Шейн Мэдден
2
@Shane Madden: одна из областей, где это возможно, - это веб-интерфейсы администрирования - например, phpMyAdmin (или, в меньшей степени, SVN поверх HTTPS). Обычно существует ограниченное количество пользователей, и они содержат значительную часть подсказки . Я бы не ожидал, что мой прадед получит предупреждение о сертификате SSL, но я определенно ожидаю, что это произойдет с таким же системным администратором, особенно если это сервер, находящийся под контролем hir. Пользователь садового сорта не имеет ни малейшего представления о known_hostsтом, на что ссылается @MadHatter.
Писквор
8

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

  • Во-первых, без предварительно установленного сертификата CA, как пользователь проверяет, что сертификат действительно исходит от вас, а не от злоумышленника? Сопоставляя поля сертификата (CN, отпечатки пальцев и т. Д.), Конечно - но против чего? Так что теперь вам нужен побочный канал для проверки сертификата - и в тех немногих случаях, которые я видел, операторы линии поддержки (которые должны были служить побочным каналом для проверки) не имеют ни малейшего представления о том, что это должно означать; Кроме того, работа с таким побочным каналом на несколько порядков дороже, чем получение сертификата, подписанного доверенным центром сертификации, поэтому пользователь должен слепо доверять вам.

  • Во-вторых, страшное предупреждение, которое получает пользователь, страшно по уважительной причине: поскольку пользователь не может / не будет проверять представленный сертификат, он может безопасно передавать данные в Elbonian Haxx0r D00dz.

  • В-третьих, и что хуже всего, вы десенсибилизируете пользователей : «ну, они сказали мне, что я должен игнорировать это предупреждение на https://mysite.example.com/ , и наковальня не упала мне на голову, и мой Золотая рыбка тоже не умерла, оооочень, это означает, что это просто еще одно окно с предупреждением без какого-либо реального значения, поэтому я могу игнорировать это окно всякий раз, когда сталкиваюсь с ним - в любом случае я получаю этот красивый значок замка, и это важно ».

Другими словами, уровень защиты сравним с обычным HTTP (за исключением прослушивания по проводам: хотя данные шифруются при передаче, это довольно анемичная функция без проверки конечной точки), но ощущение защиты неоправданно высоко , Плохая автомобильная аналогия: «У меня есть ABS, так что теперь я могу ездить безопаснее в плохих условиях» - за исключением того, что ABS есть только в рекламной брошюре автомобиля, фактически не присутствуя в автомобиле.

Рекомендуемое чтение: лучшие практики OWASP SSL

TL; DR. Используя самозаверяющие сертификаты на общедоступных сайтах, вы делаете сеть еще хуже, один невежественный пользователь за раз.

Piskvor
источник
2
@ downvoter: Я был бы признателен, если бы вы указали, где мой ответ на самом деле неверен («неправильный», а не «неудобный, неудобный и затрудняющий реализацию»). Безопасность - это сложно, и если я скажу «а-ля-ля-ля, я тебя не слышу», это ничего не исправит.
Писквор
2
Несмотря на то, что я не понизил ваш ответ, текст всплывающей подсказки на стрелке вниз указывает на отрицательное голосование только по той причине, что ответ бесполезен. Я думаю, что ложное чувство маятника безопасности может качаться и в другом направлении. Недавние нарушения Comodo RA доказывают, что «злодею» не так уж и сложно получить совершенно законный сертификат.
mahnsc
@mahnsc: Спасибо за напоминание; Я знаю об этом :-) «Является ли самоподписанный SSL-сертификат ложным чувством безопасности?» «Да, по следующим причинам ...» звучит полезно, нет? Итак, мне было любопытно, почему это не так: я мог бы чему-то научиться с противоположной точки зрения; от снижения, не так много.
Писквор
1
@mahnsc: Хорошее замечание о скомпрометированных центрах сертификации. Я не говорю, что список корневых ЦС задуман и не поддается взлому - идеальной безопасности не существует; но для этого требуется гораздо больше усилий , чем для настройки перехвата SSL-прокси на сетевом шлюзе.
Писквор
1
@mahnsc: Я имел в виду, что проще настроить SSL-прокси и надеяться, что пользователь нажимает на предупреждения, чем настраивать SSL-прокси и надеяться, что фиктивный запрос сертификата проскальзывает в процессе проверки CA. Как мы уже видели, возможен любой из них, но первый гораздо легче сделать (и потом его труднее обнаружить, так как пользователи браузера обычно не ведут журналы аудита).
Писквор
8

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

Без SSL / HTTPS любой, у кого есть Wireshark в вашей сети (или в локальной сети любого, кто входит в систему), может легко прослушивать и записывать имя пользователя / пароли, отправленные в виде простого текста.

С самозаверяющим SSL они не могут просто прослушивать, но теперь они должны подделать ваш сайт, потенциально изменить DNS, чтобы атаковать человека посредине (MITM). Это все еще угроза, но ее значительно сложнее осуществить.

Другая проблема с использованием самоподписанного SSL состоит в том, что многие браузеры рассматривают самоподписанные сертификаты как серьезную угрозу безопасности и предупреждают вас перед входом (например, chrome) с гигантской красной страницей. http://www.sslshopper.com/article-ssl-certificates-in-google-chrome.html Это может быть серьезным неудобством.

Итак, суть заключается в следующем: если вы запускаете что-то, что не должно быть особенно безопасным (например, нет данных кредитной карты, нет номеров социального страхования) и не можете позволить себе надлежащий сертификат, самозаверяющий сертификат может иметь некоторый смысл (скажем, запретить другим пользователям сети легко перехватывать информацию для входа в систему).

доктор джимбоб
источник
0

Это зависит от того, что вы имеете в виду под «безопасностью», и в какой степени.

Например, ваш браузер поставляется с набором CA, принятым по умолчанию. Это означает, что любой сертификат, выданный этим центром сертификации, принимается вашим браузером (до тех пор, пока он не совпадет с именем DNS). Теперь представьте, что какое-то злое правительство владеет ЦС или может заставить ЦС выдать сертификат для сайта, который вы посещаете. Затем сделать MITM очень просто: они могут прокси-сервер вашего соединения, отправив вашему браузеру сертификат, который у них есть, и ваш браузер примет его, так как он приходит из «доверенного» CA. Пока они не являются DNS-прозрачными (что является основой для MITM), это нормально.

Таким образом, «список принятых CA» по сути является большой дырой в безопасности, пока один из этих CA не будет сотрудничать с каким-то злым правительством. Наличие собственного CA намного лучше.

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

Итак, это зависит от того, что вы подразумеваете под «безопасностью», и от объема. Если вы владеете клиентами, НАДЕЖНО, самоподписанный безопаснее, пока вы не установите на самом клиенте сертификат своего собственного ЦС.

Конечно, вы не можете сделать это на общедоступном веб-сайте, поскольку вы не являетесь владельцем всех клиентов. Таким образом, вы будете подвергнуты опасности другого поведения, что небезопасно.

user2402192
источник