[О блоге] [наверх] [пред] [2020-09-21 20:38:06+03:00] [15b5553bd268c4cc15b10c0555e0ac2743988587]
Темы: [blockage]

Предложение блокировать любой ресурс с HTTPS

https://regulation.gov.ru/projects#npa=108513
https://www.opennet.ru/opennews/art.shtml?num=53756
https://beldmit.livejournal.com/624856.html
https://beldmit.livejournal.com/625022.html
В общем, на территории РФ запрещено шифрование которое может скрыть имя
страницы. И запрещено скрывать имя сайта. Если последнее это речь про
ESNI, как миниум, то первое это вообще про HTTPS в целом. Такое можно
сразу блокировать, разрешают, сразу же.

    [оставить комментарий]
    комментарий 0:
    From: kmeaw
    Date: 2020-09-22 20:14:09Z
    
    Можно модифицировать процедуру установки соединения и проверки
    подлинности сертификата. Для примера пусть пользователь хочет открыть
    страницу https://example.com/
    
    1. Сначала достаём откуда-нибудь список очень популярных доменов,
    например alexa top 100, оттуда берём домен, не совпадающий с тем,
    который пользователь хочет посетить. Алгоритм выбора этого домена должен
    быть детерминированным, зависеть от текущего времени (с каким-нибудь
    довольно большим загрублением, например в сутки) и строки
    "example.com". Пусть это будет popular.org.
    
    2. Пытаемся использовать TLS с ECH. Если получилось, то больше ничего
    делать не надо.
    
    3. Если не получается, то пытаемся использовать TLS со случайным доменом
    в SNI. В ответ ожидаем получить сертификат, который будет валиден для
    example.com, но не для popular.org. Если получилось, то дальше мы можем
    использовать domain fronting.
    
    4. Пытаемся использовать TLS, как обычно, но при этом же пытаемся
    обмануть DPI, используя различные трюки. Занижаем MSS, фрагментируем
    трафик, отправляем его не по порядку и так далее. Если не помогло, то
    ломаемся.
    
    А вообще проблему цензурирования можно решить технически, если поменять
    протоколы так, чтобы часть симметричного ключа требовала затраты
    вычислительных ресурсов в результате запуска детерминированного
    алгоритма. Например, сервер может передать клиенту номер алгоритма, его
    входные параметры и затравку для ПГСЧ. Это позволит сформировать общий
    секрет. Не знаю, возможно ли это, но надо сделать этот процесс дешёвым
    для сервера и дорогим для клиента. Может быть предрасчитывать этот ключ
    раз в некоторый интервал времени на сервере, и выбирать такие алгоритмы,
    что в процессе отбраковки ключей для одних клиентов получаются ключи для
    других клиентов.
    
    Такой подход сделает работу middlebox'ов очень дорогой. И это создаёт
    ещё одну проблемы — как отличать "хорошие" middlebox от "плохих"?
    
    комментарий 1:
    From: Sergey Matveev
    Date: 2020-09-22 22:14:18Z
    
    *** kmeaw [2020-09-22 23:10]: [...]
    Я на всё это смотрю иначе. Вы предлагаете разные вещи которые могут
    помочь только сиюминутно с текущим DPI. Я их называю костылями и хаками.
    DPI будет улучшаться и модернизироваться -- завтра эти костыли работать
    не будут. Сейчас многие предлагают подобные решения, которые вчера
    работали, а сегодня не будут. Это такая постоянная гонка. Если её и
    дальше поддерживать, то она так никогда и не закончится и всё будет
    постоянно в полусломанном полуработающем состоянии, на соплях,
    недетерминированно.
    
    Не нужно пытаться сделать какие-то подборки и хитрости сиюминутные для
    non-censorship-resistant-in-mind технологий. Нужно использовать
    цензуроустойчивые технологии, инструменты с этим свойством in mind. Как
    минимум есть хотя бы даже overlay сети для начала. Я в целом против
    Tor-а, если что, из-за его централизованного управлению консенсусом и
    слабости против government-level adversary (и их нежелания вообще хоть
    как-то улучшать свою технологию примитивную), но есть I2P, Freenet,
    Yggdrasil/Cjdns, GNUnet, ZeroNet, IPFS и тьма других решений. У всех них
    есть проблемы/недостатки, порой серьёзные, но задел имеется.
    
    Раньше условия работы протоколов/служб были одними (лишь бы был
    link/routing и IP пакеты ходили), теперь же они поменялись: имеются
    сплошные adversary, которые ломают связанность при любом plaintext-е.
    Появились требования, как минимум, свойства цензуроустойчивости, которое
    никак не обеспечивается старой экосистемой HTTP/HTTPS/whatever. Для
    этого нужны другие технологии, другие подходы, другие экосистемы.
    Костыли выстраиваемые из современных TLS-ов будут работать только
    сиюминутно.
    
    Всё это речь про то, что ЕСЛИ мы хотим иметь аутентифицированные
    конфиденциальные каналы связи с желаемыми ресурсами, то современная
    opennet+PKI инфраструктура тут непригодна с текущими adversary. Если
    предположить что людям это надо, то они должны переходить на новые
    цензуроустойчивые технологии, соответственно и использовать существенно
    другой софт. Или им это принесут на блюдечке готовое, или другого
    варианта нет (сами они не будут ставить себе новый софт и заниматься его
    настройкой). Принести его могут только корпорации
    (Apple/Google/Microsoft), которые и управляют компьютерами пользователей
    и их софтом. Будут ли они это делать? Серьёзные работающие решения не
    будут применять, ибо какая им от этого выгода? На этом денег не
    заработать. Они могут пытаться проталкивать Tor, как Facebook например
    имеет .onion в нём, но исключительно чтобы помочь с "борьбой" с одним
    adversary, "отдаваясь" другому (США, понятное дело, централизованно
    управляющая консенсусом в этой сети). Но только вопрос: а кому нужны
    аутентифицированные конфиденциальные каналы? 99.99% людям это нафиг не
    сдалось: за приватность никто не готов платить, всё что связано с
    деньгами (банки/магазины) -- без проблем что будут за MitM-ом. Проблема
    в том, что почти никому (кроме жалких процентов) не нужна вся эта
    безопасность, лишь бы сосед не пакостил. А DoH в броузере, eSNI и
    прочее, в первую очередь не для заботы о пользователе, а для борьбы с
    цензурой стран (например нашей), за счёт ресурсов других государств
    (слив DNS запросов через DoH на США серверы Cloudflare).
    
    Если людям важна же безопасность (и противодействие MitM/цензуре), то
    люди только самостоятельно могут начать что-то для этого делать (ибо
    никому больше это не выгодно делать). Ну там начать использовать Freenet
    какой-нибудь, GNUnet. Перекочёвывать туда.
    
    Если же более в технику и конкретику углубиться. Протокол должны быть во
    всём полностью неотличим от шума. Грубо говоря, тут просто нет *явных*
    данных для того чтобы сделать blacklist блокировку
    трафика/протокола/ресурса/whatever. Если блокировать то, что не могут
    распарсить, то это будет whitelist поведение (разрешаю что могу понять)
    и я его интерпретирую как невозможность передать произвольные данные
    между произвольными участниками. То бишь, whitelisting это просто не
    работающая сеть. Смысл извращаться и что-то пытаться в ней сделать? Я
    вот не могу ничего передать никому или многое прочитать/найти в
    ВКонтакте -- это закрытая изолированная экосистема, требующая запуска
    проприетарного ПО. Но меня это не парит -- я просто не использую. Я
    убеждён что весь Интернет превратится в систему для удалённого доступа к
    ряду служб (развлечения (Youtube, Instagram, не в курсе что там сейчас
    ещё), поиск знакомств (Badoo?), MitMed переписка (Facebook/VK), поиск
    траха без какой-либо приватности (Tinder), и т.д.), ну и плюс
    возможность пользоваться банками/магазинами, плюс по пропускам и
    разрешённым firewall правилами -- VPN-ами до работы (опять же, в КНР я
    слышал что так, то ли так планируют). 99.99% людей удовлетворены,
    корпорации удовлетворены, цензоры удовлетворены. Whitelisting означает
    что у меня не будет Интернета, но останется VPN до работы. Ну, ok.
    Преобладающее большинство так решило. А кучка гиков ничего не сможет
    изменить даже в теории: на одной чаше весов будет развлекуха (сериалы,
    игры, whatever), а на другой уже ничего не сможет это перевесить. Я для
    себя NNCP написал чтобы хотя бы удобно на дисках/флешках/лентах носить
    данные мог между компьютерами, раз связи между ними нет, раз
    whitelisting, который не позволяет Noise-IK протокол.
    
    >3. Если не получается, то пытаемся использовать TLS со случайным доменом
    >в SNI. В ответ ожидаем получить сертификат, который будет валиден для
    >example.com, но не для popular.org. Если получилось, то дальше мы можем
    >использовать domain fronting.
    
    Зависимость от третьего ресурса? Лично мне такое не нравится, ибо слив
    ещё кому-то куда мы хотим ходить. Костыль. Кроме того, а зачем это тому
    ресурсу из top100 нужно, какой профит? Компаниям США это может быть
    интересно только для политически целей, против неугодных США стран.
    Всякие Google/Apple сервера, даже если TLS запретят у нас -- всё равно
    будут для нас продолжать работать в noTLS режиме, ибо они ничего не потеряют.
    
    Если же у нас протокол неотличим от шума (ECH -- видно что это TLS, но
    не более, ok, допустим), то у нас может быть активный adversary. Если мы
    заранее не знаем публичного ключа того с кем соединяемся (opennet сеть),
    то adversary же может пробовать нас обмануть, подсовывать то, что
    возможно мы ожидаем, смотреть на нашу реакцию и поведение, оценивая что
    мы действительно хотели. Если бы это был friend-to-friend или
    самоаутентифицирующийся адрес (onion, hyperboria, eepsite, whatever), то
    идентификаторы в явном виде уже можно не передавать. Ведь проблема
    активного adversary в ESNI/TLS/etc в том, что так или иначе, пускай даже
    в зашифрованном на DH-ключах канале, но придётся передать идентификаторы
    (hostname) в открытом виде.
    
    >А вообще проблему цензурирования можно решить технически, если поменять
    >протоколы так, чтобы часть симметричного ключа требовала затраты
    >вычислительных ресурсов в результате запуска детерминированного
    >алгоритма.
    
    Нет, я убеждён что это не может являться решением. Технологии когда одному
    что-то сделать сложно, а другому легко известны ещё с 70-х годов (паззлы
    Меркле например), но ни одна не взлетает. Все эти подходы с затратами
    вычислительных ресурсов просто управляют порогом входа для атаки. Я в
    ivi например делал proof-of-work который перебором Blowfish-а находит
    часть симметричного ключа -- это защитит от наивного
    while :; curl -X POST ivi.ru/register, но не защитит от целенаправленной
    DoS атаки на этот /register. Да и в принципе какую задачу можно было бы
    сделать чтобы она is good enough quickly решалась на смартфоне и чтобы
    она усложняла жизнь и мощным (по ресурсам) DPI системам? Ресурсоёмкие
    подходы пытались применить для спама например (hashcash) (всё же если
    требовать вычисления для установления TLS соединения, то речь должна
    идти о долях секунды, тогда как для отправки письма речь может идти о,
    наверное, секундах или минутах), но у индусов pentium90, а у канадца
    Xeon многоядерный -- это реальность. Или задачи будут доставлять лютый
    unusability, или они не будут представлять серьёзных проблем для
    злоумышленника. Уж я не поверю что на уровне государства нельзя будет
    сделать парк вполне себе мощных "решателей". И речь у меня не про ASIC-и
    для задач. В ivi proof-of-work у меня требовал и память в приличных
    количествах, не только процессор, но вменяемые скорости работы (с точки
    зрения пользователя) на не топовых смартфонах требуют такого количества
    памяти, что она чуть ли не в кэш первого уровня Xeon/i7 умещается. В
    итоге даже memory-hardened (+cpu) задача всё равно одним Xeon-ом
    решается так шустро, что он один заменяет много порядков клиентских
    устройств (конкретику уже не помню совсем).
    
    В общем, задачи которые легко проверяются, но сложно считаются -- таких
    масса изобретена, это не проблема. Но задачи которые бы были приемлемы
    для real-time responsiveness клиентских устройств и при этом были бы
    существенной занозой для мощного adversary -- я таких не встречал, и
    поэтому за полвека существования этой идеи ничего нигде так и не
    взлетело. Если придумывать технологии когда эти задачи решаются
    как-нибудь в фоне, заранее готовя соединения/whatever, то это значит уже
    значительно изменять софт и тогда проще сразу начать внедрять нормальные
    цензуроустойчивые решения. А заставлять тратить гигаватты/терраватты (?)
    энергии на то, что какие-то идиоты устраивают цензуру... это в принципе
    как-то неразумно.
    
    Попытаюсь резюмировать поток сознания :-). В текущих реалиях с текущими
    простейшими протоколами в которых никак не предусматривается никакая
    цензуроустойчивость, в opennet-ах (а не darknet/friend-to-friend), с
    активным adversary -- костыли будут помогать только сиюминутно. Либо это
    превратиться в колоссальную трату сил и энергии с одной стороны
    (цензоров) и с другой (честно -- разработчики броузеров/ОС не будут
    заниматься этой проблемой, если только не для помощи США, в текущих
    реалиях, и это будет не решением проблемы, а ещё большим контролем
    софта/трафика/ресурсов с её стороны). Не нужно пытаться из Windows
    сделать надёжное, быстрое, дешёвое, бла-бла-бла и всё такое решение для
    какой-то задачи, когда можно просто взять для этой задачи куда более
    подходящую FreeBSD/GNU/Linux/Plan9/whatever. Так и здесь: для цензуры
    нужны другие (кардинально и принципиально) другие технологии (GNUnet как
    некий идеал). Разумно на них тратить время. Но людям это не надо на
    самом деле, поэтому никто этим заниматься не будет и скоро Интернета,
    как такового, у нас не будет. Я верю только в такой исход. Если же людям
    это надо, и они (или кто-то найдётся) возьмутся использовать и
    переезжать в censorship-resistant сети (overlay сети возможно), то
    сделают whitelisting, опять же прикрывая работу Интернета.
    
    Даже если оставить только Youtube доступным, то найдутся энтузиасты
    которые начнут обмениваться PGP-зашифрованными IP-пакетами в Base64 в
    комментариях к видосикам. Это, понятно дело, быстро прикроют. Потом
    начнут стеганографию применять в видосиках. Тоже прикроют. Потом ещё
    что-то придумают. В общем история и тут будет повторяться. Лично я
    считаю что это неуважение к себе, заниматься (постоянно и регулярно!)
    всеми этими костылями, когда целенаправлено тебя заставляют только и
    только играть по неугодным тебе правилам и обрывать любые способы твоей
    связи. Это не власти такие нехорошие дяди и идиоты, что только хуже нам
    делают. Это *преобладающая* часть граждан нашей же страны вполне себе
    рада их поддерживать в этих делах. Ибо "если применяешь шифрование", то
    ты априори мразь, террорист и скучаешь по решётке. Я на 100% уверен что
    90%+ населения любой страны так считает, сомнений нет. Поэтому Интернет
    нужно начать воспринимать как ресурс для вот таких вот людей, для
    доставки им развлечения, но да, когда-то он позволял связывать
    произвольные компьютеры и передавать произвольные данные, было время. А
    для банков, VPN-ов до работы -- будут разрешения. Все остальные задачи,
    мягко говоря, просто неугодны 90%+ людям любой страны, и они осуждают их.
    
    Надо думать про store-and-forward решения, Internet-independent передачу
    данных (mesh-сети в идеале, пока не запретят радиоаппаратуру иметь, или
    пока она не будет blackbox-ом с проприетарными прошивками onle).
    
    комментарий 2:
    From: Sergey Matveev
    Date: 2020-09-22 23:11:18Z
    
    *** Sergey Matveev [2020-09-23 01:14]: [...]
    Что-то я как-то мрачно всё описал из серии "всё равно скоро Интернета не
    будет" :-). Я просто описывал как я вижу самый крайний случай. А так то
    я надеюсь что просто народ в Интернет расслоится достаточно сильно и
    цензорам будет интересна только прослойка большинства.
    
    На самом деле, как мне видится, это и так уже из года в год всё сильнее
    идёт. Компьютеры людям не нужны (основной массе) -- все пересаживаются
    на смартфоны. Это совершенно другие ОС. Все эти же люди, как и масса
    тех, кто за ПК, вовсю используют броузеры и современный Web, где
    скачиваются приложения прозрачно. В этом мире программируют на
    JS/Swift/JS-related вещах и это, вроде бы, большинство разработчиков в
    мире. Я беру себя и вижу что у меня общение только в рассылках (немного)
    и в почтовых переписках личных. Плюс я подписан почти на три сотни
    RSS/Atom feed-ов. На этом всё. Больше у меня нет никакого общения, ну
    кроме работы немного в Mattermost через IRC-шлюз. И мне больше и не
    хочется и не надо. Тогда как уже далеко не первый год из щколы люди
    выходят не имея email-а в принципе. Я уже и так в меньшинстве
    программистов, ибо не пишу на JS и не трогаю мобильные платформы с
    броузерами. У меня дома даже GNU/Linux есть только в двух виртуальных
    машинах, последних раз которые я запускал более месяца назад. Я живу в
    своём уютном мире, с относительно небольшим количеством людей. Кто-то из
    него уходит, а кто-то приходит регулярно. И чем дальше, тем больше
    изоляции между "моей" экосистемой и экосистемой среднего человека, у
    которого нет ни email, который считает что RSS/Atom умер 10лет назад,
    кто про рассылки ничего не знает, у кого проприетарные ОС только с
    броузером. Мне не о чем с ним говорить на ИТ тему, в принципе. Это как
    велосепедист бы общался с автомобилистом. И я надеюсь что цензура будет
    касаться только вот таких людей, с их соцсетями и развлечением.
    
    А экосистема задротов типа меня будет оставаться нетронутой, ибо даже
    протоколы современного Web-а с ней не пересекаются (скоро небось даже
    TCP не будет использоваться так массово, из-за мобильных сетей где
    QUIC/UDP лучше себя покажет). У меня вполне себе большая часть email-а
    ходит в PGP виде. SMTP архаичен, не анонимен, и т.д., но как бы и пофиг.
    С точки зрения внешнего наблюдателя, anonymity set задротов с email-ом
    такой небольшой, что даже если бы и была какая анонимность (Mixmaster,
    Mixminion и более современное что-то применять), толк от неё только для
    самоудовлетворения и фетиша будет. Ведь существовал же раньше FidoNet и
    цензоры его не трогали. Почему? Потому что (само собой, исключительно
    моё мнение) когда сеть полностью людьми для людей делается (а не
    корпорациями для гребли денег), когда friend-to-friend
    самоорганизующийся, то всякое дерьмо, действительно противозаконное и
    неугодное, не имеет шансов жить в такой сети. В FidoNet жёстко запрещена
    коммерция (или в строго отведённых местах, куда насильно никто не зовёт)
    например была и это прекрасно. Вот и сейчас я думаю что "отслоившаяся"
    экосистема от современного web-а+соцсетей+развлечений и так уже рулится
    федеративными решениями людьми и для людей. Я регулярно нахожу новые
    домашние странички всяких людей, где что-нибудь есть да интересное.
    Пускай размер FidoNet небольшой, пускай это речь, допустим, про
    несколько десятков тысяч людей (на весь Земной шар), но, по мне, этого
    абсолютно достаточно для удовлетворения нужд общения. А неанонимный
    доступ к opennet.ru какому-нибудь или Хабру -- это настолько узкий
    anonymity set ресурсов который я использую, что тут не о чем переживать.
    А основная масса других ресурсов (современный web, соцсети, "развлечения")
    мне и так не доступна из-за проприетарного софта. Поэтому я надеюсь что
    люди со смартфонами варятся пускай в своём соку, со своими протоколами и
    технологиями, а я, с подобными, буду в своём, пускай не больно
    анонимном, но зато работающем, где нет плохих людей (из-за
    friend-to-friend/federated/self-censored самоорганизации), поэтому и
    цензуры на всякие PGP/OTR/OMEMO/whatever нет, ломающей работоспособность.
    
    комментарий 3:
    From: kmeaw
    Date: 2020-09-23 09:51:57Z
    
    > завтра эти костыли работать
    > не будут. Сейчас многие предлагают подобные решения, которые вчера
    > работали, а сегодня не будут. Это такая постоянная гонка. Если её и
    > дальше поддерживать, то она так никогда и не закончится и всё будет
    > постоянно в полусломанном полуработающем состоянии, на соплях,
    > недетерминированно.
    
    У меня есть идея, как это сделать на долгое время, но она слишком сильно
    противоречит идее "не запускать чужое ПО, которое приехало к нам
    неизвестно откуда", прямо как в современном вебе с javascript.
    
    Можно написать программу, которая будет предоставлять ОС виртуальный
    сетевой интерфейс (например tap). Внутри этой программы будет раобтать
    две виртуальные машины — одна BPF для сопоставления пакетов в потоки и
    одна WASM для выполнения прикладного кода. Наружу эта программа смотрит
    через обычный для ОС интерфейс сокетов.
    
    По сути это виртуальный свитч/роутер, для которого все внешние
    интерфейсы (сокеты и tap) являются портами.
    
    Когда на любой порт приходит пакет, он проверяется на соответствие всем
    BPF-программам, которые были загружены. Если такая программа нашлась, то
    она определяет логический поток (соединение), и далее драйвер этого
    порта получает пакет. Для tap и сокетов это простая отправка пакета
    дальше. Если BPF-программа не нашлась, то пакет попадает в
    router-функцию WASM-машины. WASM-машина может загружать новые
    BPF-программы, создавать новые порты и назначать им драйверы.
    
    Так можно построить оверлейную сеть, которая сможет динамически
    реконфигурироваться (менять алгоритмы обфускации и роутинга) без
    обновления исполняемых файлов. По сути это программируемый виртуальный
    network appliance.
    
    Поскольку для работы любой censorship-resistant оверлейной сети нужно
    делать traffic forwarding, можно замаскировать такую программу под новую
    криптовалюту, в которой вместо монет используется передача трафика для
    чужих circuits и исполнение WASM-программ.
    
    Чтобы обезопасить конечные вычислительные узлы от цензурирования, можно
    переложить вычислительные задачи тоже на пользователей сети, предлагая
    (opt-in) разрешить исполнение кода на своих машинах. Поскольку владелец
    этого кода не захочет делиться ни состоянием, ни контролем над его
    изменениями, придётся делать это на физически отдельных машинах с
    отдельной ОС, защищающей состояние машины от её владельца. Тут придётся
    применить DRM, избыточность вычислений с периодческой сверкой с
    соседями, периодические проверки целостности среды исполнения со стороны
    доверенных (как в DPoS-криптовалютах) участников.
    
    В результате получим большой глобальный компьютер, на котором можно
    исполнять программы и передавать между ними данные в обмен на исполнение
    чужих программ и передачу чужих данных.
    
    Останется две проблемы, которые нужно решить, чтобы этот компьютер стал
    полезным: проблему хранения большого тяжёлого состояния (базы данных,
    возможно это можно решить гомоморфным шифрованием) и доступности (за
    неправильные ответы на зпросы к storage можно штрафовать, а что делать с
    неответами или медленными ответами - непонятно, ведь нельзя предоставить
    криптографическое доказательство такого факта).
    
    > >3. Если не получается, то пытаемся использовать TLS со случайным
    > >доменом
    > >в SNI. В ответ ожидаем получить сертификат, который будет валиден для
    > >example.com, но не для popular.org. Если получилось, то дальше мы можем
    > >использовать domain fronting.
    
    > Зависимость от третьего ресурса? Лично мне такое не нравится, ибо слив
    > ещё кому-то куда мы хотим ходить. Костыль. Кроме того, а зачем это тому
    > ресурсу из top100 нужно, какой профит? Компаниям США это может быть
    > интересно только для политически целей, против неугодных США стран.
    > Всякие Google/Apple сервера, даже если TLS запретят у нас -- всё равно
    > будут для нас продолжать работать в noTLS режиме, ибо они ничего не
    > потеряют.
    
    Зависимость тут только от имени ресурса. Идея в том, что popular.org
    скорее всего захочет договориться с цензорами, и его не заблокируют.
    Если мимикрировать запросы для example.com под popular.org, то есть
    шанс, что такой запрос пройдёт через фильтры.
    
    > Уж я не поверю что на уровне государства нельзя будет
    > сделать парк вполне себе мощных "решателей".
    
    Если бы это было так, то мы бы увидели хотя бы одно государство, которое
    бы переписало blockchain у биткоина. Я предлагаю придумать такую схему,
    в которой сервер считает что-то редко, а клиент — сильно чаще, и
    результат, который необходимо вычислить клиенту зависит от клиентского
    идентификатора, например IP. Тогда цензору придётся не просто потратить
    ресурсы на каждый сервер, а на каждую пару (сервер, клиент), что уже
    значительно сложнее.
    
    Более того, раз от этих вычислений зависит безопасность соединения, то
    клиент заинтересован в том, чтобы было потрачено (в разумных преедлах,
    конечно) как можно больше его ресурсов. Ведь тогда цензору тоже придётся
    их потратить, чтобы подсмотреть метаинформацию.
    
    > А заставлять тратить гигаватты/терраватты (?)
    > энергии на то, что какие-то идиоты устраивают цензуру... это в принципе
    > как-то неразумно.
    
    Bitcoin делает ровно это. И как я уже чуть выше сказал, пока у него
    получается быть впереди state-level adversaries.
    
    > Интернет превратится в систему для удалённого доступа к
    > ряду служб
    
    Значит можно будет построить оверлейную сеть поверх этих служб.
    Пользователь 2a02:6b8:a::a хочет добавить вас в друзья, указанная
    пользователем причина: "65:71:37:0b:e0:e7:54:65:f2:45:4b:6c:d4:3a:4c:06".
    
    комментарий 4:
    From: Sergey Matveev
    Date: 2020-09-23 10:30:50Z
    
    *** kmeaw [2020-09-23 12:48]:
    >У меня есть идея, как это сделать на долгое время, но она слишком сильно
    >противоречит идее "не запускать чужое ПО, которое приехало к нам
    >неизвестно откуда", прямо как в современном вебе с javascript.
    
    Идею прочитал, но, по понятным причинам, я бы в таком участвовать не
    стал :-). Отдавать свой компьютер под чей-то контроль? Кроме того,
    предполагается что будут доверенные участники. Видимо, автоматически
    "вшитые" как доверенные, как в Tor. Лично я это тоже неприемлю -- значит
    в их руках решения о том как и что будет работать. Кто это будет? Кто
    может быть тем, кому все будут доверять? Таких не бывает и не может
    быть. Доверие должно управляться только конечным пользователем только
    для своей машины (как в GNUnet, Freenet). Всё иное, с третьей доверяемой
    стороны -- лично для меня не является решением. Это просто передача
    кому-то головной боли о том как бы обфусцировать трафик. Но кто в этом
    будет (всерьёз) заинтересован? Даже если найдутся энтузиасты, то их в
    любом случае "прикроют". Если участники сети могут узнавать как
    соединиться с доверенными участниками, то это могут узнавать и цензоры,
    тем самым понимаю где нужно отрезать трафик. Я убеждён что opennet сеть
    не может работать в условиях powerful censoring adversary. Только
    friend-to-friend решения, которые можно только полностью отключить, или
    ничего с ними не поделать, ибо цензор просто не может вклиниться в
    аутентифицированные зашифрованные соединения.
    
    >В результате получим большой глобальный компьютер, на котором можно
    >исполнять программы и передавать между ними данные в обмен на исполнение
    >чужих программ и передачу чужих данных.
    
    Просто тут ещё проблема в том, что у нас, у простых людей, нет
    компьютеров которые бы могли изолировать программы друг от друга и
    обеспечить безопасность друг от друга. На практике уже были атаки по
    чтению и изменению (rowhammer) памяти других процессов из JS кода в
    броузере под виртуальной машиной запущенном. По сути такое можно
    использовать только на отдельной железке. То есть, должен быть компьютер
    для работы обычной и отдельный компьютер для выхода в Интернет, ибо это
    недоверяемый blackbox. Кроме того, что мешает цензору быть участником
    этой opennet сети и видеть как WASM-программы меняются и как они
    планируют обфусцировать трафик? Может мешать только его инертность к
    изменениям? Она чисто технически решается. И опять же, никто не помешает
    блокировать доверенные ноды занимающиеся управлением остальных
    компьютеров такой сети. Tor же ведь так и отключают, просто блокируя все
    эти database серверы (не помню как они там точно называются). И bridge-ы
    помогают только сиюминутно, плюс должен быть канал через который о них
    можно узнавать.
    
    >Зависимость тут только от имени ресурса. Идея в том, что popular.org
    >скорее всего захочет договориться с цензорами, и его не заблокируют.
    >Если мимикрировать запросы для example.com под popular.org, то есть
    >шанс, что такой запрос пройдёт через фильтры.
    
    Активный MitM может увидеть что подписываться popular.org сертификатом
    всё равно не получается, что всё равно на нём handshake не пройдёт. Вы
    просто упомянули domain fronting, а ведь это когда соединение же
    терминируется действительно на popular.org, который дальше просто
    проксирует трафик/запросы к example.com. А тут и мой вопрос: какой ему
    от этого profit.
    
    >Если бы это было так, то мы бы увидели хотя бы одно государство, которое
    >бы переписало blockchain у биткоина.
    
    Так, насколько знаю, уже не раз >51% ресурсов было в руках ghash.io или
    ещё каких-то ферм, которые все сосредоточены в Китае. С моей точки
    зрения, преобладающая часть вычислительных ресурсов Bitcoin уже не
    первый год полностью в Китае сосредоточены и поэтому подконтрольны КНР.
    За рост верхушку цепочки они и отвечают.
    
    В мире криптографии всегда отталкиваются от того, что у злоумышленника
    *всегда* больше вычислительных ресурсов. И Bitcoin уже показал что всё
    равно ресурсы сосредотачиваются в руках нескольких участников, поэтому
    говорить о каком-либо доверии тут не приходится. PoW на практике сейчас
    не работает. В мире криптовалют отталкиваются не от криптографии с её
    жёсткими детерминированными решениями, а от теории игр, социальных
    взаимоотношений и прочем. Тут я не разбираюсь и не хочу. 51% ресурсов
    был сосредоточен в руках одного участника? Был. Не раз. Всё, такой PoW
    провалился. Поэтому криптографы (ну как минимум, которых я читаю,
    которые пилят там GNUnet какой-нибудь или что-то по этой теме) не
    рассматривают PoW (и любые решения где предполагается 51% ресурсов в
    руках добросовестных участников) как решение чего бы то ни было.
    
    >Более того, раз от этих вычислений зависит безопасность соединения, то
    >клиент заинтересован в том, чтобы было потрачено (в разумных преедлах,
    >конечно) как можно больше его ресурсов. Ведь тогда цензору тоже придётся
    >их потратить, чтобы подсмотреть метаинформацию.
    
    Повторюсь, но я считаю что гонка ресурсов -- путь в никуда. Или это
    просто не будет работать (как Bitcoin, с криптографической точки зрения,
    который просто в пустую жгёт электричество Земного шара), или это будет
    постоянная гонка, с всё возрастающими ресурсами.
    
    В GNUnet экономическая система (она у них вроде так и называется) тоже
    основана на том, что чем больше ты штатно себя хорошо ведёшь и помогаешь
    работе сети (шлёшь не непойми что, а пакеты которые точно признаются
    другими участниками валидными/полезными), то относительно каждого из
    участников (соседей) у тебя будет расти и доверие к тебе, приоритет
    обработки запросов для тебя. Ну как в BitTorrent когда-то: больше
    отдаёшь -- больше получаешь. Просто если использовать GNUnet, то не
    нужно иметь никаких больших ресурсов (кроме канала связи и жёсткого
    диска возможно), не нужно запускать чужой код, система цензуроустойчива,
    куда более проста (ведь сердце GNUnet это GAP протокол/транспорт), плюс
    анонимность и другие плюшки. Но... да, это всё darknet/greynet. Я,
    правда, не вижу как задачи подобные можно решить в opennet-е. PoW не
    решение, совсем.
    
    >Bitcoin делает ровно это. И как я уже чуть выше сказал, пока у него
    >получается быть впереди state-level adversaries.
    
    С моей точки зрения -- уже давно не получилось. ghash.io это
    продемонстрировал. Смысл же не в том что ghash.io мы доверяем, а в том,
    что никому не надо доверять -- все все все не смогут сговориться между
    собой и на этом всё и держится, на большом количестве "равноправных"
    участников. Я, вот прям сейчас, могу ли как-то влиять на консенсус, на
    его поддержку в Bitcoin? Нет. Ибо моих ресурсов никак не может быть
    достаточно для выработки блока. А участвовать вкупе с кем-то -- не я
    принимаю решение какие транзакции взять в блок.
    
    >Значит можно будет построить оверлейную сеть поверх этих служб.
    >Пользователь 2a02:6b8:a::a хочет добавить вас в друзья, указанная
    >пользователем причина: "65:71:37:0b:e0:e7:54:65:f2:45:4b:6c:d4:3a:4c:06".
    
    Будет работать до тех пор пока не запретят указывать подобные причины :-)
    Опять же гонка вооружений/ресурсов, замкнутый круг. А если и строить
    overlay, то можно же начинать уже сейчас, пока в общем и целом какая-то
    связанность между компьютерами есть! Но... этого никто не будет делать,
    ибо нафиг надо. А когда гром грянет, то там уже просто не
    скооперироваться. И работают overlay сети только когда достаточно
    большое количество участников, что тоже надо делать заранее.
    
    Переходить/переезжать в overlay (зеркалировать там ресурсы) нужно
    начинать бы уже сейчас. Не потому что прикрывают, а чтобы оно уже было
    там работающим, когда прикроют (уберут связанность). У меня мои ресурсы
    (ценность которых, понимаю, никакая) и в Freenet, и в Tor и в I2P, и в
    cjdns/Hyperboria и в IPFS были. GNUnet игры не в счёт. Но всё это так
    плохо работает (не с точки зрения малого количества участников, а с
    точки зрения самого софта (только Tor работает как часы, только мало чем
    помогает всерьёз)), что мне уже надоело и я забил :-)
    
    комментарий 5:
    From: kmeaw
    Date: 2020-09-23 18:06:56Z
    
    > Кроме того, предполагается что будут доверенные участники. Видимо,
    > автоматически "вшитые" как доверенные, как в Tor. Лично я это тоже
    > неприемлю -- значит в их руках решения о том как и что будет работать.
    > Кто это будет? Кто может быть тем, кому все будут доверять? Таких не
    > бывает и не может быть.
    
    Я предлагаю ту же идею, что у DPoS — фактически, демократия. Если
    участник хорошо себя ведёт (не подписывает то, что не должен
    подписывать, имеет хорошую availability), то он может выдвинуть себя в
    качестве кандидата на получение расширенных прав. Среди этих прав самым
    важным правом является право подписывать новое состояние сети. За время
    обладания этими правами нужно заложить некоторое количество средств в
    качестве залога. Если любой участник сети сможет предъявить подписанный
    пример плохого поведения, то он получает кусок этого залога — это
    стимулирует всех следить за избранными в консенсус.
    
    > Идею прочитал, но, по понятным причинам, я бы в таком участвовать не
    > стал :-).
    
    Побуду немного занудой. Если это раздражает, то можно мне об этом
    сказать — я не обижусь, и перестану так делать. :-)
    
    Вы ведь наверняка используете компьютер, построенный на несвободном
    железе. Вполне может существовать способ удалённо получить контроль над
    состоянием компьютера — это может быть особенный сетевой пакет, особая
    последовательность инструкций или даже особое радиоизлучение. Способов
    изучить топологию сложной электронной микросхемы у большинства людей в
    домашних условиях просто нет, поэтому приходится доверять производителю
    железа.
    
    В чём смысл отказываться запускать временно и в ограниченном окружении
    чужие программы, которые автоматически доставляются из непонятных
    источников? Ведь в отличии от железа программу можно в домашних условиях
    разобрать на кусочки и посмотреть, что там внутри. В этом плане мне
    кажется благом, что Intel экономит и переносит часть функций железа в
    софт (микрокод, Intel ME), и такая же тенденция есть везде: прошивка
    жёстких дисков, BIOS, system controller — это означает, что
    потенциальному исследователю понадобятся более доступные инструменты для
    анализа этой технологии на предмет наличия скрытых возможностей и
    ошибок, что увеличит число таких исследователей. То же самое касается и
    закрытых драйверов (nvidia, например) — производитель мог бы спрятать
    все сложности в железе, добавив к нему микропроцессор, на котором
    выполняется тот же самый закрытый драйвер, предоставляя ОС интерфейс для
    управления устройством. Но вместо этого, ради удешевления, часть функций
    устройства попадает в драйвер, и у нас появляется возможность изучать
    его дома, используя привычные инструменты для отладки и
    реверс-инженеринга.
    
    Если выделять компьютер под узел вычислительной сети, лишающей
    пользователя возможности влиять на процесс вычислений, то в любой момент
    можно будет "отобрать" его обратно и снова стать его полноправным
    владельцем, просто удалив с него ОС.
    
    Что плохого в том, что непонятная программа временно поработает на
    компьютере в ограниченном окружении? Вероятно, на это последует аргумент:
    
    > росто тут ещё проблема в том, что у нас, у простых людей, нет
    > компьютеров которые бы могли изолировать программы друг от друга и
    > обеспечить безопасность друг от друга. На практике уже были атаки по
    > чтению и изменению (rowhammer) памяти других процессов из JS кода в
    > броузере под виртуальной машиной запущенном. По сути такое можно
    > использовать только на отдельной железке.
    
    Но ведь это является багом, и исправляется в железе, и костылится в
    софте. Есть достаточно крупные игроки (вычислительные облака), которые
    крайне заинтересованы в том, чтобы таких проблем не было. У них бизнес
    построен на как можно более плотной упаковке программ от разных
    поставщиков на физические компьютеры. Чем хуже получается упаковывать,
    тем ниже у них прибыль.
    
    У меня раньше была идея поменять принцип разделения на привилегированный
    и пользовательский режимы. В традиционных системах привилегированной
    операцией считается настройка внутренних устройств и взаимодействие с
    внешними устройствами. Путём настройки внутренних устройств (в первую
    очередь MMU) устанавливаются границы между процессами, которые они не
    могут пересечь. Мне казалось, что раз подобные защиты всё равно обходят
    из-за несовершенства железа, то можно переложить задачу изоляции с
    железа на системное ПО (которое легко обновить, по сравнению с железом),
    а привилегированной операцией объявить любое изменение кода в памяти. То
    есть для того, чтобы программа смогла вообще появиться в исполняемой
    памяти, ей надо попросить доверенный компонент ОС провести валидацию
    новых страниц кода на предмет отсутствия "плохих" операций, прежде, чем
    этому коду будет позволено стать исполняемым.
    
    Но такой подход не работает, если в программе используется динамическая
    кодогенерация, либо если программе требуется загружать какой-то код
    после старта (плагины, например). Более того, даже сам процессор внутри
    себя использует похожий подход — он меняет (без видимого кроме, может
    быть, производительности, эффекта при условии, что в программе нет
    гонок) своё поведение таким образом, чтобы лучше соответствовать
    обрабатываемому потоку данных от непредсказуемых источников (внешних
    устройств). Похожая проблема есть сейчас у процессоров e2k — даже у
    эффективно работающего компилятора нет возможности генерировать код,
    лучшим образом реагирующем на внешние источники. Сейчас приходится
    запускать инструментированную программу, собирать статистику, а потом
    пересобирать программу снова, используя эту информацию. Ещё эффект этой
    проблемы можно наблюдать, если запустить e2k в режиме динамической
    трансляции x86-кода — при необходимости использовать Windows не
    захочется ставить что-то современнее XP, хотя на той же машине в
    native-режиме GNU/Linux показывает неплохую производительность.
    
    А Intel умеет делать это очень быстро, прямо изнутри процессора. И JIT в
    современных реализациях языков программирования делают похожую вещь.
    Если разрешить JIT работать, но требовать валидации каждой новой
    страницы кода, то это потратит больше времени, чем мы выиграем за счёт
    более эффективного (сгенерированного JIT) кода. Поэтому эта идея сделает
    вычисления настолько дорогими, что дешевле будет разделить задачи между
    физическими машинами.
    
    Резюмируя, проблема изоляции процессов существует, но подход "запретить
    исполнять неизвестный код" вредит производительности настолько сильно,
    что экономически выгоднее разделять задачи на физические машины. А
    поскольку облака заинтересованы в обратном, эта проблема будет решаться.
    
    Доводя обратную идею до абсурда, можно отказываться подключаться к
    сетям, с владельцами компьютеров которых протагонист не знаком лично;
    вдруг они чего нехорошее по сети сделают, а в сетевых программах тоже
    бывают уязвимости.
    
    > Так, насколько знаю, уже не раз >51% ресурсов было в руках ghash.io
    > или ещё каких-то ферм, которые все сосредоточены в Китае.
    
    Это не совсем так. ghash.io в то время был не фермой, а майнинговым
    пулом, то есть пользователи добровольно отдавали свои вычислительные
    ресурсы под очень ограниченное использование — владельцы ghash.io не
    могли производить на них произвольные вычисления.
    
    Кажется, проблему пулинга пыталась решить какая-то криптовалюта, которая
    позволяла майнерам обманывать пулы, добавляя необнаруживаемый ключ
    внутрь своих посылок, который позволял забрать прибыль всего блока
    целиком вместо кусочка, пропорционального затраченным усилями одного
    участника.
    
    Если бы кто-то мог собрать в одни руки огромные вычислительные ресурсы,
    то он бы мог сломать очень многие криптографические защиты. Мне пока что
    сложно представить себе цензора, готового потратить даже 5%
    суммарной вычислительной мощности всех цензурируемых пользователей
    вместе взятых. Никогда не слышал, чтобы DPI какого-нибудь провайдера
    в РФ занимал больше одной стойки.
    
    Даже в Китае с их сложным фаерволом изнутри страны получается обманывать
    фильтры. Китайцы не останавливаются с мотивацией "всё равно у нас
    недостаточно ресурсов, чтобы тягаться с правительством", а придумывают
    все более изощрённые способы заставить фильтры пропустить пакет,
    продолжая эту гонку.
    
    комментарий 6:
    From: Sergey Matveev
    Date: 2020-09-23 19:41:39Z
    
    *** kmeaw [2020-09-23 21:03]:
    >Я предлагаю ту же идею, что у DPoS — фактически, демократия. Если
    >участник хорошо себя ведёт (не подписывает то, что не должен
    >подписывать, имеет хорошую availability), то он может выдвинуть себя в
    >качестве кандидата на получение расширенных прав.
    
    Я сразу представляю то, что достаточное количество нод злоумышленника
    будут себя вести хорошо, чтобы преобладающая часть этих нод
    злоумышленника стала привилегированными и влияющими на консенсус в сети,
    принятие решений, и т.д.. Также как и возможен сговор нод злоумышленника
    чтобы предъявлять плохое поведение. Что такое плохое поведение?
    Универсальной меры для этого нет, в принципе. Я к тому, что я признаю
    решения о доверии и кто хороший/плохой только в пределах личных нод. Не
    может быть (в моём идеальном мире) какого-то общего консенсуса о
    благополучности той или иной ноды.
    
    >Побуду немного занудой. Если это раздражает, то можно мне об этом
    >сказать — я не обижусь, и перестану так делать. :-)
    
    Я сам зануда тот ещё :-)
    
    >Вы ведь наверняка используете компьютер, построенный на несвободном
    >железе.
    
    К сожалению да.
    
    >Вполне может существовать способ удалённо получить контроль над
    >состоянием компьютера — это может быть особенный сетевой пакет, особая
    >последовательность инструкций или даже особое радиоизлучение. Способов
    >изучить топологию сложной электронной микросхемы у большинства людей в
    >домашних условиях просто нет, поэтому приходится доверять производителю
    >железа.
    
    Боюсь что топологию и в лабораторных условиях, насколько слышал, тоже
    фиг получишь. И да, наверняка у меня есть backdoor-ы, учитывая что у
    меня один из самых проблемным Skylake процессоров в ноутбуке (в
    серверах, правда, значительно более старые Xeon-ы).
    
    Но я не соглашусь с тем, что я вынужден доверять. Я не доверяю. Но я
    стараюсь, при использовании например ca.cypherpunks.ru сертификата или
    моего основного PGP ключа зачастую, отключать Ethernet хотя бы. Плюс
    спокойствия добавляет firewall стоящий перед ним. Для особо важных вещей
    я полностью отключаюсь от всего, делаю store-and-forward.
    Целенаправленная атака ФСБ/СВР через стенку от соседей будет успешна, от
    неё я не защищён само собой. А вот на работе есть и клетки Фарадея и
    исключительно никогда не подключающиеся к Ethernet-у (хоть как-то
    косвенно связанному с Интернетом) компьютеры и просто оптические
    переходники для обмена данными (чтобы из компьютера только оптика
    выходила). Я бы хотел такое и дома иметь и даже интересовался этими
    железками, можно ли купить. Но... я человек, со своими потребностями в
    удобстве :-). И жить без ZFS не хочу. Поэтому пока я по сути ограничен
    одной только FreeBSD. И выбирать из железа могу только для неё. А она
    имеет поддержку, понятное дело, только amd64, вскоре будет arm64. Если
    бы работала на MIPS (с ZFS-ом), то я, честно, без преувеличения, давно
    бы пересел на какие-нибудь наши Байкалы процессоры. Просто учитывая что
    я не работаю с невероятно sensitive данными, то обхожусь без этого. Как
    бы, цена такого highly-secure решения слишком высока (отсутствие ZFS :-(
    как минимум). Но сейчас я в состоянии ожидания того когда появятся
    доступные другие платформы, особенно возможно наши, где все мои
    программные хотелки можно было бы реализовать и я бы на них пересел. Но
    я не доверяю intel ни в коем случае, как бы просто пока деваться особо
    некуда и нужно понимать что наше железо ещё как дыряво.
    
    >В чём смысл отказываться запускать временно и в ограниченном окружении
    >чужие программы, которые автоматически доставляются из непонятных
    >источников? Ведь в отличии от железа программу можно в домашних условиях
    >разобрать на кусочки и посмотреть, что там внутри.
    
    Стоимость разбора программы, попытки понять что же она делает -- как
    правило, настолько велика, что проще самостоятельно написать её с нуля.
    Если речь про JS-код, то не тратить же мне недели на попытки понимания
    что же он делает? Через неделю он 100 раз на сервере измениться, в том
    числе и API, делая бесполезным старый код. Цена доверия к этому коду
    такая, что... мне проще его не использовать, ибо ничто это не окупит.
    
    Если речь про прошивки, то... а много ли кто проводит reverse
    engineering-а всех этих firmware, видя/показывая/доказывая что они
    плохого ничего не делают? Я с ходу не помню чтобы особо этим занимались.
    Проще или не использовать или использовать свободные/открытые аналоги.
    Так что не соглашусь с этим тезисом: цена разбора всего этого так
    велика, что не имеет смысла его делать. Если речь, например, про
    госструктуры, то им проще начать выпускать собственные процессоры/железо.
    
    А сколько всего перенесено из железа в прошивку (или наоборот): вообще
    роли не играет поэтому. Конечному пользователю легче от этого не станет.
    Закрытый код -- есть закрытый код. Микрокод/прошивки это только ради
    удешевления, ну и упрощения исправлять баги (собственно, это тоже
    удешевление производства).
    
    >Что плохого в том, что непонятная программа временно поработает на
    >компьютере в ограниченном окружении? Вероятно, на это последует аргумент:
    >
    >> росто тут ещё проблема в том, что у нас, у простых людей, нет
    >> компьютеров которые бы могли изолировать программы друг от друга и
    >> обеспечить безопасность друг от друга. На практике уже были атаки по
    >> чтению и изменению (rowhammer) памяти других процессов из JS кода в
    >> броузере под виртуальной машиной запущенном. По сути такое можно
    >> использовать только на отдельной железке.
    >
    >Но ведь это является багом, и исправляется в железе, и костылится в
    >софте. Есть достаточно крупные игроки (вычислительные облака), которые
    >крайне заинтересованы в том, чтобы таких проблем не было. У них бизнес
    >построен на как можно более плотной упаковке программ от разных
    >поставщиков на физические компьютеры. Чем хуже получается упаковывать,
    >тем ниже у них прибыль.
    
    В целом тут я согласен. Но, облака (Google/Facebook/whatever) защищаются
    от злоумышленных программ. Они не доверяют запускаемому софту. Но, Intel
    для них не является потенциальной угрозой. Поэтому я верю что будут
    исправляться Meltdown/whatever проблемы (хотя не все их можно назвать
    проблемами, а просто особенностями работы, ради скорости :-)), но
    backdoor-ы оттуда не уберутся. Например Intel SGX технология: ею
    пользоваться можно только и только если доверять реализации Intel.
    Облака, корпорации это устроит. А вот какого-нибудь ФСБ, очевидно, что
    нет. Если закрыть Meltdown/whatever атаки, то у меня под рукой всё равно
    будет не доверяемый blackbox от Intel. Недоверяемый потому что точно
    известно что внутри есть бяка. А вот то, что в Байкале всё чисто, я
    поверю гораздо охотнее.
    
    У меня есть отдельный ноутбук в шкафу, который приходится иногда
    доставать, чтобы на нём запустить Firefox с JS-ом для оплаты VPS.
    Отдельная физическая железка, на которой ничего кроме броузера и Java.
    
    >У меня раньше была идея поменять принцип разделения на привилегированный
    >и пользовательский режимы. [...]
    
    Вроде бы понимаю ваше предложение. И оно мне нравится. Я бы например
    доверял и bochs-like эмулятору, который не железом (как bhyve/KVM)
    делает изоляцию, а который сам полностью программно эмулирует весь
    процессор. Но да, это очень медленно и дешевле использовать отдельную
    железку (хотя для не слишком затратных задач можно и потерпеть).
    
    >Резюмируя, проблема изоляции процессов существует, но подход "запретить
    >исполнять неизвестный код" вредит производительности настолько сильно,
    >что экономически выгоднее разделять задачи на физические машины. А
    >поскольку облака заинтересованы в обратном, эта проблема будет решаться.
    
    Это если рассматривать эту проблему с точки зрения доверия/безопасности.
    Но я то ещё и из лагеря движения свободного ПО и я просто в принципе
    считаю это не этичным и нехорошим подходом запускать несвободное/закрытое ПО.
    Точнее так: на работе, в виртуальных машинах, я запускаю некоторые
    несвободные вещи, но написанные коллегами. Технически мне дают закрытое
    ПО, но я ему доверяю. Но только потому что это доверяемые коллеги.
    
    Меня например напрягает что PostScript/PDF/шрифты (насчёт PDF не помню
    точно) являются тоже по сути тьюринг-полными языками/технологиями и
    через них тоже можно натворить бед. Но, я не слышал о том чтобы такие
    атаки были. А вот с JS я напрочь отказываюсь иметь дело, потому что на
    нём, как мне видится, чуть ли не только malware/spyware код и пишут
    (слежка, слежка, слежка, трэкинг). Плюс пишут на JS чтобы ограничивать
    возможности нормальной работы с документами, парсинга данных, и т.д.. В
    общем на JS мало какие задачи делают из хороших помыслов. Ну и... как
    программист, я не понимаю какой разумный человек выберет и захочет
    писать на этом языке :-) (holywar тема конечно). Поэтому доверия к
    кому-либо кто что-то делает на JS... нет уж, нету.
    
    >Доводя обратную идею до абсурда, можно отказываться подключаться к
    >сетям, с владельцами компьютеров которых протагонист не знаком лично;
    >вдруг они чего нехорошее по сети сделают, а в сетевых программах тоже
    >бывают уязвимости.
    
    Да, это крайность, но об этом тоже не стоит забывать :-). И не только в
    программах/драйверах, но и в firmware сетевой карты, которая на PCI шине
    сидит привилегированно. Да и более того, я же вынужденно доверяю
    разработчикам FreeBSD и их образам. Хотя я полностью из исходников
    пересобираю всю систему, как и абсолютно весь софт (пакеты не использую
    (если только не сам их собрал), только порты). Но я пока ещё даже не
    дошёл до того чтобы делать bootstrap GNU GCC (когда там используется
    что-то на Scheme, потом TCC, потом GCC2, GCC3, GCC4, а им уже можно и
    LLVM/Clang (которые по умолчанию в FreeBSD) собрать, как и всю систему
    далее). К сожалению приходится доверять многим. Но доверять чему-либо на
    JS -- нет уж. И снова напомню: хороший человек не будет делать закрытое
    ПО и тебе его давать. Должно быть только свободное, но это параллельная
    тема с безопасностью.
    
    >Это не совсем так. ghash.io в то время был не фермой, а майнинговым
    >пулом, то есть пользователи добровольно отдавали свои вычислительные
    >ресурсы под очень ограниченное использование — владельцы ghash.io не
    >могли производить на них произвольные вычисления.
    
    Владельцы ghash.io решали что будут вычислять участники фермы.
    Безусловно, это не полный контроль над ресурсами, но это контроль над
    транзакциями. Насколько слышал, без transaction fee уже давно вроде бы в
    Bitcoin ничего проходить не будет -- как-раз потому что все эти крупные
    майнеры в праве выставлять такие условия для попадания к себе в блок.
    
    >Если бы кто-то мог собрать в одни руки огромные вычислительные ресурсы,
    >то он бы мог сломать очень многие криптографические защиты.
    
    А можно пример. Любопытно какие же. Просто ломать криптографию будут в
    самую последнюю очередь. Старый "добрый" 3DES+HMAC-MD5 -- не сломать.
    Ломать можно только асимметрию с слабыми/маленькими ключами -- тут, как
    мне кажется, кому это надо, то это и так делает вовсю. А если сейчас
    появится мощность всех BTC и суперкомпьютеров, ну... ну сломают всё ещё
    где-нибудь использующиеся килобитные DH/RSA. Те кто это продолжают
    использовать -- сами дураки, мне их не жалко :-)
    
    >Даже в Китае с их сложным фаерволом изнутри страны получается обманывать
    >фильтры. Китайцы не останавливаются с мотивацией "всё равно у нас
    >недостаточно ресурсов, чтобы тягаться с правительством", а придумывают
    >все более изощрённые способы заставить фильтры пропустить пакет,
    >продолжая эту гонку.
    
    И всё это я считаю тратой сил и ресурсов не в том русле. Я сейчас как
    диванный эксперт, но мне кажется что 99% китайцев спокойно живут и их ни
    капли не парит ни DPI, ни связанность в Интернете, ни чего бы то ни
    было. А парит жалкое меньшинство, которому, скорее всего, просто just
    for fun заниматься пробиванием этого DPI, но не является чем-то
    действительно необходимым. DPI, как и куча другой защиты в мире,
    заточены же только для увеличения порога входа и не более. Даже цензура
    на уровне DNS resolver-ов работает уже отлично: 90% людей это отсеет от
    "нежелательных" ресурсов, но 90% этих людей и не заметить ничего или не
    будет парить. Хотя, казалось, чего проще в настройках просто прописать
    другой IP DNS. В Иране я вот на практике знаю что просто делают shaping
    трафика по некоторым TCP/UDP портам, который легко обходится просто
    использованием SSH/VPN/whatever на другом порту. Но каждый такой
    примитивный шаг со стороны DPI/цензоров -- отсеивает огромную массу
    людей, отлично работая и справляясь со своей задачей. Рутрэкер вот по
    IPv6 (который у меня через HurricaneElectric брокера) работает
    замечательно, а по IPv4 нет. Учитывая что у простых смертных в РФ нет
    IPv6 дома, то проблема, считай, решена. Кому надо -- легко обойдёт это.
    Но таких так мало, что можно закрыть на это глаза.
    
    А ситуация с eSNI я считаю завязана уже на политически информационных
    войнах. США хочет тонны своей дезинфы и мозгопромывающего говна толкать
    в головы всех остальных в мире (США я считаю своими методами ничем не
    отличаются от террористов Аль-Каиды, ИГИЛа и я солидарен с Ираном,
    официально ВС США считающие террористической организацией), а РФ/КНР
    ставят препятствия в виде DNS урезанных. Они придумывают всякие DoH (не
    нормальные решения, а именно те, которые в броузере делаются, чтобы
    легко было обновлять это на компьютерах пользователей). Наши начинают
    парсить SNI. Эти начинают придумывать ад с eSNI. Всё это просто быстрые
    и грязные костыли, чтобы решать то тут, то там возникающие проблемы с
    неугодными странами. А если появляется кто-то, типа TikTok, который
    начинает быть на каждом смартфоне гражданина США, но при этом TikTok
    неподвластен этой США, то начинаются все эти разборки и закрытия
    платформы. Где-то есть неподконтрольные США бесплатные (а значит и
    популярные) X.509 CA (startssl, cacert, ещё куча каких-то была), значит
    их просто выпиливают из ОС/броузеров. США в этом плане молодцы --
    используют свой контроль чтобы отсеивать всех кто не подконтролем им и
    кто не угоден/не удобен. Они могут рынком, санкциями, правилами в
    ОС/броузерах (вроде бы всея-казахский CA добавляли как априори
    недоверяемый?) всё это делать. А КНР/РФ, не имея такого контроля не
    может так просто огораживать себя от проблем и угроз. Все эти
    DoH/DNSSEC/eSNI -- костыли (с точки зрения техники) и политические игры.
    Поэтому меня мало волнующие. А уж участвовать точно в них не буду :-)
    Я и Let's Encrypt то не приемлю, ни DNSSEC. Использую DNSCurve, DANE,
    PGP -- с ними хотя бы есть возможность не использовать третьих лиц
    (хотя я прекрасно понимаю проблему bootstrap-а и первоначального
    получения доверия к ключам DNSCurve и прочему). Хочется серьёзно
    улучшить сеть и иметь цензуроустойчивость, безопасность, и т.д. --
    повторюсь, нужны другие технологии (GNUnet/Freenet/overlay разные и
    всякое подобное).
    
    комментарий 7:
    From: Sergey Matveev
    Date: 2020-09-23 20:56:40Z
    
    Вынос железа в микрокод может нести пользу например если его можно
    обновить и убрать из него всякие malicious features (собственно backdoor-ы).
    Тут соглашусь. Но если бы, да кабы :-)
    
    комментарий 8:
    From: kmeaw
    Date: 2020-09-24 05:19:29Z
    
    > И жить без ZFS не хочу. Поэтому пока я по сути ограничен одной только FreeBSD.
    > И выбирать из железа могу только для неё. А она имеет поддержку, понятное дело,
    > только amd64, вскоре будет arm64. Если бы работала на MIPS (с ZFS-ом), то я,
    > честно, без преувеличения, давно бы пересел на какие-нибудь наши Байкалы
    > процессоры. Просто учитывая что я не работаю с невероятно sensitive данными, то
    > обхожусь без этого. Как бы, цена такого highly-secure решения слишком высока
    > (отсутствие ZFS :-( как минимум). Но сейчас я в состоянии ожидания того когда
    > появятся доступные другие платформы, особенно возможно наши, где все мои
    > программные хотелки можно было бы реализовать и я бы на них пересел.
    
    Увы, я не понимаю в ZFS почти ничего, но наугад выполненные команды,
    после бегло просмотренного help, кажется, работают:
    
    e2k ~ # truncate -s 1G zfs.img
    e2k ~ # losetup --show -f zfs.img
    /dev/loop0
    e2k ~ # zpool create new-pool /dev/loop0
    e2k ~ # zpool status
      pool: new-pool
     state: ONLINE
      scan: none requested
    config:
    
            NAME        STATE     READ WRITE CKSUM
            new-pool    ONLINE       0     0     0
              loop0     ONLINE       0     0     0
    
    errors: No known data errors
    e2k ~ # zfs create new-pool/test
    e2k ~ # zfs mount
    new-pool                        /new-pool
    new-pool/test                   /new-pool/test
    e2k ~ # uname -a
    Linux e2k 4.19.0-1.8-e8c #1 SMP Mon Jun 29 11:04:09 GMT 2020 e2k E8C MBE8C-PC v.2 GNU/Linux
    e2k ~ # zpool destroy new-pool
    e2k ~ # zpool status
    no pools available
    e2k ~ # losetup -d /dev/loop0
    e2k ~ # rm zfs.img
    
    Говорил с разработчиками по поводу закладок и особенностей, они
    подтвердили, что тех же проблем, что есть в Intel, у них нет.
    
    Стоит ли проверить что-то ещё, чтобы считать такую платформу пригодной
    для использования?
    
    комментарий 9:
    From: kmeaw
    Date: 2020-09-24 06:01:59Z
    
    Немного оффтопика: а можно ли сделать так, чтобы комментарии на все
    посты, на которые я написал комментарий, приходили в почту с "Reply-To:
    comment@blog.stargrave.org", а у Subject отрезались префиксы типа
    "Re[4]: "? Без этого очень неестественным выглядит процедура ответа с
    цитированием — приходится разрешать текстовому редактору, в котором я
    пишу письмо на удалённой машине доступ к буферу обмена, чтобы
    скопировать текст из локального браузера.
    
    > Но я не соглашусь с тем, что я вынужден доверять. Я не доверяю.
    
    В одном из докладов, кажется "towards reasonably trustworthy x86
    laptops" Джоанна Рутковска заметила, что люди используют компьютеры, как
    расширения, протезы для своего мозга — записывают туда то, что могут
    забыть, вычисляют то, что сложно вычислить в уме. Мне сложно
    представить, как можно не доверять такому протезу, но при этом
    использовать его.
    
    Или под "доверием" понималось что-то другое?
    
    > при использовании например ca.cypherpunks.ru сертификата или
    > моего основного PGP ключа зачастую, отключать Ethernet хотя бы. Плюс
    > спокойствия добавляет firewall стоящий перед ним
    
    Почти любой firewall на выход можно очень легко обойти - достаточно
    кодировать информацию внутри метаинформации в исходящих пакетах,
    например изменять TCP ISN, timestamp offset или банально чуть-чуть
    задерживать отправляемые пакеты, кодируя данные во временных задержках.
    
    Несколько лучше будет работать подход, когда на границе сети программа
    разбирает весь трафик, интерпретирует его настолько высокоуровнево,
    насколько это возможно, а затем воссоздаёт его из своей интерпретации.
    Например, для HTTP это может быть прозрачный HTTP-прокси, а для HTTPS -
    работающий MiTM, который всё перешифровывает своей реализацией, чтобы
    испортить потенциальную утечку через генератор ключей внутреннего
    клиента. А прочий TCP/IP — хотя бы рекомбинировать, на манер SLiRP,
    который превращает поток пакетов в вызовы BSD Socket API.
    
    > Стоимость разбора программы, попытки понять что же она делает -- как
    > правило, настолько велика, что проще самостоятельно написать её с нуля.
    > Если речь про JS-код, то не тратить же мне недели на попытки понимания
    > что же он делает? Через неделю он 100 раз на сервере измениться, в том
    > числе и API, делая бесполезным старый код. Цена доверия к этому коду
    > такая, что... мне проще его не использовать, ибо ничто это не окупит.
    
    Я немного не про то. Раз несвободное ПО всё равно используется (в
    составе firmware, например), то можно проигнорировать факт его
    несвободности, если считать железо и firmware неделимым
    программно-аппаратным комплексом. Так же и с веб-сайтами — неужели
    что-то изменится, если веб-сервер вместо того, чтобы отдать
    pre-redendered HTML отдаст js-проргамму, которая этот render сделает на
    локальном компьютере? Ведь HTML, CSS, шрифты тоже по сути являются
    программами, которые исполняются браузером — они содержат инструкции,
    управляющие некоторой абстрактной машиной, которая занимается отрисовкой
    страницы на экране. Чем же js такой особенный?
    
    > А вот с JS я напрочь отказываюсь иметь дело, потому что на нём, как
    > мне видится, чуть ли не только malware/spyware код и пишут (слежка,
    > слежка, слежка, трэкинг).
    
    Если речь про Google.Analytics, Яндекс.Метрику, баннерные системы, то
    javascript тут используется просто потому, что это удобно и легко. Если
    бы у всех он был заблокирован, то быстро появился бы агент,
    устанавливаемый на веб-сервера рекламных площадок и сливающий условный
    HTTP access.log в единый центр обработки данных, а контекстная реклама
    была бы prerendered на стороне сервера.
    
    Тут такая же ситуация, как с блобами в драйверах и железе — мы можем
    воспользоваться тем, что производитель экономит и отдаёт контроль над
    исполнением несвободных программ нам. В случае js, например, можно
    блокировать весь third-party код, делая большинство трекеров
    неработоспособными. Пока так не делает существенная доля пользователей,
    разработчики всего этого не будут отбирать у нас контроль, утаскивая всю
    эту логику на сторону сервера.
    
    То же самое с тем, что сайты превращаются в системы дистрибьюции
    несвободных клиентов к API — на мой взгляд, это лучше, чем отдавать мне
    кусок pre-rendered HTML, который я могу только браузером посмотреть.
    Пусть даже код этого несвободного клиента может через неделю 100 раз на
    сервере измениться — но так у меня есть хоть какой-то контроль. Вдруг,
    например, API в нужных мне местах не поменяется, и я смогу продолжать
    его использовать в своей программе. В противном случае мне бы пришлось
    парсить HTML, что куда менее приятное занятие.
    
    Иными словами, если на производителей железа и веб-разработчиков
    надавить в виде массого жёсткого непринятия любого несвободного ПО, то
    они весь свой код просто спрячут от нас — firmware внутрь железки, а js
    на server-side. А пока у нас есть это несвободное ПО — это ведь хорошо,
    значит когда-нибудь кто-то сможет его изучить и переписать.
    
    Или я упускаю что-то важное тут?
    
    комментарий 10:
    From: Sergey Matveev
    Date: 2020-09-24 06:52:01Z
    
    *** kmeaw [2020-09-24 08:16]:
    >Стоит ли проверить что-то ещё, чтобы считать такую платформу пригодной
    >для использования?
    
    1. Это Linux. Я правда, честно, искренне считаю Linux очень
       некачественным софтом. Это конструктор из которого можно лепить вещи
       is good enough выполняющие свои задачи. Но я не вижу красоты,
       качества, hacker-value и всего такого. Мне просто не нравятся его
       подходы, мне не нравится его зоопарк, мне просто неприятно осознавать
       что я использую этого монстра. Я готов использовать, допустим, в
       несколько раз более медленную OpenBSD, готов свыкнутся с отсутствием
       поддержки Bluetooth/WiFi/ещё-что-нибудь-вставить, но мне хочется
       работать с приятной, продуманной, простой и красивой целостной вещью.
       Я на полном серьёзе Linux не рассматриваю, хотя использовал его около
       7-8 лет, когда уже профессионально был программистом, когда
       достаточно сносно понимал ОС, но вернулся на FreeBSD. Я готов бы был
       использовать хоть NetBSD, хотья illumos, но не Linux.
    2. А главный аргумент против Эльбрусов -- у них закрытый компилятор. Я
       *обязан* использовать закрытое ПО для того чтобы с ним мочь работать.
       Неприемлемо. Проприетарному ПО я говорю нет.
    3. Ну и мне же ещё всё же нужен Go -- а его, насколько понимаю, пока там
       нельзя собрать, ни GCC-Go не собрать. Это не недостаток платформы, но
       пока недостающая поддержка.
    
    комментарий 11:
    From: Sergey Matveev
    Date: 2020-09-24 08:20:52Z
    
    *** kmeaw [2020-09-24 08:58]:
    >В одном из докладов, кажется "towards reasonably trustworthy x86
    >laptops" Джоанна Рутковска заметила, что люди используют компьютеры, как
    >расширения, протезы для своего мозга — записывают туда то, что могут
    >забыть, вычисляют то, что сложно вычислить в уме. Мне сложно
    >представить, как можно не доверять такому протезу, но при этом
    >использовать его.
    
    Ну, я настороженно отношусь к Рутковской. По мне, так она какой-то очень
    странный человек с очень странными высказываниями. Я уже не вспомню что
    конкретно меня смущало/напрягало, но к ней мне даже не хочется
    прислушиваться. Но это чисто моё субъективное к ней отношение. И её
    высказывание по поводу головы -- я просто не понимаю. Чисто технически,
    компьютеры это безусловно просто инструменты для арифметикологических
    операций, плюс инструменты для хранения/чтения данных. Но к чему это
    сказано (ею) я не понимаю.
    
    >Или под "доверием" понималось что-то другое?
    
    Мы же доверяем не абсолютно и полностью и сразу же. Одному человеку я
    буду доверять в профессиональном плане, но как человек, или его
    политическая позиция мне может быть отвратительна. За другим можно пойти
    в бой под пули. Жизненные советы одного мы слушаем, другого нет, но
    может доверять первому что он нас не обманет или что он тщательно и
    аккуратно выполнит работу.
    
    Intel-у я доверяю что он в состоянии делать складывания чисел и булевы
    операции. Как к АЛУ у меня сомнений нет. Но я не могу ему доверять, зная
    что в нём есть backdoor и он может делать что-то большее, чем я его
    просил. Я ему не доверяю в условиях когда вычисления могут представлять
    очень большую ценность/важность и за стенкой могут сидеть ФСБ с
    датчиками электромагнитного поля или радиоизлучателями. У всего есть
    пределы применимости. Жене мы можем доверять в одних вещах, но не
    доверять ей мыть посуду, ибо она делает это плохо. Или мы зачастую
    доверимся друзьям больше, чем какой-то девушке, которой кинуть как
    нечего делать. Везде просто оцениваются риски. Любой банк может
    изчезнуть/прогореть. Любой магазин может обмануть или подсунуть брак. По
    репутации мы и оцениваем риски. Я вот например мало к кому такое сильное
    предвзятое негативное отношение имею как к врачам. Многие плохо
    (априори) относятся к силовым структурам. Кто-то первым делом пойдёт к
    врачу, а я же только когда уже хуже быть не может и терять всё равно
    нечего. А кто-то аналогично так говорит и про милицию. Intel дома, для
    обычных человеческих задач -- доверяю enough. Intel для секретных,
    государственных, документов -- нет, только в клетке Фарадея без сетей и
    физическим периметром. А для совершенно критичных вещей -- уже нет
    доверия.
    
    А вот к возможности хранить данные я не очень доверяю. Во-первых, меня
    напрягает отсутствие ECC памяти в ноутбуке -- поэтому ему я бы ни за что
    не доверил long-time задачи, критические задачи, и т.д.. Для этого я
    домой и покупал Xeon-ы чтобы поддерживали ECC. Во-вторых, я не доверяю
    надёжности устройств энергонезависимых, как и большинство, поэтому мы
    делаем множество копий важных данных, делаем checksum-ы и тому прочее.
    Но я доверяю что для небольших, недолгих задач в RAM оно всё is good
    enough.
    
    >Почти любой firewall на выход можно очень легко обойти - достаточно
    >кодировать информацию внутри метаинформации в исходящих пакетах,
    >например изменять TCP ISN, timestamp offset или банально чуть-чуть
    >задерживать отправляемые пакеты, кодируя данные во временных задержках.
    
    Это всё понятно. Нет, я подразумевал firewall на вход, предполагая что
    "активировать" backdoor можно послав особые пакеты. Хотя это наверное и
    глупо, ибо уж если его активировать особой последовательностью
    (предполагая что сетевая карта тоже от Intel и дружит с
    backdoor-capability), то наверняка по совершенно банальным и стандартным
    TCP/UDP портам каким-нибудь. Но хотя бы firewall держит подальше BMC (в
    серверах есть моих) от Интернета.
    
    >Несколько лучше будет работать подход, когда на границе сети программа
    >разбирает весь трафик, интерпретирует его настолько высокоуровнево,
    >насколько это возможно, а затем воссоздаёт его из своей интерпретации.
    >Например, для HTTP это может быть прозрачный HTTP-прокси, а для HTTPS -
    >работающий MiTM, который всё перешифровывает своей реализацией, чтобы
    >испортить потенциальную утечку через генератор ключей внутреннего
    >клиента. А прочий TCP/IP — хотя бы рекомбинировать, на манер SLiRP,
    >который превращает поток пакетов в вызовы BSD Socket API.
    
    Да, полностью тут согласен. Но, как всегда, любая security имеет цену и
    мы решаем готовы ли мы заплатить её или нет (удобством хотя бы). Я такой
    высокоуровневый разбор дома, если это не one-click fire-and-forget
    решение, не буду применять :-)
    
    >Я немного не про то. Раз несвободное ПО всё равно используется (в
    >составе firmware, например), то можно проигнорировать факт его
    >несвободности, если считать железо и firmware неделимым
    >программно-аппаратным комплексом.
    
    Я примерно так и считаю. Стараюсь считать.
    
    >Так же и с веб-сайтами — неужели
    >что-то изменится, если веб-сервер вместо того, чтобы отдать
    >pre-redendered HTML отдаст js-проргамму, которая этот render сделает на
    >локальном компьютере? Ведь HTML, CSS, шрифты тоже по сути являются
    >программами, которые исполняются браузером — они содержат инструкции,
    >управляющие некоторой абстрактной машиной, которая занимается отрисовкой
    >страницы на экране. Чем же js такой особенный?
    
    firmware "скачивается" один раз. Их не много. Если бы было замечено что
    firmware WiFi адаптера как-то плохо себя ведёт (творит непотребное), то
    этот факт был бы известен и громко озвучен (рано или поздно). Мы как бы
    доверяем конкретно этому текущему решению имеющемуся на руках. Если это
    firmware устройств подключаемых по USB, то там ещё есть доверие к тому,
    что из-за USB устройство даже если захочет, то не может прочитать
    например любой участок памяти или отдавать команды, как DMA имеет
    PCIe/Firewire решения.
    
    JS -- при каждом коннекте к серверу он может менять. JS пишется в первую
    очередь не из благих намерений (я про JS который мы качаем ходя по
    сайтам, а не про JS на котором построен какой-нибудь Gitlab запускаемый
    в локальной сети), а для слежки и ограничений пользователя. Выполняя
    несвободный код -- мы отдаём компьютер под чей-то контроль. Это немного
    возможно перегиб, но такой же перегиб как "компьютер это просто АЛУ и
    память" Рутковской :-). У вас, как мне показалась, позиция такая: раз у
    нас всё равно толика проприетарщины закрытой есть, то давайте вообще
    любую разрешать и позволять. Я готов включать (и включаю!) JS для
    Gitlab-а работающего на работе в локальной сети. Я доверяю что он не
    вставляет слежку (Google Analytics какие-нибудь), плюс он от Интернета
    изолирован. Во всём нужна мера. Что-то мы можем стерпеть, что-то нет.
    Хамство одного человека на работе, редкое, молодого пацана -- можем
    стерпеть несколько раз. Хамство опытного взрослого старожила -- вряд ли.
    firmware не запускается на нашем CPU, на нашем центральном процессоре
    (ну я имею в виду штатным образом, а не firmware самого CPU), а JS
    запускается. Одно дело бяка проприетарная сидит в каком-то PCIe/USB
    устройстве, а другое дело выполняется на том же самом CPU, позволяя
    делать атаки на кэш и всё такое прочее. А firmware USB устройств и
    доступа к RAM не имеют физического или на уровне доступных USB команд.
    Тогда как JS -- имеет. В этом (запуск в самом сердце компьютера) и
    отличие JS-а. Плюс вопрос доверия, повторюсь: мало кто будет рисковать
    встраивая malware в firmware сетевухи, ибо можно потерять бизнес, а JS
    только и делает что используется в Web не для пользовательских нужд.
    Репутацией он уже отличается сильно.
    
    >Если речь про Google.Analytics, Яндекс.Метрику, баннерные системы, то
    >javascript тут используется просто потому, что это удобно и легко. Если
    >бы у всех он был заблокирован, то быстро появился бы агент,
    >устанавливаемый на веб-сервера рекламных площадок и сливающий условный
    >HTTP access.log в единый центр обработки данных, а контекстная реклама
    >была бы prerendered на стороне сервера.
    
    Вот именно пускай, как вы и описали, и делают. Нужно что-то там считать
    по access.log -- считайте, но не заставляйте меня запускать
    проприетарный код. Причём, prerendered решение потребовало бы,
    наверняка, скачивать данные только с одного сервера (собственно сайта),
    тогда как JS может буквально к двум сотням (я реально такое встречал!
    уму непостижимо!) совершенно левых third-party подключаться. Удобно? Ну
    вот и Apple/Google/Microsoft считают что удобно иметь backdoor, сливать
    хэши запускаемых команд, отправлять голосовой трафик для распознавания,
    отправлять все искомые запросы сразу же в поисковик, и т.д., и т.д..
    Желания корпораций как бы идут в противовес желаниям пользователей.
    Удобен JS только для корпораций.
    
    >Тут такая же ситуация, как с блобами в драйверах и железе — мы можем
    >воспользоваться тем, что производитель экономит и отдаёт контроль над
    >исполнением несвободных программ нам. В случае js, например, можно
    >блокировать весь third-party код, делая большинство трекеров
    >неработоспособными. Пока так не делает существенная доля пользователей,
    >разработчики всего этого не будут отбирать у нас контроль, утаскивая всю
    >эту логику на сторону сервера.
    
    Ну насколько понимаю всё же как-раз большинство и используют
    блокировщики рекламы, которые как минимум third-party и блокируют (и
    скорость возрастает ещё, ибо нет сотен лишних запросов!), поэтому с ними
    регулярно борятся в "магазинах" приложений броузеров. Но это я сужу по
    новостям.
    
    >То же самое с тем, что сайты превращаются в системы дистрибьюции
    >несвободных клиентов к API — на мой взгляд, это лучше, чем отдавать мне
    >кусок pre-rendered HTML, который я могу только браузером посмотреть.
    >Пусть даже код этого несвободного клиента может через неделю 100 раз на
    >сервере измениться — но так у меня есть хоть какой-то контроль. Вдруг,
    >например, API в нужных мне местах не поменяется, и я смогу продолжать
    >его использовать в своей программе. В противном случае мне бы пришлось
    >парсить HTML, что куда менее приятное занятие.
    
    Тут кардинально мы расходимся. С prerendered решением я использую
    Интернет чтобы получить *документ*. Возможно неудобоваримый, но просто
    документ который я могу посмотреть и доверять что он не поломает мне
    ничего и не скомпрометирует и не заставит мой компьютер сливать 200
    компаниям факт его просмотра и его я могу сохранить на жёсткий диск и
    читать без Интернета. С API -- ничего не могу. Допускать абсолютно
    непойми какому коду -- не могу, не собираюсь, даже не понимаю зачем
    этичному человеку могло бы понадобится из благих намерений мне
    отправлять закрытый кусок кода (да, я тут регулярно мешаю понятия
    проприетарного и закрытого, что не корректно). Не понимаю какой контроль
    может быть над закрытым кодом -- только или запускать его, или нет. А
    дальше цена попыток разбора его протокола/API... которая я не
    представляю чем может окупаться.
    
    А prerendered документ может быть вообще Djvu каким-нибудь, где чисто
    технически нет удобоваримого текста для компьютера. Но я хоты бы не
    компрометирую его, просматривая этот документ. Плюс не нужны гигабайты
    RAM, гигагерцы многоядерных процессоров.
    
    Вы говорите про API. Вы предлагаете делать reverse engineering протокола
    чтобы понять что за API на сервере, чтобы иметь контроль над софтом и,
    возможно, самостоятельно написать свою программу? Жизнь коротка чтобы
    такими вещами заниматься, и я не понимаю в принципе зачем ими
    заниматься. Кто-то специально усложняет жизнь людям, не предоставляя
    документы, а вынуждая быть в online и использовать ПО, потенциально
    имеющее возможность скомпрометировать всё на компьютере -- да на кой
    чёрт мне вообще связываться с этим человеком/ресурсом? У нас есть хоть
    один ресурс который жизненно необходим и мы вынуждены мериться с его
    монопольным положением и проприетарным кодом? Я для себя ни одного не
    смогу назвать. Проприетарный и закрытый код люди не пишут из благих
    побуждений. Это для меня аксиома.
    
    >Иными словами, если на производителей железа и веб-разработчиков
    >надавить в виде массого жёсткого непринятия любого несвободного ПО, то
    >они весь свой код просто спрячут от нас — firmware внутрь железки, а js
    >на server-side.
    
    Я возможно как-то не так понимаю firmware, но для меня это просто
    прошивка загружаемая в память внутрь железки. Или вы про firmware
    которые на CPU работают? Такие я вообще не рассматриваю -- сразу нет, до
    свидания таким решениям. Просто будет ли firmware сделана в виде
    транзисторов/gate-ов, будет ли она на флешке внутри устройства
    загружаться в RAM этого устройства, будет ли она загружаться извне --
    грубо говоря, одна фигня, ведь это просто местоположение хранилища этой
    firmware, не более.
    
    >А пока у нас есть это несвободное ПО — это ведь хорошо,
    
    Дальше нам говорить не о чем по этой теме, с такой позицией :-)
    В смысле у нас *кардинально* разные взгляды. Holywar тема.
    У меня реально простая позиция касательно софта/форматов. Несвободный,
    требует проприетарного ПО, закрытые спецификации -- идёт нафиг, точка.
    Человек мне отправляет RAR -- я ему пишу не мог бы он что-то
    свободное/открытое использовать. Отказывается? Значит ему важнее чтобы я
    уважил какого-то проприетарщика, чем иметь со мной дело. Его право. Как
    и моё право не иметь дело с ним. Я совершенно не значимый человек, не
    большая шишка, поэтому, в общем случае, людям плевать должно быть буду я
    с ним сотрудничать или нет. Но я не припомню случаев когда люди
    не шли бы навстречу, после объяснения проблемы, и не конвертировали
    что-то в PDF/ZIP/DXF. Я же уж прошу людей конвертировать MP3. Но я
    безусловно понимаю что когда пойдёт речь о совсем специфичных форматах
    (Photoshop PSD, проекты всяких digital audio workstation-ов хотя бы), то
    там уже так просто ничего не выйдет.
    
    >значит когда-нибудь кто-то сможет его изучить и переписать.
    
    Я отвечу на это только тем, что это если кому-то нечем заняться, у кого
    неимоверно много времени и упорства. А по нормальному, нужно просто
    брать и писать свободное решение, а не копошиться в том, что сунули нам
    люди явно не из благих побуждений. Столлман то сказал что задолбали со
    своей проприетарщиной и написал (с кучей, конечно же, других
    разработчиков и компаний) GNU.
    
    комментарий 12:
    From: Sergey Matveev
    Date: 2020-09-24 08:31:02Z
    
    *** kmeaw [2020-09-24 08:58]:
    >Немного оффтопика: а можно ли сделать так, чтобы комментарии на все
    >посты, на которые я написал комментарий, приходили в почту с "Reply-To:
    >comment@blog.stargrave.org", а у Subject отрезались префиксы типа
    >"Re[4]: "?
    
    У меня отрезается просто "Re: ": http://git.stargrave.org/cgit.cgi/sgblog.git/tree/cmd/sgblog-comment-add/main.go#n119
    Ok, это не сложно подправить чтобы оно ело и ваш формат. На выходных сделаю.
    А вот присылать почту на ваши ответы проблематично, так как у меня
    полностью всё хранится в git-репозитории, публично доступном.
    
    Чтобы вам прислать письмо, нужно сохранить знание о вашем email (сейчас
    оно отрезается, чтобы не палить email-ы людей всему свету). Сохранять в
    этом же git-е? Не хорошо из-за privacy.
    
    Иметь отдельную БД для этого хранения -- ну уже теряется вся красота
    простоты SGBlog-а.
    
    Сохранять это в виде зашифрованной строчки, а ключ хранить в
    конфигурации, публично недоступной -- вариант, простой. Пока не могу
    придумать вескую причину почему бы так не сделать, хотя и всё равно не
    очень нравится она (люди в git-е будут видеть нечто для них не
    интересное).
    
    Конкретно *мои* ответы я могу присылать людям на почту, ибо лично я то
    просто настроенным Postfix-ом получаю копию приходящих писем на comment@
    и все комментарии вижу сразу в почтовом клиенте, с настоящим From: полем.
    Но я при ответе честно оставляю To: comment@, чтобы быть максимально на
    равных с остальными "участниками" блога.
    
    Пока что-то идей кроме зашифрованного хранения в email-а не вижу. На
    выходных тоже приделаю. Раньше меня уже спрашивали о такой возможности,
    но про шифрование мне что-то в голову идея вроде не приходила. А иметь
    отдельную БД/хранилку -- не, не хочу, хочу pure Git. С отдельной БД
    может каждый блог сделать :-)
    
    комментарий 13:
    From: kmeaw
    Date: 2020-09-24 09:56:49Z
    
    > firmware "скачивается" один раз. Их не много.
    
    Последнее время есть обратная тенденция. Например, на многих современных
    десктопных материнских платах и даже ноутбуках BIOS умеет обновлять сам
    себя по сети. Пока что по запросу пользователя, но когда-то и Windows
    без спроса не перезагружала компьютер после внезапного обновления.
    
    > У вас, как мне показалась, позиция такая: раз у нас всё равно толика
    > проприетарщины закрытой есть, то давайте вообще любую разрешать и
    > позволять.
    
    Не совсем так. Раз пропретарщина всё равно есть, и мы не стараемся
    максимально её изжить со всего компьютера, но при этом заявляем, что мы
    "за СПО", то этому должно быть какое-то рациональное объяснение. Для
    связки железа и firmware оно довольно понятное — считаем их
    программно-аппаратным комплексом; раз уж у закрытого железа есть
    некоторая степень доверия, то почему бы не доверять и софту, которое
    идёт с ним "в довесок" (софт может делать меньше скрытых гадостей, чем
    железо, и этот софт поставляется нам тем же производителем). Раз нет
    простого способа избавится от закрытого ПО, то давайте его хотя бы
    компартментализировать, прятать в условную "коробочку" с понятными
    границами, и всей этой коробочке одинаково (не) доверять.
    
    Сайт же представляет собой пачку HTML, CSS, JS, картинок и прочих
    ресурсов. Все они так или иначе исполняются на моём компьютере. Просто
    они записаны не в виде инструкций процессора x86, а виде инструкций
    некоторых абстрактных машин: "нарисуй большую букву A справа", "для
    каждой картинки сделай отступ в 10px". JS в этом плане не сильно
    отличается от HTML, CSS и картинок. На мной взгляд, разница лишь в том,
    что блокируя HTML я вообще ничего не смогу прочитать, блокируя CSS всё
    будет некрасиво, а блокируя 90% JS сайт всё ещё выглядит для меня
    неотличимым от состояния до блокировок.
    
    > firmware не запускается на нашем CPU, на нашем центральном процессоре
    
    Бывают разные варианты. Например, платы расширения (ISA/PCI/PCIe) часто
    содержат на борту микросхему, которая хранит option rom — небольшую
    программу, которая раньше отображалась в память и запускалась системным
    BIOS во время процедуры ROM scan, а сейчас они умеют ещё и во
    внутренности UEFI залезать, свои драйвера и даже runtime-сервисы,
    работающие во время запущенной ОС устанавливать. Так почти всегда делают
    видеокарты (VGA BIOS), сетевые карты (Boot ROM) и дисковые контроллеры
    (int13h, утилиты для настройки RAID во время загрузки).
    
    > мало кто будет рисковать встраивая malware в firmware сетевухи, ибо
    > можно потерять бизнес, а JS только и делает что используется в Web не
    > для пользовательских нужд.  Репутацией он уже отличается сильно.
    
    Тут я соглашусь. Но чем больше компьютеров и пользователей работает в
    режиме почти 100% online, тем скорее наступит момент, что обновления
    firmware будут пушится производителем без спроса. Прямо как с Windows 10
    сейчас.
    
    > Вот именно пускай, как вы и описали, и делают. Нужно что-то там
    > считать по access.log -- считайте, но не заставляйте меня запускать
    > проприетарный код.
    
    Но ведь это уменьшает мою свободу. Если раньше я мог хоть что-то
    заблокировать, и не передавать условному Гуглу информацию о факте
    посещения мной какой-то страницы, то если все начнут стримить в Гугл
    access.log, я больше не смогу так делать.
    
    > Тут кардинально мы расходимся. С prerendered решением я использую
    > Интернет чтобы получить *документ*. Возможно неудобоваримый, но просто
    > документ который я могу посмотреть и доверять что он не поломает мне
    > ничего и не скомпрометирует и не заставит мой компьютер сливать 200
    > компаниям факт его просмотра и его я могу сохранить на жёсткий диск и
    > читать без Интернета. С API -- ничего не могу.
    
    Это техническая проблема, которую можно решить локально. Например, можно
    научить браузер сохранять не то, что он скачал по http, а то, что он
    нарисовал на экране. Даже сейчас я могу нажать print и сохранить
    документ в ps или pdf. Кажется, сделать примерно то же самое в html+css
    (и, возможно, одобренный мной js) будет не слишком сложно.
    
    > Допускать абсолютно непойми какому коду -- не могу, не собираюсь, даже
    > не понимаю зачем этичному человеку могло бы понадобится из благих
    > намерений мне отправлять закрытый кусок кода (да, я тут регулярно
    > мешаю понятия проприетарного и закрытого, что не корректно). Не
    > понимаю какой контроль может быть над закрытым кодом -- только или
    > запускать его, или нет.
    
    Но ведь подключая компьютер к сети, вы делаете ровно это. Представьте,
    что сетевые пакеты — это код, который управляет вашим компьютером:
    "отправь пакет ICMP reply с таким-то payload'ом на такой-то адрес",
    "расскажи мне, открыт ли порт 22/tcp", "запустить правило обработки
    входящей почты" и так далее. Просто эти "инструкции" ещё более
    высокоуровневые, чем машинный код, и, возможно, ещё более
    высокоуровневые, чем HTML, CSS и JS. И с той стороны, что отправляет эти
    пакеты, может оказаться компьютер с несвободным ПО.
    
    А если в софте есть ошибки, то рано или поздно прилетит инструкця
    "загрузи вот этот блоб в память и запусти его".
    
    > Вы предлагаете делать reverse engineering протокола чтобы понять что
    > за API на сервере, чтобы иметь контроль над софтом и, возможно,
    > самостоятельно написать свою программу? Жизнь коротка чтобы такими
    > вещами заниматься, и я не понимаю в принципе зачем ими заниматься.
    
    Нет, конечно же. Я говорю лишь о том, что это в принципе возможно.
    Значит, есть шанс, что найдётся хакер, которому будет прикольно в этом
    разобраться, а затем, может быть, он научит остальных, как повторить его
    опыт — где-нибудь в wiki описание расширит, статью напишет или даже
    сделает готовую для использования неспециалистом программу.
    
    > Кто-то специально усложняет жизнь людям, не предоставляя
    > документы, а вынуждая быть в online и использовать ПО, потенциально
    > имеющее возможность скомпрометировать всё на компьютере -- да на кой
    > чёрт мне вообще связываться с этим человеком/ресурсом?
    
    Не думаю, что тут есть злой умысел. Это просто естественный способ
    разделять обязанности. Теперь у компаний, которые занимаются разработкой
    веб-приложения (например, какого-нибудь сайта для бронирования комнат в
    отеле) есть два подразделения — backend и frontend. И вместо одного
    монолитного куска они могут разрабатывать два продукта, которые
    взаимодействуют через придуманный ими (а ещё лучше — подсмотренный у
    кого-то ещё или стандартный для этой отрасли) API. А потом компания
    захочет ещё и мобильное приложение сделать, и тоже воспользуется
    собственным API, что вынужденно сделает его более стабльным — трём
    отделам договориться между собой сложнее, чем одному самим с собой. А
    всё это даст шанс разработчику свободной программы отреверсить их код и
    сделать ещё один клиент к этому API.
    
    > У нас есть хоть один ресурс который жизненно необходим и мы вынуждены
    > мериться с его монопольным положением и проприетарным кодом?
    
    Жить можно и без компьютера. Но для себя я сходу могу назвать Госуслуги,
    mos.ru и nalog.ru - мне проще дома нажимать на кнопки, чем ходить с
    бумажками по гос. организациям. Без проприетарного веб-интерфейса моего
    банк-клиента жизнь сильно бы усложнилась - удобно нажимать на кнопки,
    чтобы платить за коммунатльные услуги, например. Я пытался написать
    свободный, но у них явно стоит какой-то WAF, который воспринимает мои
    попытки его исследовать, как атаку, и я перестал так делать.
    
    > Я возможно как-то не так понимаю firmware, но для меня это просто
    > прошивка загружаемая в память внутрь железки. Или вы про firmware
    > которые на CPU работают? Такие я вообще не рассматриваю -- сразу нет, до
    > свидания таким решениям.
    
    Про это - чуть выше. Но самая большая firmware, которая на CPU работает
    - это системный BIOS. А часть этого BIOS вообще в SMM работает, скрывая
    своё наличие от OS.
    
    > Дальше нам говорить не о чем по этой теме, с такой позицией :-)
    
    Я не ставлю своей целью кого-либо переубедить. Мне просто искренне
    интересно, чем плох подход, когда я соглашаюсь запускать несвободное ПО
    на своём компьютере, но априорно оказываю ему гораздо меньшее доверие,
    запирая его в различных песочницах, которые ограничены в правах.
    
    Пока что я услышал только аргумент про то, что несвободное ПО берёт мой
    компьютер под контроль. А поскольку в железе и софте для изоляции бывают
    ошибки, то мои попытки ограничить его могут провалиться.
    
    Надеюсь, я вас ничем не обидел.
    
    > Я отвечу на это только тем, что это если кому-то нечем заняться, у
    > кого неимоверно много времени и упорства. А по нормальному, нужно
    > просто брать и писать свободное решение, а не копошиться в том, что
    > сунули нам люди явно не из благих побуждений.
    
    Мой опыт подсказывает, что прежде, чем "просто брать и писать свободное
    решение", нужно изучить то, как работает железо/протокол/backend/что-то
    ещё, с чем это решение будет работать. А если нет хорошей документации,
    то наличие несвободного ПО лучше, чем вообще ничего. В последнем случае
    остаётся только реверсить железо — это сложнее, и выше шанс что-то
    необратимо испортить.
    
    комментарий 14:
    From: Sergey Matveev
    Date: 2020-09-24 11:10:25Z
    
    *** kmeaw [2020-09-24 12:53]:
    >Последнее время есть обратная тенденция. Например, на многих современных
    >десктопных материнских платах и даже ноутбуках BIOS умеет обновлять сам
    >себя по сети.
    
    Если это нельзя отключить, то такое я бы помещал только за firewall-ы
    запрещающие подобное. В противном случае -- менять. Это malware, поэтому
    зачем с ним мириться?
    
    >Не совсем так. Раз пропретарщина всё равно есть, и мы не стараемся
    >максимально её изжить со всего компьютера
    
    Почему не стараемся? По мере сил, лично я стараюсь.
    
    >для связки железа и firmware оно довольно понятное — считаем их
    >программно-аппаратным комплексом; раз уж у закрытого железа есть
    >некоторая степень доверия, то почему бы не доверять и софту, которое
    >идёт с ним "в довесок"
    
    Ещё раз, повторю своё отношение: firmware который запускается внутри
    устройства (вне CPU) -- оно не так напрягает. Firmware запускаемый на
    CPU: я такое себе не разрешаю. Это не вариант который можно рассматривать.
    
    >Раз нет
    >простого способа избавится от закрытого ПО, то давайте его хотя бы
    >компартментализировать, прятать в условную "коробочку" с понятными
    >границами, и всей этой коробочке одинаково (не) доверять.
    
    Покупка чего-то требующего закрытого ПО -- это поддержка производителя,
    и это только всё усугубляет. Те кто требуют использование закрытого ПО
    (на CPU) -- бойкотировать и не иметь дел.
    
    >Сайт же представляет собой пачку HTML, CSS, JS, картинок и прочих
    >ресурсов. Все они так или иначе исполняются на моём компьютере.
    
    JS тут лишнее, а всё остальное не является чем-то, что может выполнять
    произвольные вещи на компьютере. HTML не является тьюринг полным. JS же
    это полноценный код, который, на данный момент в x86-процессорах, никак
    не изолировать от всего остального. JS не нужен для задач Web-а (в моём
    понимании Web-а: распределённой системы документов, а не современного
    Web-а: приложений). Отличие только в том, может ли то или иное выполнять
    произвольные программы (тьюринг-полные). Если могут, то возникает
    вопрос: что это программа собирается делать на моём компьютере? Если
    ответа нет (она закрытая), то идёт лесом, ибо значит точно ничего
    благого. Пока приходится мериться с PostScript и шрифтами (вроде в
    каких-то форматах шрифтов же тоже полноценные языки?), ибо пока ещё не
    замечено что их используют для зловреда. JS это в 99% случаев зловред.
    
    >Бывают разные варианты. Например, платы расширения (ISA/PCI/PCIe) часто
    >содержат на борту микросхему, которая хранит option rom — небольшую
    >программу, которая раньше отображалась в память и запускалась системным
    >BIOS во время процедуры ROM scan, а сейчас они умеют ещё и во
    >внутренности UEFI залезать, свои драйвера и даже runtime-сервисы,
    >работающие во время запущенной ОС устанавливать. Так почти всегда делают
    >видеокарты (VGA BIOS), сетевые карты (Boot ROM) и дисковые контроллеры
    >(int13h, утилиты для настройки RAID во время загрузки).
    
    Да, и это всё печально. Возможно массово доступные компьютеры будут
    непригодны для использования просто как АЛУ+память, без backdoor-ов и
    зловреда. Но я уверен что будут альтернативы, пускай в разы (порядок?)
    более дорогие, но без всего этого. Ведь доступность и развитие средств
    производства тоже же растёт.
    
    >Тут я соглашусь. Но чем больше компьютеров и пользователей работает в
    >режиме почти 100% online, тем скорее наступит момент, что обновления
    >firmware будут пушится производителем без спроса. Прямо как с Windows 10
    >сейчас.
    
    Мир Windows меня мало волнует. Это абсолютно неприемлемый вариант. И на
    людей согласных такое использовать мне в общем-то тоже плевать, раз
    делают такой выбор. Если что-то требует обязательного подключения к
    Интернету -- идёт лесом. Если я не могу что-то скопировать к себе в
    offline -- идёт лесом. Речь конечно не про информацию типа новостей, а
    про софт, документацию к нему, и т.д..
    
    >Но ведь это уменьшает мою свободу. Если раньше я мог хоть что-то
    >заблокировать, и не передавать условному Гуглу информацию о факте
    >посещения мной какой-то страницы, то если все начнут стримить в Гугл
    >access.log, я больше не смогу так делать.
    
    Это вам и сейчас не подконтрольно. Откуда вы знаете не стримят ли сейчас
    ваш access.log? Такие вещи в любом случае нам не подконтрольны.
    
    >Это техническая проблема, которую можно решить локально. Например, можно
    >научить браузер сохранять не то, что он скачал по http, а то, что он
    >нарисовал на экране. Даже сейчас я могу нажать print и сохранить
    >документ в ps или pdf. Кажется, сделать примерно то же самое в html+css
    >(и, возможно, одобренный мной js) будет не слишком сложно.
    
    Да, это было бы хоть чем-то. Но... такого решения сейчас нет и никто его
    не напишет. Писать броузеры (и для них что-то серьёзное) могут 1.5
    компании (Google и Firefox, насколько знаю). И преобладающее большинство
    спокойно живёт в мире, где их компьютером могут управлять извне (JS). Я
    просто не понимаю зачем придумывать какие-то извращения технические? В
    чём проблема использовать HTML, как раньше? Ресурс отказывается? Идёт
    нафиг! Вы опять придумываете решения и костыли для того чтобы играть по
    правилам корпораций и компаний которые из года в год только придумывают
    нам (пользователям) ограничения и усложнения. Может нужно перестать их
    использовать, перестать поддерживать, а не думать как бы с ними ужиться
    поудобнее?
    
    >Но ведь подключая компьютер к сети, вы делаете ровно это. Представьте,
    >что сетевые пакеты — это код, который управляет вашим компьютером:
    >"отправь пакет ICMP reply с таким-то payload'ом на такой-то адрес",
    >"расскажи мне, открыт ли порт 22/tcp", "запустить правило обработки
    >входящей почты" и так далее. Просто эти "инструкции" ещё более
    >высокоуровневые, чем машинный код, и, возможно, ещё более
    >высокоуровневые, чем HTML, CSS и JS. И с той стороны, что отправляет эти
    >пакеты, может оказаться компьютер с несвободным ПО.
    
    Не понимаю как это можно приравнивать к управлению. Для управления нужен
    тьюринг-полный язык. А всё что вы назвали это просто некие события.
    Крайне ограниченные. Для меня, между ними нет ничего общего.
    
    >А если в софте есть ошибки, то рано или поздно прилетит инструкця
    >"загрузи вот этот блоб в память и запусти его".
    
    Да, об этом всегда надо помнить. Но пока сетевые карты на замечены за
    этим, мы их пока ещё доверяем. А для серьёзных вещей -- отключаем от
    сетей. Во всём нужна мера.
    
    >Нет, конечно же. Я говорю лишь о том, что это в принципе возможно.
    
    Для меня это точно так же возможно как и подбор 128-бит ключа
    шифрования. В принципе оно возможно. На практике -- дорого. В принципе
    я мог бы построить себе компьютер сам. Или собрать машину. Или построить
    дом. Только это так дорого, что какой смысл рассматривать?
    
    >Значит, есть шанс, что найдётся хакер, которому будет прикольно в этом
    >разобраться, а затем, может быть, он научит остальных, как повторить его
    >опыт — где-нибудь в wiki описание расширит, статью напишет или даже
    >сделает готовую для использования неспециалистом программу.
    
    Вероятность есть, ненулевая. Но по моему это абсолютно неразумно и
    нерационально и поэтому вряд ли кто этим будет заниматься. Проще делать
    вещи с нуля, чем пытаться в них разобраться. Речь конечно же не про
    несколько килобайт ассемблерного кода, где ещё можно разобраться за
    вменяемые сроки, а про огромные прошивки. Плюс тут ещё проблема в том,
    что пока ты разберёшься в прошивке, то железо для неё уже перестанут
    производить и эти труды будут полезны только для уже устаревших,
    вымирающих железок.
    
    >Не думаю, что тут есть злой умысел. Это просто естественный способ
    >разделять обязанности. Теперь у компаний, которые занимаются разработкой
    >веб-приложения (например, какого-нибудь сайта для бронирования комнат в
    >отеле) есть два подразделения — backend и frontend. И вместо одного
    >монолитного куска они могут разрабатывать два продукта, которые
    >взаимодействуют через придуманный ими (а ещё лучше — подсмотренный у
    >кого-то ещё или стандартный для этой отрасли) API. А потом компания
    >захочет ещё и мобильное приложение сделать, и тоже воспользуется
    >собственным API, что вынужденно сделает его более стабльным — трём
    >отделам договориться между собой сложнее, чем одному самим с собой. А
    >всё это даст шанс разработчику свободной программы отреверсить их код и
    >сделать ещё один клиент к этому API.
    
    Я знаю и понимаю как устроена разработка подобных вещей :-). Что из
    всего этого обязывает делать закрытый/проприетарный код или заставлять
    его скачивать каждый раз? Хотят писать на JS? Ну так пускай сделают
    изредка обновляемый tarball/whatever (грубо говоря), который надо как
    приложение поставить в систему. Это может быть свободным ПО, оно может
    писаться на чём хочешь, оно будет использовать API, никто не будет
    тянуть код для исполнения извне. Текущая экосистема не мешает делать
    подобное. Но так не делают. Благих целей, почему не делают -- нет.
    
    >Жить можно и без компьютера. Но для себя я сходу могу назвать Госуслуги,
    >mos.ru и nalog.ru - мне проще дома нажимать на кнопки, чем ходить с
    >бумажками по гос. организациям.
    
    Ну а я пойду пешком в эти организации. Это сложнее, не спорю, но это
    редко нужно. Но позволять запускать их сраный (а я видел как это всё
    безбожно медленно работает!) код я не буду.
    
    Безопасность и удобство использования -- всегда на разных чашах весов.
    
    Мне к сожалению насильно завели на работе банковскую карту. С неё я
    оплачиваю ЖКХ. Я мог бы пойти штатно к операционистке в банке, но банк и
    так и так в любом случае будет знать что именно я оплатил именно вот
    такой счёт. Поэтому банковская карта в банкомате тут хуже не сделает
    ничего, но с ней удобно. Для такого использования я не вижу побочных
    эффектов. А вот Интернет-банк, насколько знаю, любой потребует наличия
    телефона и его привязки в этом банке. Побочный эффект от этого: мне
    будет звонить/приходить спам. Это НАСТОЛЬКО меня бесит и раздражает, что
    я уж буду (и хожу) ходить пешком до банка, стоять в очереди и оплачивать
    банковским переводом, чем терпеть спам. Если бы не спамили, то другой
    разговор. Но... почти нет компаний которые бы уважали людей. Простых
    людей. Если бы я был большим боссом, то у меня бы была помощница которая
    бы принимала на себя весь этот геморрой. Но я простой смертный и на
    подобное у меня средств нет.
    
    >Про это - чуть выше. Но самая большая firmware, которая на CPU работает
    >- это системный BIOS. А часть этого BIOS вообще в SMM работает, скрывая
    >своё наличие от OS.
    
    Да, это всё паршиво. Но, BIOS, грубо говоря, может никогда и не
    обновляться в течении жизни железа, и я готов рисковать доверяя ему в
    какой-то мере. Доверяя тому, что если будет плохо вести, то это сильный
    риск для репутации intel, ведь будет же громкой новостью.
    
    >Я не ставлю своей целью кого-либо переубедить. Мне просто искренне
    >интересно, чем плох подход, когда я соглашаюсь запускать несвободное ПО
    >на своём компьютере, но априорно оказываю ему гораздо меньшее доверие,
    >запирая его в различных песочницах, которые ограничены в правах.
    
    Я тоже не пытаюсь переубедить, но... это вопрос этики. Почему
    разработчик скрывает от меня код? Почему, показав его, не показывает мне
    что он собирается делать на моём компьютере, на котором ещё куча других
    программ, моих данных, ключей, прочего? Почему он не даёт
    обновить/поменять этот код (TiVo)? И другая масса вопросов. Я прекрасно
    знаю ответы на все эти вопросы и все они связаны с жадностью (деньги!
    деньги! деньги!), желанием держать пользователя в узде (снова деньги!),
    и масса подобных причин. ВСЕ они не этичны. Обо всём этом говорит и
    рассказывает движение свободного ПО.
    
    Для меня, думы о проприетарном ПО и его запуске сродни думам о
    проституции. Кто не видит ничего зазорного или плохого в ней. Кто-то не
    видит ничего плохого в вполне себе запросто хорошо оплачиваемой
    "профессии". Кто-то считает (и таких тьма!) нормальным ложиться под
    начальников, ради должностей, премий и других плюшек. Хотел бы
    продолжить дальше, но примеры вопросов морали и нравственности можно
    приводить бесконечно. И всё это нисколько не объясняется чем-то
    рациональным и не имеет объективных мер и варьируется вообще от общества
    к обществу, между разными культурами, и т.д..
    
    Вы вот не прочь запирать в песочницы, ограничивать, обезопашивать себя
    от чего-то потенциально опасного. А я предпочту, по возможности, просто
    не тащить это опасное к себе. У каждого свои приоритеты, меры, вкусы,
    ценности. Ваш подход имеет право на жизнь, имеет массу плюсов, какие-то
    минусы. Мне мой подход и отношение приносит другие плюсы/минусы.
    
    Вот что действительно исчезло, чего я бы мог лишиться из-за своего
    JS-forbidden подхода, так это сайтов знакомств :-). Не, я на это дело
    всё забил, но когда-то пытался знакомиться на них. И тогда, как минимум
    три из используемых, работали без JS-а, pure HTML/CSS+картинки. А сейчас
    такого не осталось. И если бы я захотел искать себе знакомств, то тут
    проблема, ибо доступных без проприетарного ПО ресурсов для этого нет.
    
    >Пока что я услышал только аргумент про то, что несвободное ПО берёт мой
    >компьютер под контроль. А поскольку в железе и софте для изоляции бывают
    >ошибки, то мои попытки ограничить его могут провалиться.
    
    Да, это основной аргумент.
    
    >Надеюсь, я вас ничем не обидел.
    
    Увольте, но это я должен переживать как бы я вас не обидел :-). Обычно в
    99% случаев это я умудряюсь наговорить людям не шибко приятного, хотя
    искренне я крайне мало кого хочу задеть или обидеть, но слишком поздно
    понимаю что сказал лишнего. Разные мнения всегда интересно услышать.
    Пускай они и принципиально отличаются. Тем более мнения людей которые
    могут и умеют что-то делать и делают это, стремятся к какой-то цели,
    пускай в эту цель лично я бы и не верил.
    
    >Мой опыт подсказывает, что прежде, чем "просто брать и писать свободное
    >решение", нужно изучить то, как работает железо/протокол/backend/что-то
    >ещё, с чем это решение будет работать. А если нет хорошей документации,
    >то наличие несвободного ПО лучше, чем вообще ничего. В последнем случае
    >остаётся только реверсить железо — это сложнее, и выше шанс что-то
    >необратимо испортить.
    
    Другой вариант: попробовать договориться производителя сделать
    нормальную документацию. Или посмотреть на другого производителя. Или
    самостоятельно что-то сделать (слышал что Эрик Реймонд начал свои
    собственные ИБП делать, ибо все компании его не устраивают). Само собой
    понимаю что далеко не всё из этого может получиться. Незабываемая
    "nVidia fuck you" это подтверждает. Но монополисты всегда становятся
    козлами с точки зрения этики, поэтому с ними и пытаются бороться. А
    изучать несвободное ПО для железки -- это совершенно fallback крайний
    прекрайний вариант, самый тяжёлый из-за нехороших компаний, ещё и
    унижающий достоинство тех кто будет им заниматься (копаться в чужом,
    специально закрытом от тебя же, изделии).
    
    комментарий 15:
    From: David Rabkin
    Date: 2020-09-24 15:36:26Z
    
    >Точнее так: на работе, в виртуальных машинах, я запускаю некоторые
    >несвободные вещи, но написанные коллегами. Технически мне дают закрытое
    >ПО, но я ему доверяю. Но только потому что это доверяемые коллеги.
    
    Ха-ха, а если чел в Майкрософте работает и тоже доверяет коллегам?
    
    >пакеты не использую
    
    Почему? Не доверяешь?
    
    >Недоверяемый потому что точно
    >известно что внутри есть бяка. А вот то, что в Байкале всё чисто, я
    >поверю гораздо охотнее.
    
    Вот какая тут логика? Типа, у нас разведчики, а у них шпионы? А то,
    что Интелом пользуются миллиарды десятилетиями, привлекая миллионы для
    исследования и инспектирования. И компания частная, и конкуренция
    огромная, и рынок общий. А российское сделано государством, без
    конкуренции, с откатами и распилами. Как бы, доверия в этом смысле
    больше Интелу, чем Байкалу.
    
    >Linux e2k 4.19.0-1.8-e8c #1 SMP Mon Jun 29 11:04:09 GMT 2020 e2k
    
    OpenZFS на Линуксе! Только мы с тобой говорили в соседней ветке.
    
    >которые как минимум third-party и блокируют
    
    Ну, конечно, у меня весь дом фильтруется до раутера этим:
    https://pi-hole.net/
    
    >Пока что-то идей кроме зашифрованного хранения в email-а не вижу.
    
    Не надо мейлы хранить. И посылать не надо. Подписка на комментарии
    отлично работает, все прилетает в RSS ридер.
    
    >Ну так пускай сделают
    >изредка обновляемый tarball/whatever (грубо говоря), который надо как
    >приложение поставить в систему.
    
    Это на Adobe Flash похоже. Проблем с ним было…
    
    >Да, это всё паршиво. Но, BIOS, грубо говоря, может никогда и не
    >обновляться в течении жизни железа, и я готов рисковать доверяя ему в
    >какой-то мере. Доверяя тому, что если будет плохо вести, то это сильный
    >риск для репутации intel, ведь будет же громкой новостью.
    
    Да и была уже такая новость, там не совсем про бекдор, но картинка
    вырисовывается:
    https://www.cs.vu.nl/~ast/intel/
    
    Отличный тред у тебя с kmeaw получился!
    
    комментарий 16:
    From: Sergey Matveev
    Date: 2020-09-24 15:59:10Z
    
    *** David Rabkin [2020-09-24 18:33]:
    >Ха-ха, а если чел в Майкрософте работает и тоже доверяет коллегам?
    
    Его выбор :-)
    У нас в стране вообще то была же лаборатория исследования кодов
    Microsoft и Microsoft эти самые коды от Windows предоставляла. Доверять
    для некоторых применений Windows-у и ФСБ после этого может, после анализа.
    Как минимум знают где что не так или как это обойти. Но у простых
    смертных таких знаний нет.
    
    Я то не доверяю корпорациям не потому что я плохой :-). А потому что у
    них репутация отвратительна и очернённая неоднократно. Не в их интересах
    делать нам хорошо. И не в интересах США, знающая что их софт стоит в
    преобладающем количестве компьютеров/смартфонов и они легко могут
    заставить компании делать что им уместно.
    
    >>пакеты не использую
    >Почему? Не доверяешь?
    
    Да, как то спокойнее когда сам собрал. Ведь build reproducability в
    FreeBSD нет. Ну и просто лишний раз точно убедиться что оно
    действительно собирается. Ведь если не соберётся и не будет понятно
    почему -- то и вопрос: как это собрали для пакетов. Просто лишний раз
    перебздеть. Ну и удобно тем, что исходники под рукой сразу есть (если
    надо будет что-то посмотреть в запускаемом софте) и не надо помнить
    чтобы их отдельно скачивать. И удобно тем, что если меня отрубит от
    Интернета, то я полностью смогу пересобрать всю свою систему.
    
    >Вот какая тут логика? Типа, у нас разведчики, а у них шпионы?
    
    Нет, просто для себя они могут заставить Intel делать non-backdoored
    решения. А у нас я думаю что слишком затратно делать разные процессоры
    (с backdoor и без) для госструктур и для смертных. Пока у меня
    уверенность что один и тот же процессор используется и в МЦСТ машине
    дома и в той, что где-то в серверных госструктур. Себе вредить не будут.
    А Intel слишком огромна и мощна. Плюс кто гарантирует что процессоры
    попадающие к нам в РФ идентичны тем что в США? Была же история что на
    таможне в Cisco оборудование что-то там меняли/вставляли (подробности не
    помню). А в Intel достаточно программно что-то перепрошивать/менять.
    Наши процессоры только в самом начале пути -- ещё рано думать о
    встраивании закладок, ибо ими только свои же пока и будут пользоваться.
    
    >что Интелом пользуются миллиарды десятилетиями, привлекая миллионы для
    >исследования и инспектирования. И компания частная, и конкуренция
    >огромная, и рынок общий. А российское сделано государством, без
    >конкуренции, с откатами и распилами. Как бы, доверия в этом смысле
    >больше Интелу, чем Байкалу.
    
    Причём тут откаты и распилы не понимаю (ага, за рубежом их нет, ну ну,
    там рай). А Intel, как и AMD, подчиняется (вынуждено, никуда не деться)
    правительству США. Странно что у тебя есть доверие к Intel-у, учитывая
    что потраченные миллионы на его инспектирование (в чём у меня сомнения,
    если честно, что именно миллионы) показали его ужасную безопасность
    (дырявость Meltdown/Spectre/и т.д.) и наличие Minix-а внутри.
    
    >OpenZFS на Линуксе! Только мы с тобой говорили в соседней ветке.
    
    Ага. Более того: на Эльбрусе!
    
    >Не надо мейлы хранить. И посылать не надо. Подписка на комментарии
    >отлично работает, все прилетает в RSS ридер.
    
    А я согласен что отвечать то неудобно. Точнее мне то одному удобно, ибо
    мне в виде почты сразу прилетает, а всем остальным нет, ибо получить
    комментарии можно или только через Atom или через git, в котором ещё и
    парсить надо эти комментарии. Я добавлю галочку: присылать/не присылать
    ответы и сохранять её вместе с email-ом зашифровано. Atom никуда не
    денется.
    
    >Это на Adobe Flash похоже. Проблем с ним было…
    
    И Java в броузерах была с плагинами. Как бы... ничего в мире не
    меняется, всё ходит по кругу :-). Только сейчас хуже уже некуда (при
    каждом коннекте, потенциально, скачивая новый код).
    Проблема с Adobe Flash в том что он -- говно проприетарное и
    некачественное. Но раз Adobe монополисты были на этом поприще, то чего
    им беспокоиться? А Java реализации свободные есть.
    
    >Да и была уже такая новость, там не совсем про бекдор, но картинка
    >вырисовывается:
    >https://www.cs.vu.nl/~ast/intel/
    
    Ну это собственно самая громкая (как мне кажется) новость о том что там
    реально полноценная UNIX-like система! Со всеми возможными свистоперделками.
    
    >Отличный тред у тебя с kmeaw получился!
    
    Объёмом как моя писанина за целый год :-)
    
    комментарий 17:
    From: Sergey Matveev
    Date: 2020-09-25 14:58:00Z
    
    Думал я вчера над отправкой почты на отвечаемые комментарии. Но куча
    проблем возникает:
    
    * сейчас sgblog либо принимает данные (почту), либо отдаёт их по запросу
      (poll по Atom/HTTP/Gopher)
    * отправка почты это уже будет push действие, которое не должно
      совершаться если человек его не просил
    * если сохранять знание о почтовых адреса, фактически подписывать
      человека на определённый трэд, то должна быть возможно и "подписать"
      его на все события, на все появляющиеся записи
    * почта, как мы знаем, легко подделывается (from адреса), поэтому нужен
      хотя бы один round-trip подтверждающий желание что-то сделать именно с
      заданным почтовым адресом
    * таком образом, нам нужен state (уже очевидно вне git-а), который бы
      хранил желания "подписаться", какие-то токены для проверки
      подтверждений подписок, их очистка, и тому прочее
    
    Всё это напоминает уже маленькую полноценную систему почтовых рассылок,
    типа Mailman. А это уже точно перебор с сложностью. Для которой проще
    наверное придумывать как бы совместить sgblog c Mailman-ом (с уже
    существующим движком управления подписками).
    
    Так что я всё же воздержусь от такого громоздкого функционала.
    
    комментарий 18:
    From: Sergey Matveev
    Date: 2020-09-26 07:45:18Z
    
    Касательно виртуализации (в контексте безопасности) вот нашёл у себя
    запись с высказыванеим Тео Де Раадта: 08a59558756635594b48628595ba8fb40d4a300e.
    Он не верит что она возможна на практике.
    
    комментарий 19:
    From: kmeaw
    Date: 2020-09-26 08:48:22Z
    
    > Касательно виртуализации (в контексте безопасности) вот нашёл у себя
    > запись с высказыванеим Тео Де Раадта
    
    Скорее всего тут неправильная ссылка. Мне кажется, тут должна быть
    7dcdff84409eec98840f8f3057bc017ddd695593
    
    комментарий 20:
    From: Sergey Matveev
    Date: 2020-09-26 08:50:59Z
    
    *** kmeaw [2020-09-26 11:44]:
    >Скорее всего тут неправильная ссылка.
    
    Пардон, нечаянно перебил буфер обмена :-)