☕️ Мерлин заваривает τσάι 🐌 – Telegram
☕️ Мерлин заваривает τσάι 🐌
1.11K subscribers
3.52K photos
63 videos
94 files
2.42K links
💊
Download Telegram
1. Вы поливаете гуся
2. Гусь увлажняется, ему хорошо
3. Вам хорошо, что ему хорошо
4. Вообще всем хорошо
5. ???
6. Profit!!!!!
Что блин
Заместитель министра радиопромышленности СССР Николай Горшков, 1980 г.
1986 год. Иллюстрация в журнале «Юный техник»
☕️ Мерлин заваривает τσάι 🐌
Что блин
Если кто не понял: в стандартной библиотеке Go есть функция Compare, которая сравнивает две строки и выдаёт [-1, 0, 1] в зависимости от результата. Так вот, её специально делают медленной чтобы программисты пользовались операторами сравнения. Причём написано это только в комментариях сорцов.

> grep -R -o  "strings.Compare" $GOPATH/src/k8s.io/kubernetes/ | wc -l
22
статически типизированный язык так сказатб

> grep -R -o  "interface{}" $(go env GOPATH)/src/k8s.io/kubernetes | wc -l
16452
Forwarded from xkcd
Forwarded from xkcd
'I thought of another bad opinion! I couldn't find anyone who expressed it specifically, but still, the fact that I can so easily imagine it is infuriating! I'm gonna tell everyone about it!'
Forwarded from Артём и его MacBook (Artem Tamoian)
CloudFlare делает очень большой шаг в борьбе за свободный интернет: они анонсировали SNI Encryption. Использование TLS 1.3 и SNI Encryption делает DPI (их используют для ограничения доступа к заблокированным сайтам) бесполезными.

Подробное объяснение тут: https://blog.cloudflare.com/esni/

Когда SNI Encryption и TLS 1.3 станут стандартом и будут широко поддерживаться, российская система блокировок перестанет работать. Останутся всего два варианта — блокировать по IP, как сейчас делают небольшие провайдеры, и навязывать клиентам использование провайдерского DNS.

Но ведь DNS всегда можно сменить 1.1.1.1 или 8.8.8.8 (блокировать протокол они вроде как не собираются, да и страшно представить, сколько всего поломается, если они попробуют). А менять IP-адереса сейчас не составляет никакого труда (Telegram всё ещё работает, да?), да и IPv6 потихоньку развивается.
Это прекрасная новость!

Всегда боялась, что SNI Encryption очень нескоро увидит свет, что он лишь в стадии обсуждения спецификаций и всего такого, поэтому сейчас приятно удивлена, что первая масштабная реализация уже близко.
ESNI, он же Encrypted SNI, он же — решение вышеописанной проблемы. Или вовсе не решение?..

В августе в RFC 8446 был описан TLS версии 1.3, в котором появилось шифрование поля server_name, где передаётся доменное имя.

Теперь браузер при рукопожатии не будет посылать доменное имя в открытом виде, оно будет зашифровано и доступно только веб-серверу.
Это означает, что третьи лица, включая операторов связи, не смогут:
а) получать информацию о https-сайтах, которые посещает пользователь. Всё, что у них останется — IP-адрес.
б) блокировать https-сайты по конкретным доменам. Блокировать смогут только весь сервер по IP-адресу, но на одном сервере вместе с неугодным регулятору сайтом могут располагаться десятки "добрых" сайтов. У Cloudflare, кстати, на одном IP-адресе могут располагаться тысячи сайтов. Мало кто пойдёт на такие потери ради блокировки одного "вредителя". Насколько я знаю, некоторые IP-адреса Cloudflare всё-таки полностью заблокированы в России, но у Роскомнадзора смелости не занимать.

Звучит всё круто, но как же работает это шифрование? Как сервер сможет расшифровать server_name? Обмен ключами.
Браузер и сервер обмениваются ключами и формирует секретную строку, которой браузер шифрует server_name, а сервер расшифровывает.
В этом есть неприятная загвоздка, сейчас вы все расстроитесь.

Дело в том, что браузер получает публичный ключ сервера из TXT-поля домена. А это DNS. А все DNS-запросы у нас ныне отправляются открытым текстом... Почему надо расстроиться? Потому что злой оператор связи может перехватить DNS-запрос браузера, предназначенный для получения публичного ключа, и подменить ответ на пустоту, например.
Браузер не получит публичный ключ и не сможет зашифровать server_name, произойдёт откат до старой версии TLS и server_name будет отправлен в открытом виде. ESNI полностью ломается и мы возвращаемся к проблеме из прошлого поста.

Чтобы решить и эту проблему, нужно переходить на шифрованные DNS-запросы, например, с помощью DNSSEC или DNS, завёрнутого в TLS (там уже могут возникнуть свои проблемы). Поддержка этих штук вряд ли предвидится в ближайшее время, так что ESNI будет сломан Роскомнадзором и прочими регуляторами сразу же, когда начнёт широко применяться.

Ох, я ещё не сказала, что для работы ESNI нужна поддержка на уровне браузеров и веб-серверов, а единственный браузер, который вот-вот выкатит ESNI — Mozilla Firefox.

В общем, порадовались немного и хватит. Полностью обезопасить веб-трафик от вмешательства лишних глаз мы сможем ещё не скоро.

Спасибо Павлу Жовнеру за подсказку о проблеме с зависимостью ESNI от DNS. <3