Русский
Русский
English
Статистика
Реклама

Диктатура

О скрытых сетях и анонимности их разработчиков

26.04.2021 14:21:23 | Автор: admin

Тоталитаризм и диктатура имели место в любой исторический промежуток, о котором знает современная наука. Однако человек склонен к вольномыслию и недовольству всем, что этому препятствует. В наше время обе стороны вопроса по-прежнему актуальны: одни неустанно пытаются запрещать и карать за неугодные высказывания, другие эти высказывания постоянно генерируют.

Чтобы не заострять идеологические углы статьи, опустим рассуждения про возможное ущемление свободы слова, совести и прочего, что вроде бы должно быть свободным. По тем или иным причинам люди нередко хотят остаться неназванными, прибегая для этого к программным средствам анонимизации. В этой статье вы узнаете почему разработчики программ для анонимности в глобальной сети сами должны оставаться terra incognita.

Обольщение Луковичной сети

Самым популярным инструментом анонимности в сети является Tor. Для пользователя, далекого от темы сетей и процесса создания ПО в целом, Tor является ящиком Пандоры и священным Граалем анонимности. Такое мнение внушают многие источники, в том числе сам проект Tor, поддерживаемый главным образом не добровольными донатами, а Министерством обороны и Государственным департаментом США. Надо заметить, что Tor изначально является разработкой силовых ведомств этой страны (с 1995 года). Только в 2006 году для развития сети была создана некоммерческая организация Tor Project, которая по сей день является обложкой Tor-браузера, столь любимого юными искателями анонимности.

У проницательного читателя на этом месте может возникнуть легкий когнитивный диссонанс: Соединенные Штаты Америки, знаменитые по всему миру скандалами о тотальной слежке за населением планеты, разработали и отдали в общее пользование инструмент свободы слова!

К чести всех почитателей надо сказать, что Tor является проектом с открытым исходным кодом, что позволяет программистам по всему миру проверить качество программы и выявить возможные слабые места. Также в 2011 году Tor удостоился премии общественной значимости Фонда свободного программного обеспечения, а в 2012 году награды EFF Pioneer Award.

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

Tor имеет несколько задокументированных случаев сбоя работы. В основном такие новости связаны с атаками извне, а не архитектурными недочетами самого проекта. Большинство инцидентов гуглятся с большим трудом, либо вовсе отсутствуют в поисковой выдаче. Конечно возможная причина кроется в том, что сеть настолько никому не интересна, что о ней не утруждаются писать (вряд ли).

Последним крупным инцидентом с сетью Tor, который был непосредственно связан с уязвимой архитектурой сети, было отключение более половины консенсусных узлов в январе 2021 года, что удивительным образом совпало с беспорядками в Америке. В следствии атаки все внутрисетевые домены .onion v3 были недоступны в течение нескольких часов, т.е. получить доступ к анонимным ресурсам сети было невозможно.

Приведенной информации достаточно, чтобы предположить, что Tor является инструментом свободы слова не вообще, а где-то там, но, когда это где-то там начинается в США, правительство которой держит скрытую сеть под своим крылом, сеть может прекратить выполнять свои функции. Также в интернете можно найти мнение, согласно которому Tor в начале 2000-ых годов был выпущен в общий доступ с основным прицелом на Китай, который сохранял свой социалистический уклон в политике даже после распада СССР некогда главного идеологического врага Штатов.

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

Ситуацию спасет инкогнито

Вторым среди инструментов анонимности является сеть I2P. Меньшая известность обуславливается более высоким порогом вхождения для новичка, а также отсутствием рекламы, спонсированной правительством какой-либо страны. Существуют два независимых клиента сети: Java router и i2pd.

В отличие от Tor, сеть I2P с самого начала разрабатывается сообществом энтузиастов и не аффилирована с правоохранительными органами. Все имеющиеся стартовые узлы I2P, нужные для первого запуска клиента сети, держат энтузиасты (неназванные лица в своем большинстве), оказать давление на которых сложнее, чем на университет, потому что появляется дополнительная задача их поиска. Кроме этого I2P-роутер можно завести вовсе без обращения к стартовым узлам.

Вопросы вызывают решения, принимаемые при разработке Java-роутера, которые упираются в нелогичность и намеренное игнорирование выявленных уязвимостей. Для справки: Java-роутер это популярный клиент сети, разрабатываемый с начала 2000-ых годов (альтернативный роутер i2pd берет начало в 2013 году).

