Анонимная сеть, которая способна пережить государственный контроль

Discussion in 'Безопасность и Анонимность' started by number571, 4 Jan 2025 at 12:32 PM.

  1. number571

    number571 New Member

    Joined:
    Friday
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    Анонимность — это то, что мы давно потеряли

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

    В данной работе я хотел бы рассказать о достаточно уникальном явлении в строении анонимных сетей, а именно о теоретически доказуемой анонимности, свойстве / качестве, позволяющим осуществлять анонимные действия даже внутри контролируемой, замкнутой и враждебной среды. Я попытаюсь рассказать о том какие задачи анонимизации существуют и какие у них есть положительные и отрицательные стороны. В конце работы я покажу как можно запустить собственный анонимизирующий узел и подключиться к работающей системе на примере анонимной сети Hidden Lake.

    Немного об анонимности и анонимных сетях

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

    Когда наблюдателей несколько и при этом не существует какого-либо единого, монолитного, монопольного, глобального наблюдателя, то задача анонимности не кажется такой уж сложной. И действительно, при подобной модели угроз уже существуют готовые решения - Tor, I2P, Mixminion, Crowds и т.д., - анонимные сети, способные хоть и не всегда успешно скрывать источник данных или их получателя, но вполне успешно (с определёнными условностями) скрывать связь между отправителями и получателями. Такой модели угроз вполне достаточно, когда система, в которой разворачивается анонимная сеть, априори немонолитна, когда один наблюдатель, с очень малой на то вероятностью, буквально приближенной к нулю, сможет успешно совершать деанонимизирующие атаки. Но что делать с тем, если сеть крайне монолитна, что делать, если все провайдеры связи фактически подконтрольны одним интересам, что делать, если существует глобальный наблюдатель?

    У современных анонимных сетей на этот вопрос нет ответа. Буквально любая взятая ныне известная анонимная сеть, будь то Tor или I2P, Mixminion или Crowds, Herbivore или Perfect Dark - уязвима к атакам глобального наблюдателя. Злоумышленник, контролирующий полноценно всю среду коммуникации способен просмотреть не только инициатора связи (отправителя данных), но и проследить за перемещением / маршрутизацией пакетов, вплоть до выявления получателя этих же данных. От одной анонимной сети к другой сложность анализа изменяется, так например, глобальному наблюдателю потребуется больше времени отследить закономерность I2P трафика, нежели трафика Tor, или Mixminion трафика, нежели трафика Crowds. Тем не менее, в общем плане, ситуация никак не меняется, а проблема остаётся. Даже обычное пассивное наблюдение способно принести много плодов глобальному наблюдателю, не говоря уже об активных наблюдениях, когда наблюдатель будет отключать узлы, замедлять трафик в подсетях, самостоятельно инициировать отправление данных, формировать каналы коммуникации и т.д. и т.п. В результате, проблема анонимности, при условии существования глобального наблюдателя, уже не будет являться такой тривиальной, а модель угроз обрастёт дополнительными требованиями.

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

    1. Сети, которые скрывают связь между абонентами коммуникации,
    2. Сети, которые скрывают инициатора отправляемых данных,
    3. Сети, которые скрывают сам факт наличия коммуникации.

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

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

    Теоретически доказуемые задачи анонимизации

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

    В настоящее время существует три задачи с теоретически доказуемой анонимностью, которые могут скрывать инициатора отправляемых данных. Одна из трёх по умолчанию скрывает сам факт существования какой-либо коммуникации. Таковыми задачами являются: DC (проблема обедающих криптографов), EI (проблема увеличения энтропии), QB (проблема на базе очередей).

    1. Проблема обедающих криптографов (DC)

    [​IMG]

    Данная проблема является первой задачей, предоставляющей теоретическую доказуемость по умолчанию. Иными словами, её протокол (т.е. действия / алгоритм двух и более сторон) построен таким образом, что никаких дополнительных условий для повышения уровня качества, как это было рассмотрено ранее с Mixminion, не требуется. Задача скрывает инициатора отправляемых данных.

    Схема данной задачи сводится к следующим вводным:

    1. В сети присутствует N участников (минимум три),
    2. Для сохранения анонимности инициатора достаточно существования одного участника не подчинённого сговору,
    3. Каждый участник обладает наличием секрета с другими участниками (ключами шифрования),
    4. Один секрет связывает двух участников при помощи общего алгоритма (КСГПСЧ / поточного шифра),
    5. Отправление одного сообщения связано с выполнением действий на всех узлах сети.

    Так например, предположим, что существует три узла A, B, C. Любой из трёх участников может быть наблюдателем (внутренним). Присутствует также и глобальный (внешний) наблюдатель, который может наблюдать за всей коммуникацией участников. Задачей является скрытие истинного отправителя сообщения M. Алгоритм каждого участника будет выглядеть следующим образом:

    Выбрать случайное время начала передачи,

    1. Согласовать (сгенерировать) 1 бит с каждым участником используя для этого общий алгоритм с известным секретом,
    2. Проссумировать каждый согласованный бит операцией XOR (исключающее ИЛИ),
    3. Если сообщение M=1, то на результат суммирования применить операцию NOT (НЕ),
    Если сообщение M=0 или сообщения не существует вовсе, тогда ничего не делать,
    4. Отправить полученный результат (бит) в сеть,
    5. Принять от всех участников их полученные биты и проссумировать операцией XOR,
    6. Итог суммирования - это переданный бит.

    Подобную передачу можно размножить далее на N бит. Вкратце, этот же список действий можно описать следующим образом:
    Code:
    (A(B) xor A(C)) xor (B(A) xor B(C)) xor (C(A) xor C(B))    -> M = 0
    (A(B) xor A(C)) xor (B(A) xor B(C)) xor not(C(A) xor C(B)) -> M = 1
    where
        M           - message
        A(B) = B(A) - total generated bit between A and B
        B(C) = C(B) - total generated bit between B and C
        C(A) = A(C) - total generated bit between C and A
    Проблем у данной задачи на самом деле множество. Во-первых, сеть очень плохо масштабируется, т.к. для её работы требуется согласованность со всеми участниками сети. Во-вторых, отключение одного из участников либо моментально выводит сеть из строя, либо приводит к возможности осуществления активных наблюдений, если сеть будет позволять динамически расширять / сужать круг действующих лиц. В-третьих, существует вероятность появления коллизий, если несколько участников выбрали одно и то же время для генерации сообщений. В-четвёртых, коллизия может приводить к намеренному выводу из строя всей сети, если таковую коллизию будет осуществлять злоумышленник. В-пятых, задержка в передаче информации очень большая, а пропускная способность канала очень малая.

    Как мы увидели, проблем у такой задачи действительно много, но есть ли ещё какие-нибудь позитивные / положительные стороны кроме теоретически доказуемой анонимности? И да, они есть:

    С точки зрения криптографии задача крайне проста, она руководствуется примитивами исключительно симметричного раздела криптографии и базируется на качестве КСГПСЧ / поточного шифра. Это говорит не только о том, что безопасность такой задачи доказать крайне легко, но и о том, что задача по умолчанию невосприимчива к криптоаналитическим атакам со стороны квантовых компьютеров,

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

    Так как задача является довольно старой (1988 год) на её основе было создано как минимум три анонимных сети: Herbivore, Dissent, PriFi. К сожалению, все они: a) более не поддерживаются разработчиками; b) а также либо идут на компромисс с масштабируемостью (Herbivore, Dissent), теряя не только абсолютно доказуемую анонимность, но и теоретическую, либо ограничивают способ применения до локальных сетей (PriFi).

    2. Проблема увеличения энтропии (EI)

    [​IMG]

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

    Схема данной задачи сводится к следующим вводным:

    1. В сети присутствует N участников (минимум три),
    2. Для сохранения анонимности инициатора достаточно существования одного участника не подчинённого сговору,
    3. Каждый участник обладает наличием секрета с другими участниками (ключами шифрования),
    4. Отправление одного сообщения распространяется по всем узлам,
    5. Сообщение связано с маршрутизацией на одном из N узлов с вероятностью 1/2.

    В действительности, EI-задача наследует особенности сразу трёх сетей: Tor (наследуя луковую маршрутизацию), Crowds (наследуя вероятностную маршрутизацию), Bitmessage (наследуя слепую маршрутизацию). В результате алгоритм каждого участника будет выглядеть следующим образом:

    1. Существует сообщение M, которое шифруется ключом получателя K -> E(K,M) = C,
    2. Выбирается случайный участник из N-1 возможных (без получателя),
    3. Если случайно выбранным участником оказываемся мы, тогда ничего не делаем C = C',
    4. Иначе шифруем сообщение C ещё раз, но ключом выбранного участника K' -> E(K', C) = C'
    5. Отправляем C' всем участникам в сети.

    Вкратце, этот же список действий можно описать следующим образом:
    Code:
    E(K1, M) OR E(K2, E(K1, M))
    where
        E      - encryption
        M      - message
        K1, K2 - keys
    После отправления шифртекста C', при имеющемся маршрутизаторе, он будет расшифрован в шифртекст C. Шифртекст C, в свою очередь, вновь будет отправлен все участникам сети. Если получатель существует, то он его преобразует в сообщение M. При этом, одним из главных условий, является то, чтобы шифртексты не содержали информацию о том, кому они предназначены. Тогда может возникнуть логичный вопрос, а как участник поймёт, что шифртекст был предназначен ему? Ответ прост: если участник смог расшифровать шифртекст, тогда сообщение было предназначено ему, в противном случае - не ему. Таким образом, каждый участник будет пытаться расшифровать каждый полученный им шифртекст. Данное свойство гарантирует то, чтобы промежуточный узел не сможет узнать кому конкретно было отправлено данное сообщение, если количество участников будет более трёх. Но в этом концепте мы предполагаем, что промежуточный узел не является наблюдателем.

    И тут корректно сразу задаться следующим вопросом: как всё это защищает от глобального наблюдателя? В таком случае наблюдатель будет видеть факт отправления, т.е. вышеописанная задача уже априори не защищает инициатора связи. Плюс к этому, если получатель начнёт оперативно отвечать, то наблюдатель также увидит факт данного общения. В результате, не был скрыт ни только инициатор связи, но и вообще связь...

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

    Пока что, со стороны внешнего (глобального) наблюдателя мы можем увидеть следующим картину:

    1. Либо запрос(1) -> ответ(1), если было всего два отправления,
    2. Либо запрос(1) -> маршрутизация(1) -> ответ(1), если было три отправления.

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

    1. Либо запрос(1) -> ответ(1) -> запрос(2) -> ответ(2)
    2. Либо запрос(1) -> маршрутизация(1) -> ответ(1) -> запрос(2)
    3. Либо запрос(1) -> ответ(1) -> запрос(2) -> маршрутизация(2)

    В данном случае, наблюдатель находится в состоянии неопределённости до тех пор, пока все цепочки не закончит своё полное действие. Цепочка 1 является определённой, потому как она завершена логически и если отправления на этом прекратились, то значит, что она - верна. Но что произойдёт с цепочками 2, 3 если они продолжат отправление? Возникнет финальная неопределённость, а именно - столкнутся два завершённых и независимых состояния одновременно:

    1. Либо запрос(1) -> маршрутизация(1) -> ответ(1) -> запрос(2) -> ответ(2)
    2. Либо запрос(1) -> ответ(1) -> запрос(2) -> маршрутизация(2) -> ответ(2)

    К чему это приводит? Со стороны наблюдателя видно, что запрос(1) в любом случае истинный (определённый), и как следствие - отправитель (инициатор) также полностью определён / деанонимизирован (исходя из задачи скрытия инициатора). Но вот что насчёт запрос(2)? А здесь как раз и раскрывается задача увеличения энтропии - чёткая грань между отправлением и маршрутизацией стирается, она равна 1/2. При этом, как мы видим - последнее отправление ответа всегда истинно, как и последующий запрос. На данном этапе может показаться, что задача работает переменно, иногда она приводит к неопределённости, как в случае запрос(2)-маршрутизация(2), а иногда приводит вновь к определённости, как в случае ответ(2)-ответ(2). Но на деле, первоначальная цепочка запрос(1) -> ответ(1) -> запрос(2) -> ответ(2) никуда не делась, она также продолжает своё шествие, а потому уже она способна размыть грань между запрос(3)-ответ(2). И такая неопределённость будет всё далее и далее возрастать, до тех пор, пока сохраняется сам факт генерации сетевых сообщений.

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

    Более подробно про данную задачу можно почитать здесь: https://habr.com/ru/articles/743630/

    3. Проблема на базе очередей (QB)

    [​IMG]

    Данная проблема является самой простой в плане программной реализации, т.к. не зависит от кооперации с другими участниками сети, включая даже функцию маршрутизации. Благодаря этому свойству, сети на основе QB-задачи могут относительно легко внедряться не только в полностью подконтрольные сети, но и даже в централизованные сервисы по типу мессенджеров, форумов, чатов и т.д., становясь для последних "паразитами". QB-задача является самой новой задачей (2022 год) из ныне известных задач с теоретически доказуемой анонимностью, но при этом куда более проработанной и исследованной, нежели EI-задача. На базе данной задачи было создано две анонимной сети: M-A и Hidden Lake.

    Схема данной задачи сводится к следующим вводным:

    1. В сети присутствует N участников (минимум три),
    2. Отправление одного сообщения распространяется по всем узлам,
    3. Абоненты коммуникации должны идентифицировать друг-друга (быть друзьями).

    Алгоритм каждого участника будет выглядеть следующим образом:

    1. Каждое сообщение m шифруется ключом получателя k: c = Ek(m),
    2. Сообщение c отправляется в период = T всем участникам сети,
    3. Период T одного участника независим от периодов T1, T2, ..., Tn других участников,
    4. Если на период T сообщения не существует, то в сеть отправляется ложное сообщение v без получателя (со случайным ключом r): c = Er(v),
    5. Каждый участник пытается расшифровать принятое им сообщение из сети: m = Dk(c).

    В результате, глобальный наблюдатель будет видеть лишь факт генерации шифртекстов в определённо заданный период времени. Сложностью для него становится определение истинности конкретно сгенерированного сообщения. Фактически, данная проблема является более стеганографической, чем криптографической задачей, т.к. скрывает не смысл самого сообщения а факт его существования в генерируемом шуме (контейнере).
    Code:
    (E(K, M) OR E(R, V)) <- A(x)
    where
        E    - encryption
        K, R - key, random key
        M, V - message, void message
        A(x) - generation algorithm with independent event
    Недостатком данной задачи является то, что абоненты непосредственной коммуникации должны друг-друга идентифицировать. Это означает, что они не могут быть анонимами друг к другу. Связано это с тем, что передаваемые шифртексты распространяются по сети без какого-либо свойства полиморфизма. В EI-задаче под полиморфизмом понимается возможность применения множественного шифрования, в DC-задаче под полиморфизмом понимается связывание бита со всеми участниками сети. Иными словами, полиморфизм - это свойство объекта изменять свой внешний вид по мере перехода от одного узла к другому. В QB-задаче такого свойства нет, а потому и отсутствует возможность анонимизировать трафик между непосредственными абонентами. С другой стороны, QB-задача, в отличие от DC и EI -задач, не только скрывает инициатора связи, но также скрывает и вовсе наличие какой-либо связи от всех внешних и внутренних наблюдателей.

    Недостатки всех задач с теоретической доказуемостью

    К сожалению, все задачи, сохраняющие теоретическую доказуемость на уровне скрытия инициатора связи, обладают рядом общих недостатков:

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

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

    Анонимная сеть «Hidden Lake» как мера противодействия глобальному наблюдению

    [​IMG]


    Анонимная сеть Hidden Lake работает полноценно на основе QB-задачи, а потому обладает всеми её преимуществами и недостатками. Период генерации шифртекстов по умолчанию в HL равен 5 секундам. Размер каждого шифртекста равен 8KiB. В сети предусмотрен механизм противодействия DoS/DDoS атакам на базе PoW-алгоритма, где каждое отправляемое сообщение подтверждается выполненной работой отправителем. В сети существует несколько работающих подсетей, если одна из них перегружена - можно перейти на другую. Список доступных сетей по умолчанию находится в файле networks.yml.

    Сеть Hidden Lake уникальна не только тем, что она придерживается теоретически доказуемой анонимности, и даже не только тем, что она скрывает сам факт наличия какой-либо коммуникации, но и тем как она способна адаптироваться к различным средам коммуникации. В основе сети Hidden Lake лежит формула: Hidden-Lake = ΣAPP × HLS × ΣHLA, где ΣAPP - множество прикладных сервисов, HLS - ядро анонимизации (исполнение QB-задачи), ΣHLA - множество сетевых адаптеров. Последняя сущность позволяет сети Hidden Lake уметь приспосабливаться к любой среде в которой возможны функции записи и чтения. Так например, HL смогла вживиться в полностью централизованный сервис и успешно исполнять в нём функцию анонимизации трафика.

    В настоящий момент, в сети Hidden Lake присутствует три прикладных сервиса: HLM (messenger), HLF (filesharer), HLR (remoter). Первое приложение является мессенджером с функциями отправления и получения сообщений в realtime. Второе приложение является файлообменников, позволяющим скачивать файлы с хранилища друзей. Третье приложение является приложением удалённого доступа. В базовой конфигурации Hidden Lake, локально запускается только HLM приложение (через HLC, об этом далее), в то время как HLF и HLR можно запустить, подредактировав файлы конфигурации hlc.yml и hls.yml (которые будут сгенерированы после первого запуска).

    Более подробно про сеть Hidden Lake можно почитать здесь: https://github.com/number571/hidden-lake/blob/master/docs/hidden_lake_anonymous_network.pdf

    Быстрый старт с запуска мессенджера HLM

    [​IMG]

    Чтобы запустить мессенджер, необходимо скачать и запустить программу HLC (composite), которая автоматически запустит локально три сервиса: HLS (service), HLA=tcp (adapter) и непосредственно HLM. HLS - это ядро анонимизации, выполняющее QB-задачу. HLA=tcp - это сетевой адаптер, позволяющий передавать и принимать анонимизирующий трафик по TCP-соединению.

    1. Скачиваем программу HLC под нужную архитектуру и операционную систему с последнего релиза: https://github.com/number571/hidden-lake/releases
    2. Запускаем программу HLC через консоль следующим образом: ⁡hlc --network oi4r9NW9Le7fKF9d⁡
    3. Открываем браузер, переходим на localhost:9591, открываем Settings и нажимаем Copy key
    4. Передаём скопированный ключ своему другу, а также получаем от него уже его публичный ключ
    5. Открываем Friends, вводим имя друга, его ключ и нажимаем ◀ для добавления в список друзей

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

    Заключение

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