?

Log in

No account? Create an account
 
 
23 November 2018 @ 03:50 am
 
Скажите, мне одному кажется, что схема верификации, которую использует LetsEncrypt - это издевательство над логикой?

Работает так:
* клиент хочет сертификат для сайта example.org;
* пускай он разместит нечто по адресу http://example.org/some/path - мы это нечто проверим, и если оно окажется тем, что мы ожидаем увидеть, то это послужит доказательством того, что юзер - законный владелец этого имени хоста и вправе получить на него сертификат.

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

Да, они там важно надувают щёки, что дескать все посылаемые значения криптографически заверены - но откуда берётся это доверие изначально, как можно знать, что чувак, зарегистрировавшийся в LetsEncrypt с каким-то там личным ключом и подписавший им это самое нечто, вообще имеет право на этот сайт?

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

Для того, чтобы оценить маразм идеи, достаточно знать следующее: в новой версии Google Sites при создании сайта с custom domain Гугл автоматически выписывает ему сертификат от LetsEncrypt. Автоматически. LetsEncrypt у держателя домена не проверяет ничего. Сразу выдаёт сертификат Гуглу. Всё. Совершенно не нужно ничего понимать в криптографии, чтобы понять, какая это профанация.

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

Да, более традиционные процедуры domain validation тоже не лишены слабых мест: и создание DNS-записей с рандомальными значениями, и уж тем более получение мейла на адрес вида admin@example.org. Но то, что позволяет LetsEncrypt - это man-in-the-middle как он есть. Это не безопасность, это сапоги всмятку.

Поразительно, сколько админов в Сети радостно пишут: сертификаты! бесплатно! бежим брать! - совершенно не задаваясь вопросом, что именно те сертификаты удостоверяют. Бесплатный сыр удивительно эффективно отключает мозги.
 
 
Current Music: Moonspell - 1755
 
 
 
Dmitry Belyavsky: Яbeldmit on November 24th, 2018 06:25 am (UTC)
Нет. Но тут возникает вопрос, кто у нас контролирует домен. В смысле, какое значение мы вкладываем в слово "контролирует". Для второго уровня можно сказать, что это администратор. А дальше?
Кот Муцийcat_mucius on November 25th, 2018 12:16 am (UTC)
Ну, поскольку сертификаты перечисляют имена DNS, то логично считать хозяином того, кто может править доменом DNS. Понятно, что хозяева его над-домена могут своей властью злоупотребить *, но это лом, против которого нет приёма. Для того, чтобы этого избежать, надо в деле аутентификации вообще уходить от DNS.

(* И, кстати, не следует первый уровень сбрасывать со счётов. Мне так думается, если NSA очень понадобится, то они смогут и в TLD пару NS-records для домена второго уровня поправить ненадолго).
Dmitry Belyavsky: Яbeldmit on November 25th, 2018 08:59 am (UTC)
Могут, но скандал будет громкий.
Dmitry Belyavsky: Яbeldmit on November 25th, 2018 09:05 am (UTC)
Вот тут я писал про тех, кому мы явно или неявно доверяем в Интернете. То есть то, о чём Вы пишете, безусловно верно, но в то же время часть ландшафта.

Кстати, про сертификаты тоже писал. А выписанный левый сертификат на домен попадёт ещё и в Certificate Transparency, так что бесследно их не выпустить.