Разработку популярного клиента на протяжении более, чем десяти лет, курирует один человек с никнеймом zzz. Под его контролем находится самый авторитетный ресурс stats.i2p: каталог скрытых сайтов и (бесплатный) регистратор коротких доменных имен в зоне .i2p. В адрес stats.i2p неоднократно высказывались претензии из-за цензуры. Цензура на основном ресурсе анонимной не цензурируемой сети?! Когда в мире пошла волна #BlackLivesMatter, zzz начал еще более агрессивно игнорировать новые и удалять старые ресурсы с правой тематикой. В конечном счете споров сообществом был создан независимый регистратор reg.i2p.

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

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

zzz - главный разработчик I2Pzzz - главный разработчик I2P

Чтобы не увеличивать конспирологический градус статьи, не буду приводить предположения о характере взаимодействия zzz с правоохранителями. Чуткий читатель может сам представить уровень ответственности, которую общественность хочет взвалить на плечи человека, трудящегося над инструментом анонимности. В дело пойдет все: криминал, насилие, извращенцы и тому подобное. Лишь единицы трезво скажут, что подобный инструментарий используется в криминальных целях в меньшинстве случаев, однако позволяет пользователям делиться мнением на любые темы без оглядки на Большого брата.

Разработчик i2pd под никнеймом original в отличие от своего коллеги zzz остается скрытной личностью, и, по его словам, не намерен менять такое положение дел. Он открыт для критики и предложений, активно трудится над альтернативным I2P-роутером и смеется над цензурой. В большей степени он является идейным вдохновителем этого материала и примером для разработчиков схожих проектов: Если кому-то нужен хайп личности, или хоть какая-то медийность, ему не место в разработке средств коммуникации, которые являются уравновешивающей силой против деспотии политических режимов. В свою очередь никакой режим не может предоставить чистое средство борьбы, не предусмотрев собственную защищенность от него.

Оригинальная статья размещена в блоге дата-центра ITSOFT

Подробнее..

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

08.09.2020 20:05:54 | Автор: admin

image


Я программирую 16 лет, и перебрал за это время много технических стеков. Изучать языки весело, в начале они всегда как новенькие игрушки, пока месяце на третьем не появляются первые проблемы.


В языках вечно не хватает чего-то простого лямбда-функций, именованных объединений, кастомных примитивных типов. Я лезу в обсуждения на Stack Overflow, в Github и вижу, как разрабы жалуются им не хватает того же, чего и мне. Но обсуждения почти всегда заканчиваются одинаково: нужная фича не появится, потому что главный дизайнер языка и члены его команды нужной ее не считают.


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


Но сейчас я понимаю это полная чушь.


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


Самая большая оценка задачи, которую я выдал за последние годы 2 месяца. Это была жирная фича, и ровно столько я ее и делал. Параллельно с еще двумя десятками фич поменьше.


Как программист, я не могу сказать: "да, пользователи хотят эту фичу, но лично мне она не нравится поэтому ее не будет". Я не могу как Роб Пайк сказать своим пользователям-программистам, что дженерики, которые все очень хотят, будут в Go 2, а Go 2 будет когда будет. Роб Пайк задумал Go как очень простой язык. Дженерики по его мнению добавляют сложность, которая испортит код.


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


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


Как и любая другая разработка софта, процесс внесения изменений в язык программирования должен быть предельно прост: пожелания пользователей (то есть нас программистов) изучены, задача поставлена, адекватные сроки определены, извольте выполнить в срок.


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


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


Без лямбд, которые позволяют передать фильтер в коллекцию одной строкой, кодовая база наших репозиториев разрослась бы кратно. Когда у тебя кодовая база вдвое больше, чем могла бы быть ты в полном дерьме. Это работает, как снежный ком. Чем больше на проекте необязательного кода, тем сложнее его будет поддерживать а чем сложнее его поддерживать тем быстрее качество его кодовой базы будет ухудшаться. В плохом проекте любое изменение делает его ещё хуже.


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




Люди склонны оправдывать недостатки подменой понятий незнание это сила, свобода это рабство, война это мир, ошибки это верные решения. Когда возможности языка, на котором работают миллионы, зависят от настроения одного создателя в день принятия решения я называют это не философией и визионерством, я называю это диктатурой.


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


Если вы знакомы с работами ныне популярного Гуриева о современных диктатурах, то вы слышали, что "автократы нового формата стремятся выглядеть демократами". Попытки изобразить, что дизайн языка программирования находится в руках "сообщества" не проходят простейшую проверку логикой. Комитеты и форумы посвященные дизайну языка, которые "открыты" для предложений, в действительности служат ширмой для диктатуры основной команды разработки языка. Я для примера посмотрел на список основных контрибьюторов в репозитории KEEP (процесс эволюции и улучшения Kotlin), топ 10 человек там это члены основной команды Kotlin. Сами предложили сами реализовали.


Там где есть диктатура, всегда рождается культ. Программисты на определенном языке всецело и самоотверженно посвящают себя ему. Для этого есть все: ворох литературы, конференции только по этому языку, митапы, телеграм каналы, инстаграм аккаунты, приезды Создателя в ваш город. После речи именитого дизайнера люди спрашивают всякую ерунду, которая гуглится за 5 секунд. Это дает спрашивающим не ответы это дает чувство причастности. Вот мой лидер и он прислушивается ко мне, мы вместе идем верным путем!


Культ языка программирования, чаще всего, агрессивный. Я помню как в конце нулевых я пытался объяснить джавистам, что их язык отстал от C#. Вместо вдумчивых обсуждений нужны ли в языке лямбда-функции (C# 3.5 2007) я встречал агрессию, усмешки и снисходительные комментарии в духе: "мелкомягкие все скопировали у богов".


В Stack Overflow в вопросах вида как сделать в Java X именитые участники сообщества отвечают, что X вреден и делать так ни в коем случае не надо, а то что язык такого не позволяет это величайшее благо, ибо защищает программистов. Такие комментарии люто заплюсованы. И наоборот: заминусованы те, что находятся не в канве основной линии партии.


Нет ничего хорошего в том, чтобы выбирать объективно худшие подходы в угоду чьей-то "идеологии". Нет ничего хорошего в том, чтобы отказываться от автоматизации, потому что кому-то она показалась сложной.


Видели ли вы когда-либо в книге уровня "Философия Java" (Брюса Эккеля) раздел хотя бы на пару страниц, в котором обсуждались бы возможные улучшения в языке? Хотя бы одним глазком посмотреть: как может быть или (не дай Бог) как должно быть. Были ли лямбда-функции такой уж инновационной концепцией, что сложно было предположить, как это могло бы выглядеть в Java? Или, к примеру, как может выглядеть null-safety в Java, хотя бы гипотетически?


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




Когда-то давно случай распорядился так, что Oak вытащили из мусорного ведра, назвали Java и влили в него беспрецедентные маркетинговые бюджеты со статьями в Wall Street Journal. Затем Java сопротивлялась добавлению "синтаксического сахара" около 10-ти лет (условно 2002-2012). Наконец-то в нее добавляют все то, что должно быть в хорошем языке программирования. Это не было каким-то вынужденным 10-ти летним простоем в дизайне языка, во время которого переписывали компилятор или решали другие объективные проблемы развития. Просто Sun и Oracle предпочитали нанимать юристов, а не разработчиков.


В C# только что добавили тип данных запись (record type), это заняло всего лишь 9 лет отсчитывая от релиза другого языка F# 2.0 (2010), в котором уже была очевидна полезность этих типов. Оба языка разрабатывались под одной крышей Microsoft. Трудно предположить, что в команде C# не заметили возможностей F#. Просто они решили не торопиться. Возможно года через 3-4 мы получим именованные объединения (tagged union или discriminated union) в C#. Почему так долго? А нет никаких причин просто дизайнерам языка так захотелось.


В Scala 3 (aka Dotty) добавляют новое ключевое слово enum. 14 лет выходили новые релизы этого языка начиная с 2006 года (релиз 2.0), но за это время создатели Scala не подумали сделать нормальные перечисляемые типы. Есть enumeratum, и различные другие "варианты", но сам факт добавления нового ключевого слова enum прямо говорит о том, что эти костыли не работают как надо. Если бы только мы не должны были ждать Dotty более 3 лет.




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


Спасибо пацанам из Мы обречены. Побывал у них гостем. Смотрите, там весело.
Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru