vitus_wagner (
vitus_wagner) wrote2010-10-06 02:18 pm
![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Entry tags:
Не понимаю
Почему такая простая концепция, как X.509 PKI никак не укладывается в голове большинства людей.
Даже профессиональных программистов.
Казалось бы чего проще - есть понятие электронной подписи:
Есть пара взаимосвязанных последовательностей байт - секретный ключ и открытый. Открытый по секретному сгенерировать легко, наоборот - практически невозможно.
Есть некий черный ящик, в который человек может запустить сообщение и секретный ключ и получить на выходе некоторую последовательность байт, которую без наличия данного секретного ключа никак из сообщения не получить.
И есть второй черный ящик, куда пихается сообщение, подпись, и открытый ключ, и на выходе получается вывод - выработана подпись тем секретным ключом, открытую половинку которого мы пихнули в ящик, или не тем.
Очевидно, что то, что подпись выработана на данном ключе, ничего не говорит нам о том, какой именно человек или какой именно компьютер ее выработал. Соответсвенено появляется понятие доверия ключу. Поскольку собрать открытые ключи всех, чью подпись потребуется проверить заранее и надежным способом - нереально, появлется PKI, public key infrasturcture - способ получить открытый ключ кого надо (или открытый ключ, которым подписано данное сообщение) и убедиться что это именно ключ данного конкретного персонажда. Обычно для этого комбинация из ключа и данных о ее владельце подписывается кем-то, чьему ключу мы уже доверяем (например потому, что ему доверяет поставщик нашей операционной системы и включил его сертификат в дистрибутив). Такой электронный документ называется сертификатом.
Очевидно, что самоподписанный сертификат не удостоверяет ничего, кроме того, что с момента как владелец ключа его подписал, никто его не редактировал. То что владелец ключа - именно тот, чье имя написано в сертификате - ничего не значит. Вот возьму и сделаю себе самоподписанный сертификат на имя Рене де Карт. От этого я изобретателем прямоугольных координат не стану.
Очевидно, что когда мы хотим установить защищенное соединение по TLS, мы должны убедиться что мы устанавливаем соединение именно с тем, с кем хотели. Потому что в противном случае сколь угодно сильное шифрование бесполезно. "Человек посередине" легко перехватит наш пароль, потому что именно ему-то мы его и пошлем, из-за того, что не проверили что он не является нашим сервером.
И ведь создать внутрикорпоративный удостоверяющий центр чтобы выдать пять сертификатов на свои сервера, и выложить сертификат этого УЦ, чтобы пользователи его себе установили не просто, а очень просто.
Такое впечатление, что 90% тех, кто пользуется TLS и электронной почты защита не нужна. И даже security theater не нужен. Потому что свежий firefox такой театр с security exceptions устраивает, что можно было бы задуматься. Нет, продолжают выполнять чисто ритуальные действия по включению tls с самоподписанными сертификатами (или еще смешнее - создают честный УЦ, а его сертификат не распространяют).
Даже профессиональных программистов.
Казалось бы чего проще - есть понятие электронной подписи:
Есть пара взаимосвязанных последовательностей байт - секретный ключ и открытый. Открытый по секретному сгенерировать легко, наоборот - практически невозможно.
Есть некий черный ящик, в который человек может запустить сообщение и секретный ключ и получить на выходе некоторую последовательность байт, которую без наличия данного секретного ключа никак из сообщения не получить.
И есть второй черный ящик, куда пихается сообщение, подпись, и открытый ключ, и на выходе получается вывод - выработана подпись тем секретным ключом, открытую половинку которого мы пихнули в ящик, или не тем.
Очевидно, что то, что подпись выработана на данном ключе, ничего не говорит нам о том, какой именно человек или какой именно компьютер ее выработал. Соответсвенено появляется понятие доверия ключу. Поскольку собрать открытые ключи всех, чью подпись потребуется проверить заранее и надежным способом - нереально, появлется PKI, public key infrasturcture - способ получить открытый ключ кого надо (или открытый ключ, которым подписано данное сообщение) и убедиться что это именно ключ данного конкретного персонажда. Обычно для этого комбинация из ключа и данных о ее владельце подписывается кем-то, чьему ключу мы уже доверяем (например потому, что ему доверяет поставщик нашей операционной системы и включил его сертификат в дистрибутив). Такой электронный документ называется сертификатом.
Очевидно, что самоподписанный сертификат не удостоверяет ничего, кроме того, что с момента как владелец ключа его подписал, никто его не редактировал. То что владелец ключа - именно тот, чье имя написано в сертификате - ничего не значит. Вот возьму и сделаю себе самоподписанный сертификат на имя Рене де Карт. От этого я изобретателем прямоугольных координат не стану.
Очевидно, что когда мы хотим установить защищенное соединение по TLS, мы должны убедиться что мы устанавливаем соединение именно с тем, с кем хотели. Потому что в противном случае сколь угодно сильное шифрование бесполезно. "Человек посередине" легко перехватит наш пароль, потому что именно ему-то мы его и пошлем, из-за того, что не проверили что он не является нашим сервером.
И ведь создать внутрикорпоративный удостоверяющий центр чтобы выдать пять сертификатов на свои сервера, и выложить сертификат этого УЦ, чтобы пользователи его себе установили не просто, а очень просто.
Такое впечатление, что 90% тех, кто пользуется TLS и электронной почты защита не нужна. И даже security theater не нужен. Потому что свежий firefox такой театр с security exceptions устраивает, что можно было бы задуматься. Нет, продолжают выполнять чисто ритуальные действия по включению tls с самоподписанными сертификатами (или еще смешнее - создают честный УЦ, а его сертификат не распространяют).
no subject
(no subject)
(no subject)
(no subject)
no subject
Это не всегда очевидно. Более того, в TLS может работать вообще без сертификатов (ephemeral key exchange).
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
no subject
Совершенно верное впечатление. Я думаю, что даже 99%. Или даже 99.9%. Именно не нужна, за исключением редких манипуляций с платёжными системами и логина в GMail, у которых с сертификатами как раз всё в порядке.
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
no subject
Есть мнение, что и остальные источники информации про TLS по большей части примерно такие же.
P.S. Ну а смысл "выложить сертификат этого УЦ, чтобы пользователи его себе установили"? Чем это принципиально отличается от самоподписанного сертификата? Я точно так же выпишу себе сертификат на имя В Натуре Бил Гейц и выложу его на тот свой сервер, который будет server-in-the-middle, прикидывающимся microsoft.com. И?
(no subject)
(no subject)
(no subject)
Агащазблин!
Re: Агащазблин!
Re: Агащазблин!
Re: Агащазблин!
Re: Агащазблин!
Re: Агащазблин!
Re: Агащазблин!
(no subject)
(no subject)
(no subject)
Казалось бы чего проще ... :)
Re: Казалось бы чего проще ... :)
Re: Казалось бы чего проще ... :)
Re: Казалось бы чего проще ... :)
Re: Казалось бы чего проще ... :)
Re: Казалось бы чего проще ... :)
Re: Казалось бы чего проще ... :)
(no subject)
no subject
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
no subject
(no subject)
(no subject)
(no subject)
(no subject)
no subject
no subject
В старые добрые времена ключи для каждого отдельного сообщения (шифроблокноты) таскали особо доверенными курьерами, потом стало возможным ограничится пересылкой одного ключа на один контакт (шифрование с публичным/закрытым ключом), PKI позволяет передавать один ключ на целую пачку контактов.
В этом смысле "и выложить сертификат этого УЦ, чтобы пользователи его себе установили не просто, а очень просто" никак не получится. Сертификат должен быть доставлен по каналу, чья надёжность уже обеспечена. В простейшем случае - сисадмином, собственными ручками, с защищёного носителя.
(no subject)
(no subject)
(no subject)
no subject
По поводу почему возникают самоподписные сертификаты. Решения принимаю одни люди (в вопросах безопасности не разбирающиеся), а делают - другие (с пониманием что оно не нужно). В результате первые успокаиваются, а вторые особо не мучаются. Очень многое в этом мире делается не для достижения конкретных целей, а лишь для морального спокойствия отдельных личностей. Но спокойствие этих людей - важный момент, потому что эти люди как правильно в управлении.
И еще - про абсолютную защиту говорить нет смысла. Надо представлять от чего именно мы защищаемся в каждый момент времени. Что дает самоподписанный сертификат?
- защита от простой бессистемной прослушки протоколов http/ftp (отлов логина пароля)
- защита от пассивной прослушки без модификации передаваемых данных (wifi)
- user_pref("browser.cache.disk_cache_ssl", false); //don't cache SSL pages
Понятно что есть атаки от которых он не защищает. Но иногда достаточно и того что есть :) Разве нет?
(no subject)
(no subject)
(no subject)
(no subject)
элементарно обходится
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
не удостоверяет ничего, кроме того, что с момента как в
Re: не удостоверяет ничего, кроме того, что с момента как
no subject
MiTM атака, если PKI не используется, возможна только при первом сеансе связи с сервером, потом ключ запоминается и изменение ключа будет обнаружено.
А самоподписанный сертефикат используется только по тому что без сертификата (только с приватным и публичным ключём) TLS сервер нелзя запустить (или можно?).
Так что для защиты например почты, TLS без PKI помоему оправдан.
Другое дело что не всякий софт правильно отрабатывает ситуации с недоверенным или не верным сертификатом.
Удобный, хорошо документированный и легко устанавливающийся софт обеспечивающий PKI почему то не встречается. Пока мне удобным и понятным показался только EasyRSA, но и там куча ограничений.
Теоретически на основе SSL/TLS, используя наборы сертификатов, можно было бы строить не только дерево доверия но и сеть. Но это вообще нигде не поддерживается.
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
no subject
Даже не PKI строить, а просто объяснить, что делать, если выскакивает окошко 'сертификат просрочен' (а такое встречается довольно часто, если не путаю, даже на каких-то из мозилловских сайтов недавно было)? Услуга-то нужна сейчас. Или самоподписанные сертификаты у вполне солидно выглядящих фирм? Пользователи жмут "Ok", задумываясь не больше, чем при нажатии кнопочки "Я согласен" под лицензионным соглашением. Понятно, в случае чего, больше одного раза, как и на нигерийский спам, вряд ли кто попадется; но как сделать, чтобы не повелись и в первый раз?
Если окружающие вас люди - далекие от IT - в таких случаях полностью понимают, что происходит, то или это всесторонне одаренные люди - тогда понятна ваша требовательность к другим, но, увы, это редкость, у большинства людей голова занята иным, формула "талантливый в одном талантлив во всем" чаще не работает, чем работает; или вы обладаете редким умением подобные вещи доходчиво объяснять - тогда хочтся попросить вас этим умением поделиться.
(no subject)
(no subject)
ещё раз повторяю:
потому что x.509 переворачивает с ног на голову всё нормальное человекческое понимание доверия, и заменяет его вертикалью власти.
> Такое впечатление, что 90% тех, кто пользуется TLS и электронной почты защита не нужна. И даже security theater не нужен. Потому что свежий firefox такой театр с security exceptions устраивает, что можно было бы задуматься. Нет, продолжают выполнять чисто ритуальные действия по включению tls с самоподписанными сертификатами
они делают это ровно потому что (1) вся секурити силами браузеров и поставщиков ОС превращена в театр и вообще ВСЯ РАБОТА ПОЛЬЗОВАТЕЛЯ ДАВНО ПРЕВРАЩЕНА В РИТУАЛ (если не в придаток к компутеру) (спасибо вендам) (2) юзера приучили что добрый билгейц решит за него сам кому надо доверять (синтез) "FAQ: Q:как убрать назойливое предупреждение? A:нажмите ОК."
програмисты на стороне сервера устали бороться с говном и тупостью, им проще велеть всем жать ОК.
А на стороне клиента браузер слишком часто кричал "волки! волки!"
Re: ещё раз повторяю:
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
no subject
(no subject)
(no subject)
ТОП: 22:40 MSK
Почитать текст со всеми комментариями по ссылке (http://topbloger.ru/?http%3a%2f%2fvitus-wagner.livejournal.com%2f548941.html).
Это Ваш 15-й ТОПовый пост за последний год.
Посмотреть статистику автора можно в карточке топблогера (http://t30p.ru/blog.aspx?vitus_wagner.livejournal.com).
no subject
(no subject)
no subject
а самоподписанные не нужны, startssl генерит бесплатно...
no subject
а можно подробнее?
какой штатный способ в linux создать свой CA? просто каталог с сертификатами и секретными ключами + openssl?
как клиент взоимодействует с CA? например как он узнает об отзыве сертификата?
(no subject)
про отзыв сертификатов
Re: про отзыв сертификатов