Не понимаю
Oct. 6th, 2010 02:18 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Почему такая простая концепция, как 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
Date: 2010-10-06 10:28 am (UTC)no subject
Date: 2010-10-06 10:34 am (UTC)Плюс к тому в нынешнюю эпоху когда ethernet-хабы уже практически вымерли, и используются исключительно свитчи, прослушивание требует примерно столь же нетривиальных действий, по изменению топологии как встраивание между юзером и каким-то из промежуточных узлов по пути к серверу.
(no subject)
From:(no subject)
From:no subject
Date: 2010-10-06 10:29 am (UTC)Это не всегда очевидно. Более того, в TLS может работать вообще без сертификатов (ephemeral key exchange).
no subject
Date: 2010-10-06 10:32 am (UTC)"Очевидно" имеется в виду с содержательной точки зрения. Зачем нам устанавливать защищенное соединение неизвестно с кем?
Только зря CPU-такты тратить на шифрование.
(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2010-10-06 10:30 am (UTC)Совершенно верное впечатление. Я думаю, что даже 99%. Или даже 99.9%. Именно не нужна, за исключением редких манипуляций с платёжными системами и логина в GMail, у которых с сертификатами как раз всё в порядке.
no subject
Date: 2010-10-06 10:35 am (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2010-10-06 10:57 am (UTC)Есть мнение, что и остальные источники информации про TLS по большей части примерно такие же.
P.S. Ну а смысл "выложить сертификат этого УЦ, чтобы пользователи его себе установили"? Чем это принципиально отличается от самоподписанного сертификата? Я точно так же выпишу себе сертификат на имя В Натуре Бил Гейц и выложу его на тот свой сервер, который будет server-in-the-middle, прикидывающимся microsoft.com. И?
no subject
Date: 2010-10-06 11:03 am (UTC)О! :-)
no subject
Date: 2010-10-06 11:10 am (UTC)Смысл в разнесенности по времени событий установки сертификата УЦ и доступа к защищенному ресурсу. Злоумышленник, как правило, не может НЕПРЕРЫВНО сидеть и контролировать ВСЕ протоколы на предмет не всплывет ли где-нибудь в IMAP или обычном HTTP фингерпринт этого сертификата УЦ.
Ну и для особых параноиков должна быть предусмотрена возможность сверить фингерпринт по телефону.
(no subject)
From:Агащазблин!
From:Re: Агащазблин!
From:Re: Агащазблин!
From:Re: Агащазблин!
From:Re: Агащазблин!
From:Re: Агащазблин!
From:Re: Агащазблин!
From:no subject
Date: 2010-10-06 12:18 pm (UTC)А вот заранее раздать по пользователям все сертификаты всех нужных в будущем серверов куда геморройнее, а зачастую и просто невозможно.
(no subject)
From:(no subject)
From:Казалось бы чего проще ... :)
Date: 2010-10-06 11:04 am (UTC)Re: Казалось бы чего проще ... :)
Date: 2010-10-06 11:08 am (UTC)И почему-то все нормальыне страны, заботящиеся о своей безопасности, что Россия, что США, в качестве государственных стандартов подписи принимают как раз алгоритмы на базе схемы Эль-Гамаля. Японский eSign - что-то более хитрое, за него не скажу, искусственное там разделение или нет.
Re: Казалось бы чего проще ... :)
From:Re: Казалось бы чего проще ... :)
From:Re: Казалось бы чего проще ... :)
From:Re: Казалось бы чего проще ... :)
From:Re: Казалось бы чего проще ... :)
From:(no subject)
From:no subject
Date: 2010-10-06 11:22 am (UTC)no subject
Date: 2010-10-06 11:39 am (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2010-10-06 12:23 pm (UTC)no subject
Date: 2010-10-06 01:14 pm (UTC)sudo apt-get install libnss3-tools
certutil -d sql:~/.pki/nssdb -A -t "C,," -n test -i cert.crt
(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2010-10-06 12:25 pm (UTC)no subject
Date: 2010-10-06 12:38 pm (UTC)В старые добрые времена ключи для каждого отдельного сообщения (шифроблокноты) таскали особо доверенными курьерами, потом стало возможным ограничится пересылкой одного ключа на один контакт (шифрование с публичным/закрытым ключом), PKI позволяет передавать один ключ на целую пачку контактов.
В этом смысле "и выложить сертификат этого УЦ, чтобы пользователи его себе установили не просто, а очень просто" никак не получится. Сертификат должен быть доставлен по каналу, чья надёжность уже обеспечена. В простейшем случае - сисадмином, собственными ручками, с защищёного носителя.
no subject
Date: 2010-10-06 01:01 pm (UTC)Как минимум ожно защищать канал от прослушивания/просматривания, можно от искажения.
Открытые ключи позволяют НЕ ЗАЩИЩАТЬ канал распространения ключей от прослушивания/подсматривания. И в этом их главная ценность.
Остается защититься от возможного искажения информации при передаче. Но для этого опять же не обязательно защищать всю переданную информацию. Собственно, вся система электронной подписи основана на том, что защищается не само сообщение, а значение хэш-функции от него. Значнеие хэшфункции - маленькое от 128 до 512 бит (причем 512 - это для очень больших параноиков).
Соответственно, при нужде можно его и по телефону зачитать.Или выдать юзеру на бумажке с подписью и печатью.
То есть защищенность этого канала гарантируется тем, что информация пропускается через мозги пользователя и снабжается нецифровыми признаками аутентичности (узнаваемым голосом любимого админа, например).
Ну и вообще столь небольшой объем информации можно довести до пользователя по нескольким разным каналам. По принципу, "если где-то не совпало - поднимай тревогу". написать на сайте, продублировать в почте и джаббере, написать на большом плакате на проходной, и предложить пользователям явиться за распечаткой лично.
Злоумышленнику потребуется крепко задуматься, а вот данный конкретный пользователь, которого он собрался подломить, не соберется ли явиться лично.
(no subject)
From:(no subject)
From:no subject
Date: 2010-10-06 01:29 pm (UTC)По поводу почему возникают самоподписные сертификаты. Решения принимаю одни люди (в вопросах безопасности не разбирающиеся), а делают - другие (с пониманием что оно не нужно). В результате первые успокаиваются, а вторые особо не мучаются. Очень многое в этом мире делается не для достижения конкретных целей, а лишь для морального спокойствия отдельных личностей. Но спокойствие этих людей - важный момент, потому что эти люди как правильно в управлении.
И еще - про абсолютную защиту говорить нет смысла. Надо представлять от чего именно мы защищаемся в каждый момент времени. Что дает самоподписанный сертификат?
- защита от простой бессистемной прослушки протоколов http/ftp (отлов логина пароля)
- защита от пассивной прослушки без модификации передаваемых данных (wifi)
- user_pref("browser.cache.disk_cache_ssl", false); //don't cache SSL pages
Понятно что есть атаки от которых он не защищает. Но иногда достаточно и того что есть :) Разве нет?
no subject
Date: 2010-10-06 02:05 pm (UTC)Опять же не вижу причин, почему мне не следует доверять Verisign-у в части удостверения аутентичности сайтов в домене .com.
(хотя знаю почему не следует в отношении сайтов в домене .iq или .ir). В этом смысле мне очень нравится решение, принятое в Maemo 5 - там, когда заходишь на https-сайт, выводится CN того УЦ, который удостоверил подлинность этого сайта.
(no subject)
From:(no subject)
From:(no subject)
From:элементарно обходится
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:не удостоверяет ничего, кроме того, что с момента как в
Date: 2010-10-06 02:14 pm (UTC)Re: не удостоверяет ничего, кроме того, что с момента как
Date: 2010-10-06 04:55 pm (UTC)no subject
Date: 2010-10-06 05:35 pm (UTC)MiTM атака, если PKI не используется, возможна только при первом сеансе связи с сервером, потом ключ запоминается и изменение ключа будет обнаружено.
А самоподписанный сертефикат используется только по тому что без сертификата (только с приватным и публичным ключём) TLS сервер нелзя запустить (или можно?).
Так что для защиты например почты, TLS без PKI помоему оправдан.
Другое дело что не всякий софт правильно отрабатывает ситуации с недоверенным или не верным сертификатом.
Удобный, хорошо документированный и легко устанавливающийся софт обеспечивающий PKI почему то не встречается. Пока мне удобным и понятным показался только EasyRSA, но и там куча ограничений.
Теоретически на основе SSL/TLS, используя наборы сертификатов, можно было бы строить не только дерево доверия но и сеть. Но это вообще нигде не поддерживается.
no subject
Date: 2010-10-06 05:39 pm (UTC)Но вот почему-то браузеры и почтовые клиенты поддерживают почти исключительно X.509 PKI. Поэтому приходится играть по ее правилам. А там должна быть иерархия.
Впрочем многие почтовые клиенты (pine, mutt, evolution) поддерживают для доступа к imap-серверам ssh-вую pki.
Посредством пайпинга imap-протокола в ssh, запускающий на другом конце imapd.
(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2010-10-06 06:17 pm (UTC)Даже не PKI строить, а просто объяснить, что делать, если выскакивает окошко 'сертификат просрочен' (а такое встречается довольно часто, если не путаю, даже на каких-то из мозилловских сайтов недавно было)? Услуга-то нужна сейчас. Или самоподписанные сертификаты у вполне солидно выглядящих фирм? Пользователи жмут "Ok", задумываясь не больше, чем при нажатии кнопочки "Я согласен" под лицензионным соглашением. Понятно, в случае чего, больше одного раза, как и на нигерийский спам, вряд ли кто попадется; но как сделать, чтобы не повелись и в первый раз?
Если окружающие вас люди - далекие от IT - в таких случаях полностью понимают, что происходит, то или это всесторонне одаренные люди - тогда понятна ваша требовательность к другим, но, увы, это редкость, у большинства людей голова занята иным, формула "талантливый в одном талантлив во всем" чаще не работает, чем работает; или вы обладаете редким умением подобные вещи доходчиво объяснять - тогда хочтся попросить вас этим умением поделиться.
no subject
Date: 2010-10-06 06:28 pm (UTC)А Ирина, между прочим целую книжку написала про работу с PKI.
(no subject)
From:ещё раз повторяю:
Date: 2010-10-07 05:25 am (UTC)потому что x.509 переворачивает с ног на голову всё нормальное человекческое понимание доверия, и заменяет его вертикалью власти.
> Такое впечатление, что 90% тех, кто пользуется TLS и электронной почты защита не нужна. И даже security theater не нужен. Потому что свежий firefox такой театр с security exceptions устраивает, что можно было бы задуматься. Нет, продолжают выполнять чисто ритуальные действия по включению tls с самоподписанными сертификатами
они делают это ровно потому что (1) вся секурити силами браузеров и поставщиков ОС превращена в театр и вообще ВСЯ РАБОТА ПОЛЬЗОВАТЕЛЯ ДАВНО ПРЕВРАЩЕНА В РИТУАЛ (если не в придаток к компутеру) (спасибо вендам) (2) юзера приучили что добрый билгейц решит за него сам кому надо доверять (синтез) "FAQ: Q:как убрать назойливое предупреждение? A:нажмите ОК."
програмисты на стороне сервера устали бороться с говном и тупостью, им проще велеть всем жать ОК.
А на стороне клиента браузер слишком часто кричал "волки! волки!"
Re: ещё раз повторяю:
Date: 2010-10-07 06:18 am (UTC)И вообще фундаментальным свойством любых иерархических систем является то, что верхний уровень там такой, какого заслуживает нижний уровень. Потому что в противном случае нижний уровень моментально либо развешивает верхний на фонарях, либо перетекает в другую систему, оставляя верхний уровень подвешенным в воздухе (и с воздухом в кошельке).
(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2010-10-07 11:10 am (UTC)no subject
Date: 2010-10-07 11:16 am (UTC)Для корпоративных ресурсов может быть правильнее - доверять своему CA и не доверять никому другому.
(no subject)
From:ТОП: 22:40 MSK
Date: 2010-10-07 06:40 pm (UTC)Почитать текст со всеми комментариями по ссылке (http://topbloger.ru/?http%3a%2f%2fvitus-wagner.livejournal.com%2f548941.html).
Это Ваш 15-й ТОПовый пост за последний год.
Посмотреть статистику автора можно в карточке топблогера (http://t30p.ru/blog.aspx?vitus_wagner.livejournal.com).
no subject
Date: 2010-10-08 02:04 pm (UTC)no subject
Date: 2010-10-11 03:40 pm (UTC)no subject
Date: 2010-10-11 06:03 pm (UTC)а самоподписанные не нужны, startssl генерит бесплатно...
no subject
Date: 2010-10-27 08:44 pm (UTC)а можно подробнее?
какой штатный способ в linux создать свой CA? просто каталог с сертификатами и секретными ключами + openssl?
как клиент взоимодействует с CA? например как он узнает об отзыве сертификата?
no subject
Date: 2010-11-12 04:02 pm (UTC)про отзыв сертификатов
From:Re: про отзыв сертификатов
From: