SSL-TLS через Web-браузер
Прочитал информацию по SSL-TLS и появилось несколько вопросов:
1) В обычном случае – без использования сертификата клиента, всегда ли будет шифроваться трафик от сервера к клиенту?
2) При работе SSL-TLS получается, что публичный ключ сервера отсылается при каждом новом соединении и нет возможности один раз установить публичный ключ в хранилище web-браузера у клиента и его использовать. Верно?
3) Каким образом происходит процедура проверки подписанного публичного ключа сервера центром сертификации(Verisign, Thawte)?
Ведь для того чтобы проверить ЭЦП ключа достаточно иметь публичный ключ центра сертификации, и он есть в хранилище сертификатов в браузере. Тогда получается незачем обращаться на сервер центра сертификации, но браузер обращается. Зачем?
Детали реализации сложнее:
Повторяю: есть ли в протоколе SSL-TLS возможность не передавать сертификат сервера(публичный ключ с подписью) каждый раз при новом соединении? Вот в чем был вопрос.
Здесь я спрашивал о том как технически работает браузер, проверяя подписанный сертификат(публичный ключ) сервера. Что в принципе понятно из последующих вопросов. Но согласен могло выглядеть двусмысленно.
Это вы неправильно поняли 1 часть вопроса.
:)) В общем вы неправильно поняли 1 часть вопроса.
Ну вот примерно так я и думал. Только обычно вся цепочка сертификатов центров сертификации тоже хранится в хранилище браузера.
А есть ли какие-либо RFC или документация по протоколу взаимодействия браузера с серверами центрами сертификации(Verisign, Thawte и т.д.)?
Для онлайновой проверки действительности сертификатов (без CRL) используется протокол OCSP[link1].
Спасибо, буду разбираться.
Не знаете случайно почему я не могу отредактироать свой предыдущий пост? Была ссылка "Правка" а теперь ее нет.
Исправления возможны только пока не получен новый комментарий.
[offtop]
... или пока не обнаружен новый 0day в движке, что уже пару раз тут случалось :)
P. S: на obsd.ru некогда стоял нормальный форумный движок, и всё было бы хорошо, но был он столь дыряв, что часто "случайно" позволял отредактировать произвольные сообщения модераторов. После очередного прикола с моей стороны терпение у них лопнуло, движок снесли и вместо него водрузили безопасную, но глючную и неудобную wiki. Наверное, зря я тогда так шутил над :)
[/offtop]
Хехе. Этот пункт выведен из
модели угрозыинструкции по эксплуатации как недокументированная возможность. :)А гостям бы тоже такую возможность!
Да, на основе куков, например. Они всё равно [условно] безопасны, так как https.
К сожалению мне никто не ответил на вопрос: возможно ли один раз установить сертификат(публичный ключ сервера) в хранилище браузера, проверить его отпечаток по другим каналам один раз и чтобы браузер не загружал его каждый раз заново. Думаю это отсутствующие возможности SSL-TLS протокола. А жаль. Но все равно я считаю, что разработчики SSL-TLS должны были предусмотреть упрощенную систему работы(без центра сертификации), которая при правильной проверке отпечатков может быть не менее защищенной, но еще и простой и самое главное дешевой :) – не надо платить центру сертификации за подпись.
Вообще избыточность, которую предлагают платные центры сертификации она отнюдь не более защищенная. SATtva, вот взять к примеру ваш сайт. У вас, например, сертификат подписан неизвестным ни одному моему браузеру cacert.org. Понятно, что при желании я могу установить его корневой сертификат. А как я его проверю? Он ведь тоже передается по сети. Где взять этот третий канал связи с неизвестным мне cacert.org?
Если используются такие известные центры сертификации как Verisign, Thawte и т.д., то их сертификаты уже есть в ОС(браузере). Но их защищенность от подмены тоже еще вопрос. Если взять к примеру такие браузеры как Firefox, Opera – их исходники подписаны с помощью корневых сертификатов, уже имеющихся в ОС. Т.е. это уже надо проверять дистрибутив ОС на отсутствие изменений. Лицензионное ПО в этом случае будет даже более защищенным, чем бесплатное, обычно загружаемое по сети.
С протоколом всё в порядке, это ограниченность реализации браузеров. Чтобы добиться того, о чём Вы спрашиваете, нужно удалить из хранилища все сертификаты УЦ. Когда браузер не может проверить подлинность сертификата через цепочку УЦ, вопрос установления доверия перекладывается на пользователя.
Не устанавливайте, никто не заставляет. Как раз в данном случае браузер должен предложить Вам сделать исключение для данного сертификата от "неизвестного" УЦ, после чего не будет задавать лишних вопросов. Только как Вы определите подлинность некоего произвольного самоподписанного или подписанного недоверенным УЦ сертификата? В нашем случае такой способ есть: при обновлениях сертификата в новостях сайта публикуется новый отпечаток, заверенный моим PGP-ключом.
Не поняли вы меня. Об ограниченности реализации браузеров тоже думал. Но дело в другом, повторяю: сертификат вашего сайта вместе с публичным ключом передается мне каждый раз при каждом новом соединении, а необходимости в этом нет. Таков уж протокол SSL-TLS. :)
Если я удалю из хранилища браузера все сертификаты УЦ, чего я добьюсь? :)
Так, а как мне проверить достоверность этого нового отпечатка, передаваемого также через Интернет?
Или как мне проверить достоверность вашего PGP-ключа, который я также могу получить только через Интернет? :)
И что? Если браузер его "помнит", то никаких предупреждений уже не будет – сайту ж в любом случае как-то надо сказать клиенту "я использую сертификат X".
Вопрос лицензионности здесь ни при чём – видимо, имеется ввиду поставка софта на "твёрдых" носителях на прямую от производителя к потребителю без посредников?
Для этого достаточно связать данный сетрификат с сайтом – все. А если сервер решит сменить публичный ключ(сертификат), то он может сообщить об этом браузеру в диалоге рукопожатий(аутентификации) после того сервер убедился, что у клиента есть его публичный ключ.
Именно коробочные версии продуктов я и подразумеваю.
А вы часто покупаете ОС с открытыми исходниками(Linux, BSD) в коробке? :)
Даже если конкретно вы это делаете, подавляющее большинстов пользователей все равно загружает из Интернета.
Тогда всё упирается в порядочность производителя в случае прямых продаж (которых в природе почти нет) и в сложность подделки коробки, диска и прочих бумажек при продаже через посредников :)
Поиск решения для несуществующей проблемы. Да, сертификат передаётся в приветствии каждый раз, но это прямолинейнее и проще, чем предусматривать в протоколе special-case'ы, склонные приводить к ошибкам в самом протоколе и в реализациях. Чем Вам мешает такая передача? Какие реальные проблемы безопасности она создаёт?
Сеть доверия в помощь.
Мне то не мешает :)). Сам пользуюсь криптографией только при работе с деньгами. В данный момент интересуюсь криптографией, мне это интересно.
Если используется самоподписанный сертификат или как, например, у вас подписанный не предустановленным в ОС центром сертификации, то угроза подмены ключа и соответсвующе перехвата трафика возрастает ровно во столько раз сколько публичный ключ передается. По крайней мере ровно до тех пор пока вы не установите проверенный корневой сертификат.
Нет. Один раз добавляете исключение в браузер — раз и навсегда избавляетесь от риска подмены. Не важно, передаётся сертификат каждый раз в приветствии или нет: браузер уже знает его отпечаток, подмена невозможна.
Вот это уже интересно. А откуда такая информация?
Ответ "из справки браузеров" устроит? :)
Добавление исключения означает внесение сертификата в список доверенных – в дополнение к установленным изначально.
Хехе. Вот[link2] вам и хехе :-)
spinore, Вы теперь в каждую тему свой чёрный пиар насуёте? ;)
Нет, просто получились накладки. Я не ожидал что Вы настолько оперативно отреагируете, и потому на момент тестов/постов не видел, что Вы уже отписались. Лишние сообщения можете стереть, я обижаться не буду ;)
А как из браузера удалить это исключение или стандартный сертификат, в него включенный?
Пункты меню называются у всех браузеров примерно так:
Edit-Options-Encryptions-View certificates (View Sites)
Там должны быть кнопки вида: просмотреть/удалить или сертификат вообще, или используемый только для одного сайта (в зависимости от того как ставили).