vitus_wagner: My photo 2005 (Default)
vitus_wagner ([personal profile] vitus_wagner) wrote2010-10-06 02:18 pm

Не понимаю

Почему такая простая концепция, как X.509 PKI никак не укладывается в голове большинства людей.
Даже профессиональных программистов.

Казалось бы чего проще - есть понятие электронной подписи:

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

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

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

Очевидно, что то, что подпись выработана на данном ключе, ничего не говорит нам о том, какой именно человек или какой именно компьютер ее выработал. Соответсвенено появляется понятие доверия ключу. Поскольку собрать открытые ключи всех, чью подпись потребуется проверить заранее и надежным способом - нереально, появлется PKI, public key infrasturcture - способ получить открытый ключ кого надо (или открытый ключ, которым подписано данное сообщение) и убедиться что это именно ключ данного конкретного персонажда. Обычно для этого комбинация из ключа и данных о ее владельце подписывается кем-то, чьему ключу мы уже доверяем (например потому, что ему доверяет поставщик нашей операционной системы и включил его сертификат в дистрибутив). Такой электронный документ называется сертификатом.

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

Очевидно, что когда мы хотим установить защищенное соединение по TLS, мы должны убедиться что мы устанавливаем соединение именно с тем, с кем хотели. Потому что в противном случае сколь угодно сильное шифрование бесполезно. "Человек посередине" легко перехватит наш пароль, потому что именно ему-то мы его и пошлем, из-за того, что не проверили что он не является нашим сервером.

И ведь создать внутрикорпоративный удостоверяющий центр чтобы выдать пять сертификатов на свои сервера, и выложить сертификат этого УЦ, чтобы пользователи его себе установили не просто, а очень просто.

Такое впечатление, что 90% тех, кто пользуется TLS и электронной почты защита не нужна. И даже security theater не нужен. Потому что свежий firefox такой театр с security exceptions устраивает, что можно было бы задуматься. Нет, продолжают выполнять чисто ритуальные действия по включению tls с самоподписанными сертификатами (или еще смешнее - создают честный УЦ, а его сертификат не распространяют).

[identity profile] viliar.livejournal.com 2010-10-06 11:22 am (UTC)(link)
Буквально недавно добрался до того, чтобы свой УЦ сделать и везде по служебным серверам распихать подписанные им сертификаты. А до этого довольно долго сидел на самоподписанных. Незнание и лень делают свое дело :-(

[identity profile] viliar.livejournal.com 2010-10-06 12:12 pm (UTC)(link)
Да, тоже себе задаю себе этот вопрос :-) Чисто для галочки, что вот шифрование есть. Кстати, вполне возможно, что в некоторых конторах требуют как раз для галочки - что мол почту вы получаете c использованием шифрования. А хостеры особенно не заморачиваются, ну нужно вам шифрование - "нате, пожалуйста". Думаю хостеров с самоподписанными сертификатами на почте довольно много.
Кстати, любопытно, а есть какие-то решения для мультидоменных почтовиков с сертификатами? Для apache был какой-то соответствующий модуль. Интересно как с почтой. Давно не гуглил этот вопрос.

[identity profile] arkanoid.livejournal.com 2010-10-08 02:16 pm (UTC)(link)
В последние 0.9 оно бэкпортировано. Но его использование создает отдельные проблемы при transparent mitm, решаемые, но лично мне утомительные.

[identity profile] dev26.livejournal.com 2010-10-06 12:16 pm (UTC)(link)
Один раз в данном конкретном браузере добавить исключение и потом быть уверенным в сервере. Слабое утешение, зато бесплатно.

Кстати, год назад открыл для себя startssl.com - выдают настоящие сертификаты бесплатно (признаются всеми, кроме Оперы). А за 50$/год еще и wildcard.

[identity profile] dev26.livejournal.com 2010-10-06 12:23 pm (UTC)(link)
Это если речь о фирме. А если частный сервер с доступом для друзей - то не запинаешь. Я пробовал :)
tobotras: (Default)

[personal profile] tobotras 2010-10-06 01:14 pm (UTC)(link)
Ну, я лично оцениваю вероятность того, что на промежуточном роутере злоумышленник включит tcpdump и будет сниффить мою гугловую почту примерно в тыщу раз выше вероятности того, что он сумеет устроить мне DNS poisoning и выдаст себя с гугловый мейл-сервер.

[identity profile] http://users.livejournal.com/_iga/ 2010-10-06 04:33 pm (UTC)(link)
А реальные примеры можно?

[identity profile] http://users.livejournal.com/_iga/ 2010-10-06 05:22 pm (UTC)(link)
Реальный пример всего в сборе: перенаправление + mitm-атака на TLS. Подозреваю, этот комплекс будет посложнее tcpdump, разве нет?

[identity profile] http://users.livejournal.com/_iga/ 2010-10-06 07:59 pm (UTC)(link)
У вас только конфиги к этому веб-серверу будут больше, чем даже десяток вызовов tcpdump. Да и скрипт явно сложнее чем tcpdump -wlog -s0 -ieth0 host 1.2.3.4 and port 80