Всем привет!

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

Что такое sneakernet-сети и зачем они нужны в 2022 году?

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

Несмотря на повсеместное распространение интернета, такие сети могут быть интересны в качестве резервного канала связи. С одной стороны, живя в большом городе, можно обложиться домашним интернетом, несколькими сим-картами с оплаченным LTE, ещё несколькими VPN для надёжного доступа к зарубежным сервисам. С другой стороны, известные интернет-сервисы принадлежат не конечным пользователям, а большим компаниям, которые теоретически могут ограничивать доступ пользователям по тому или иному признаку (адрес IP не в правильном регионе, паспорт не той юрисдикции, банковская карта, выпущенная в твоей стране, больше не принимается к оплате, итд). Плюс, бывает так, что сами правительства практически полностью режут доступ к интернету на какое-то время — те, кто жил в Беларуси в августе 2020 года или в Казахстане в январе 2022 года, не дадут мне соврать. Поэтому в периоды таких отключений интернета было бы хорошо иметь запасную возможность отправить сообщение близким, друзьям, пускай и с сильно большей задержкой. Любительская почта была создана, чтобы реализовывать именно этот сценарий работы. В нескольких словах, это микс идеи почты и старого флоппинета, распространённого в 90-е годы прошлого века. На такую идею меня подтолкнула другая статья на хабре, в которой описывается историческое развитие почты.

Как устроена любительская почта?

Полное название сети - "Служба любительской цифровой почты" (Amateur Digital Post Service), в дальнейшем буду писать просто "любительская почта". Она сильно похожа на любые другие sneakernet-сети, наглядная картинка приведена выше.

Как хранятся сообщения в любительской почте?

Сообщения хранятся в репозитории. Репозиторий - это папка, которая содержит две другие папки:

  1. adps_messages - содержит сообщения в JSON-формате

  2. adps_attachments - содержит файлы, прикреплённые к вложениям

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

На иллюстрации выше приведена схема сообщения, давайте разберём некоторые его поля:

  1. Имя (name) — это первый по важности идентификатор получателя после координат. Значение этого поля должно быть коротким и позволять идентифицировать получателя. Например, это может быть адресом email, номером телефона или даже номером аськи. Важно учитывать, что это поле регистрозависимое в текущих реализациях поиска. Данное поле необходимо указывать в любом сообщении. Оно позволяет выгрести почту для конкретного получателя среди тысяч других для одной и той же координаты, что актуально для плотных городов.

  2. Сообщение (inline_message) может содержать короткое сообщение, типа СМС. Из-за лимита в 4 КБ на одно сообщение оно не будет содержать много информации. Повторюсь, если надо отправить что-то побольше, используйте вложения.

  3. Примечание (additional_notes) обычно выставлено в null. Но в некоторых случаях оно может содержать важную информацию для маршрутизации сообщения. Например, один узел может изменить письмо, добавив полезную информацию по доставке для следующих узлов. Вообще, лучше избегать редактирования сообщения после его создания, потому что поменяется значение хешсуммы и получатель может получить много сообщений с почти одинаковым содержимым, за исключением примечания. Но, как мне кажется, лучше доставить несколько сообщений, чем иметь больший риск не доставить ни одного.

  4. Дата создания (date_created) реализует механизм TTL (Time To Live). Это строковое поле должно быть в формате YYYY-MM-DDThh:mm:ss. В обеих существующих реализациях любительской почты по умолчанию включены фильтры на это поле со значениями (30 дней назад; через 3 дня). Нижняя граница реализует TTL, а верхняя не позволяет его обманывать, но допускает отправку писем в разных часовых поясах и с адекватными ошибками в локальном времени. То есть, обычно у письма есть 30 дней, чтобы доставиться получателю, или оно, скорее всего, потеряется.

  5. Координаты получателя (recipient_coords) — это главное поле, используемое для фильтрации сообщений. Оно сделано в виде списка географических координат. Причина использования списка, а не одной координаты была в том, что, во-первых, со списком можно отправлять одно письмо в несколько локаций, и во-вторых, через список можно вручную управлять маршрутизацией письма. То есть, если известно, что транспортный поток между вашим местом и местом получателя низкий, то вы можете разделить маршрут на несколько других с более плотным движением. Эта идея будет раскрыта в следующей части.

Как видно, все поля содержат информацию о получателе, не об отправителе.

Используя ПО для работы с любительской почтой, вы можете фильтровать письма по всем вышеприведённым полям, но самое главное поле — это список координат (recipient_coords), потому что оно даёт возможность маршрутизировать письма внутри сети.

Как поле списка координат используется для маршрутизации сообщения?

Поле recipient_coords является основным полем для маршрутизации внутри любительской почты. Давайте рассмотрим два фильтра, использующие это поле.

Простой фильтр координат

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

  • Дайте мне все письма, получатели которых находятся в радиусе 20 км от Твери.

  • Дайте мне все письма, получатели которых находятся в радиусе 50 км от Москвы.

  • Дайте мне все письма, получатели которых находятся в радиусе 15 км от Владимира.

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

Умный фильтр координат (или фильтр убывающего расстояния)

Фильтр предназначен для передачи писем из одного репозитория в другой, который находится в крупной агломерации (например, Москва и МО). Главная идея заключается в том, что в больших городах больше вероятность встретить людей, которые иногда катаются в далёкие населённые пункты. Модель этого фильтра предполагает, что чем более населённый город, то тем на большее расстояние можно отправить письмо. Умный фильтр принимает два параметра:

  1. Центральная точка (по аналогии с простым фильтром).

  2. Базовое расстояние (base_distance).

Механика работы следующая:

  1. Если дистанция между получателем и центральной точкой равна одной базовой дистанции, то вероятность фильтрации письма 50%.

  2. Если дистанция между получателем и центральной точкой равна двум базовым дистанциям, то вероятность фильтрации письма 25%.

  3. Если дистанция между получателем и центральной точкой равна трём базовым дистанциям, то вероятность фильтрации письма 12.5%.

  4. И так далее, пока вероятность не опустится ниже порогового значения в 5%.

Математически вероятность (probability) считается по такой формуле:

probability = 2^\frac{-distance}{base\_distance}

Базовая дистанция (base_distance - метры) получается из значения населения (population - человек) в городе по следующей эмпирической формуле:

base\_distance = population / 10

Значение населения можно вытащить из открытого датасета от simplemaps.com.

Давайте посмотрим на примеры двух самых больших городов России: Москву и Санкт-Петербург. Благодаря проекту ns6t.net я смог построить азимутальные эквидистантные проекции (любые два равных отрезка, начинающиеся из центра, проецируются в равные расстояния) для наглядной иллюстрации работы этого фильтра.

Если применить фильтр к Москве, то вся территория Франции, Италии или Англии будет лежать в зоне вероятностей между 50% и 25%. Это связано с тем, что Москва является большим городом, и значение базового расстояния довольно большое (1712 км).

Несмотря на относительно близкое расстояние (600 км) к Москве, "круги" Санкт-Петербурга имеют гораздо меньшее расстояние между окружностями. Из-за того, что базовое расстояние меньше Московского в 3 раза (как и население), то некоторые регионы Франции, Италии и Англии находятся за пределами 6.25-процентной зоны. В этом и заключается идея, что вероятность доставки письма из Москвы в Англию будет гораздо выше, чем из Питера в Англию, потому что в Москве живёт больше людей (на практике это может не работать, но модель, в силу простоты, пока такая).

Реализации

Я написал две реализации. Сначала я написал прототип на питоне с CLI в качестве пользовательского интерфейса. После этого я написал генератор фейковых сообщений, чтобы посмотреть, как работает прототип под нагрузкой. Скрипт в git-репозитории питоновской реализации генерирует 50000 сообщений вместе со 100000 вложений на 5 ГБ. 80% писем распределены по России, остальные 20% — за её пределами. Количество писем пропорционально количеству жителей, кроме того, для каждой координаты внесена небольшая ошибка, чтобы избежать скопления писем с одинаковой координатой в одной и той же локации. Тестирование под нагрузкой вскрыло некоторые баги, который я поправил. После этого мне захотелось портировать питоновскую реализацию на какую-нибудь массовую платформу. В качестве такой я выбрал C#, а конкретнее, .NET 4.0. Причина заключалась в том, что эта платформа запускается на огромном количестве версий Windows (от Windows XP до "десятки"). Также у этой платформы есть гибкий и мощный фреймворк WPF для написания графического GUI вместо консольного CLI. В текущей версии GUI имеется возможность подгружать внешние переводы, помимо двух внутренних (русский, английский).

Бенчмарк

Вышеупомянутый скрипт генерирует 50000 фейковых сообщений и 100000 вложений на 5 ГБ, которые складываются в отдельный репозиторий, на котором, в свою очередь, проводится нагрузочное тестирование.

Параметры фильтров

  1. Простой фильтр координат: 55.7558, 37.6173 (Москва), радиус 35 км.

  2. Включен умный фильтр координат, в качестве центральной точки также используется Москва.

  3. Даты: с 10 января 2022 года по 10 июля 2022 года.

При таких настройках из репозитория с 50000 письмами фильтруются, примерно, 14300 сообщения. Я написал "примерно", потому что включён умный фильтр координат, а результат его работы зависит от генератора случайных чисел.

Команды в Python-реализации

# Filtering
time adps search [REPO] --output-format=COUNT --datetime-from=2022-01-10 --datetime-to=2022-07-10 --latitude=55.7558 --longitude=37.6173 --radius-meters=35000 --damping-distance-latitude=55.7558 --damping-distance-longitude=37.6173

# Copying
time adps search [SOURCE_REPO] --output-format=COUNT --datetime-from=2022-01-10 --datetime-to=2022-07-10 --latitude=55.7558 --longitude=37.6173 --radius-meters=35000 --damping-distance-latitude=55.7558 --damping-distance-longitude=37.6173 --target-repo-folder [TARGET_REPO] --copy

# Delete
time adps search [REPO] --output-format=COUNT --datetime-from=2022-01-10 --datetime-to=2022-07-10 --latitude=55.7558 --longitude=37.6173 --radius-meters=35000 --damping-distance-latitude=55.7558 --damping-distance-longitude=37.6173 --delete

Результаты

Окружение

Фильтрация, сек.

Копирование, сек.

Удаление, сек.

Linux, Intel Core i5 Whiskey Lake, NVMe M2 SSD, Python 3.10

42

86 (44)

85 (43)

MacOS, MacBook Air M1, Python 3.9

24

57 (33)

53 (30)

Windows XP, Intel Core 2 Duo, SATA HDD 5400 rpm, .NET 4.0

127

1722

759

Windows 10, Intel Pentium G4400, SATA SSD, .NET 4.5.1

61

255

52

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

Результаты для Windows XP сильно выбиваются в худшую сторону по сравнению с другими окружениями. Но, всё равно, то, что любительскую почту можно запустить даже на таком довольно старом компьютере, меня радует.

Итог

Любительская почта — это полностью офлайн сеть, которая способна соединить участников по всему миру. Эта сеть работает даже на старом оборудовании. Дизайн этой сети предельно простой, нет необходимости даже в базе данных, нужна только возможность работы с файловой системой. Это значит, что любой программист может написать свою реализацию любительской почты. Сегодня, конечно, можно посмеяться над тем, что кто-то пишет ПО для создания сетей, которые были в ходу лет 30 назад. И хорошо, если лет через 10 мы тоже будем над этим смеяться, но пускай, всё-таки, возможность резервной связи будет, хоть она и гораздо менее удобная по сравнению с мессенджерами и электронной почтой.

Ссылки

Комментарии (38)


  1. sukhe
    15.08.2022 08:10
    +10

    Во времена FidoNet вполне себе носили почту на дискетах. У некоторых пойнтов не было домашних телефонов или был телефон, но не было модема.


    1. Sancho_SP
      15.08.2022 08:31
      +6

      Скорее от точек к юзерам. Да и это была ситуация от откровенной бедности, а не от каких-то административных ограничений.


      1. edo1h
        15.08.2022 12:27
        +5

        от откровенной бедности, а не от каких-то административных ограничений

        Разве недостаток ресурсов не является одним из случаев административных ограничений? )


        1. Sancho_SP
          15.08.2022 17:51

          Нет, ибо миллионы модемов уже есть у пациентов на руках, а стоимость их околонулевая.

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

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


  1. Sancho_SP
    15.08.2022 08:27
    +1

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

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


  1. ivanstor
    15.08.2022 08:42
    +21

    Для систем связи "судного дня" технические вопросы — протоколы, сети и их реализации не являются проблемой. Основной, а скорее единственной, проблемой подобных систем является социальная составляющая. Проще — как заставить людей таскать туда-сюда флешки, держать включенными (и разряжать), смартфоны — для поддержки mesh сетей — и т.п. Это главное, а не время сортировки под WinXP.

    Конкретно по этой системе, куда интереснее было бы ознакомится с не с реализацией тоссера/маршрутизатора, а с оценкой, сколько вообще нужно участников, что бы это всё заработало. И какая нужна периодичность поездок участников в те или иные точки для некоей зоны охвата. И множество подобных вещей.

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

    Замечу также, что сама необходимость подобной системы подразумевает форс мажор. Т.е. введение некоего специального режима управление, типа ЧП, в явной или неявной форме. Жизненный опыт говорит, что сдадут "кому надо" всю эту систему практически немедленно, в пределах дней. Именно поэтому такое внимание при разработке подобных систем уделяют анонимности.

    Я думаю, что более-менее рабочий вариант связи в чрезвычайных обстоятельствах — это старое-доброе радио — и я не про LoRa. Например, широко известный в узких кругах проект для 3.5МГц любительского диапазона. Тоже весьма далек от идеала, но хоть какой-то шанс.

    И последнее. В подобных разработках первое, что нужно делать, это не программное и/или железное обеспечение. И даже не соц. составляющая. Первое — это достаточно подробная проработка сценария использования. И уже исходя из такого сценария выбирать средства: теоретическую/математическую модель, техническую/программную реализацию и социальную организацию.
    По схеме: "вызов(внешние обстоятельства)" --> "ответ на вызов (наши действия)".
    Вот власти отключили сотовые/интернет. На какой срок? Какое время нужно на запуск вашей ADPS? Может быть к тому времени, когда кто-то поедет из Твери в Москву уже включат? Если нет, то, наверное, ограничат поездки. И ещё сотни и тысячи параметров. Это очень серьезная работа


    1. StjarnornasFred
      15.08.2022 09:47

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

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

      как заставить людей таскать туда-сюда флешки, держать включенными (и разряжать), смартфоны — для поддержки mesh сетей

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

      Вот власти отключили сотовые/интернет

      Строго говоря, интернет как таковой отключить невозможно, можно лишь отключить подконтрольные тебе (физически или юридически) сервера и каналы связи, в том числе DNS, и всё, что не идёт через них, будет работать - если сервер находится в одной локальной сети с тобой, то ты получишь к нему доступ. Плюс спутниковый интернет, который не отключить и не заблокировать никак, разве что потребовать от оператора сети спутников... а тут уже идея, как бы сделать "опенсорсный" спутниковый интернет, при котором все могут пользоваться, но никто не может единолично отключить: может, на торрентоподобной технологии для передачи данных между спутниками, технические требования к которым общедоступны и не требуют компании-оператора?


      1. balamutang
        15.08.2022 14:54
        +1

        Что значит "опенсорсный спутниковый интернет"? Запуск спутников стоит денег, что уже перечеркивает опенсорсность (читай бесплатность)

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

        Хорошим решением была бы как раз как мессенджер LoRa+какие-нибудь аэростаты-репитеры, летающие на высоте пары км, но ЛоРы в мобилах нет, а значит и массовости в использовании не будет.


    1. sinhbad Автор
      15.08.2022 09:48

      Спасибо за комментарий! Это, наверное, первая реализация sneakernet за последние годы (а может и лет 20), поэтому, да, реализация сырая, и может быть подвержена различным угрозам. Я, в целом, согласен с вашим мнением, и без критического числа участников сеть будет, в лучшем случае, фрагментированна на регионы, но связи между ними не будет.

      Замечу также, что сама необходимость подобной системы подразумевает форс мажор. Т.е. введение некоего специального режима управление, типа ЧП, в явной или неявной форме. Жизненный опыт говорит, что сдадут "кому надо" всю эту систему практически немедленно, в пределах дней. Именно поэтому такое внимание при разработке подобных систем уделяют анонимности.

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

      Я думаю, что более-менее рабочий вариант связи в чрезвычайных обстоятельствах — это старое-доброе радио — и я не про LoRa. Например, широко известный в узких кругах проект для 3.5МГц любительского диапазона. Тоже весьма далек от идеала, но хоть какой-то шанс.

      Езли забороть социальный аспект использования sneakernet-сетей, то входной порог там будет куда ниже: компьютер и флешка. Не у всех есть передатчик и приёмник на 3.5 МГц, да и антенна, насколько я знаю, нужна приличной длины для КВ, и это может поставить анонимность под большим вопросом. Я не смог найти этот проект, где о нём можно почитать подробнее?


      1. ivanstor
        15.08.2022 10:14
        +2

        Проект 3.5МГц — это я так назвал. У автора спец. названия нет. А есть решения по организации связи между своими людьми "в случае чего".
        Ссылка: https://lasto.com/blog/index_index_tx.htm
        Начинать читать нужно с первой статьи — нижней в списке.

        Автор весьма подробно всё расписывает, обосновывая свои решения. Однако плотность информации очень высокая, воды практически нет. Так что советую читать всё подряд. И неспешно, если тема заинтересует, конечно.

        Насчет антенн вы правы, хотя некоторые варианты тут есть. Например, приемная активная антенна на 3.6Мгц может быть достаточно компактной. Собственно складная удочка метров на 5 с антенной Mini-Whip на конце. Или рамочная магнитная тоже довольно компактная. Предложенная автором по приведенной ссылке структурная схема приемника прямо просится совместить её с чем нибудь вроде Mini-Whip с кварцевым фильтром прямо на Mini-Whip.

        Кстати, навскидку можно совместить вашу систему с техническими средствами 3.6Мгц. Передатчик один, куда и свозят флешки, а приемник(и) в соседних городах, вместо посыльных. При этом лицензия на работу нужна только передатчику. По приведенной ссылке есть описание варианта системы с передачей текста. Медленно, вложения не потянет, но сообщения формата СМС вполне. Зато работает с сигналом на уровне шумов.


        1. balamutang
          15.08.2022 16:13

          Осталось только придумать почему флешки вернутся назад, для следующих сообщений


  1. randomsimplenumber
    15.08.2022 09:02
    +1

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

    Что делать, если агент с флешкой потерялся?

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


    1. sinhbad Автор
      15.08.2022 09:16

      Отправить другого агента )

      Обычно у письма есть TTL в 30 дней с момента создания, так что если на другой берег поедет другой курьер, то он и доставит письмо.

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

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


      1. AADogov
        15.08.2022 15:06

        Я бы давал условные очки (балы деньги) тем кто был в цепочке в случае успешной доставки. Чем больше объем флешки, и чем больше ты двигаешься, тем выше шанс что ты ожжешься в успешной цепочке. Ну или имеешь стабильный линк на много километров.


    1. sukhe
      15.08.2022 09:32
      +2

      Почтовые голуби вполне могут переносить флешки


      1. randomsimplenumber
        15.08.2022 10:49

        Голубь летит в одну сторону, обратно его нужно везти вместе с клеткой.


        1. dikey_0ficial
          15.08.2022 14:30

          обученные голуби возвращаются "домой", в этом и весь плюс системы


          1. AADogov
            15.08.2022 15:03
            +2

            Так они они и несут письмо только тогда, когда возвращаются домой.


  1. Notsoanon
    15.08.2022 09:55

    А каким образом осуществляется доставка?


    1. sinhbad Автор
      15.08.2022 09:56

      Разными путями, например, так, как показано на обложке этой статьи )


    1. Armitage1986
      15.08.2022 10:43
      +8

      2021 год. Мегакорпорации захватили власть, упразднив демократию. Создана
      всемирная информационная сеть. Человечество охвачено повальной болезнью
      — синдромом нервного истощения (NAS, «чёрная трясучка», 'Black
      Shakes'). Важная и секретная информация передаётся с помощью специальных
      курьеров — мнемоников, которые могут записывать информацию в свою
      память благодаря имплантированным в мозг устройствам


      1. AADogov
        15.08.2022 15:09
        +1

        Еще есть игрушка Mirror's Edge тоже в тему.


    1. savostin
      15.08.2022 13:22

      Закладки, конечно.


  1. Flidermouse
    15.08.2022 16:34
    +3

    У нас 20 лет назад почти у всех были салазки типа таких:
    image


    1. dartraiden
      15.08.2022 19:10
      +2

      Тут что-то на богатом… я просто вытаскивал хард, оборачивал в толстое полотенце и тащил к приятелю.


    1. sinhbad Автор
      16.08.2022 09:56

      Сейчас на алиэкспрессе можно купить контейнеры, в которые вставляются ноутбучные харды, а сам контейнер подключается по USB. Стоят они рублей 500. 3.5-жёсткие диски по ним не подключишь, потому что им надо подавать 2 напряжения (на 5в и 12в), но можно отдельно купить адаптер SATA-USB, а жёсткий диск запитать от БП стационарного ПК. Хотя сейчас всё это не надо, проще купить отдельный хард для ноута, благо они недорогие. Кстати, салазки, такие, как на фото, и сейчас можно купить (запрос в гугле "rack hdd 3.5").


      1. Flidermouse
        16.08.2022 10:21

        Я и сам удивился когда картинку искал что они есть в продаже в таком формате когда заметно дешевле можно купить USB-бокс. У меня то такой был ещё IDE, на компе без USB. Ставил старый хард на 90 МЕГАБАЙТ и носил на нём всякое.


  1. AlexSyz
    15.08.2022 17:34

    Идея создать сеть для замены Интернет годная, но реализация неоднозначная.

    Я бы задумался о многоуровневой системе для передачи сообщений. Т.е. внутри города мэш сеть на wi-fi и/или Lora, между городами передача на длинных / средних волнах, протокол маршрутизации с избыточностью, т.е. если несколько длинноволновых станций приняли пакет, все они постараются его доставить. Естественно где-то будут локалки, где-то открытые сегменты Интернет, где-то придется через ВПН, где-то придется про диал-ап вспомнить. Главное что формат писем должен позволять иерархическую маршрутизацию согласно связности сети. Как пример - Фидонет с нодами и поинтами. Важно понять что сеть будет иметь низкую пропускную способность, особенно при активации "аварийного" режима. Т.е. необходимо уменьшать накладные расходы на заголовок. Сообщения архивировать, затем шифровать личными ключами абонентов. Хэш может быть не нужен если отправитель будет нумеровать свои письма. В такой гетерогенной сети нашлось бы место передаче сообщений физически, но это как резервный крайний вариант, если какой либо сегмент полностью недоступен по другим каналам.

    Главное что такая сеть сама себя не построит. Поэтому заинтересовать людей - главная задача.


  1. ilmarinnen
    15.08.2022 19:42
    +2

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

    Почта России. Имхо эта транспортная сеть ляжет последней. И она отлично решает задачу мотивации для передачи конверта с данными дальше по цепочке.


    1. sinhbad Автор
      16.08.2022 09:46

      Согласен. В принципе, этот проект вполне может работать на транспорте "Почты России". Карта SD или даже CD/DVD/Bluray вполне проходят по нормам размера и веса письма.


      1. ivan386
        16.08.2022 17:50

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


        1. sinhbad Автор
          16.08.2022 20:45

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


          1. balamutang
            17.08.2022 12:57

            Болванки сейчас уже не в каждом магазине купишь и в новых компах/ноутах приводов нет. микроSD - вот реальный транспорт, если угодно - можно шифровать архивы или файловую систему.

            Письма врядли вскрывают - никто конверты не переписывает, а вскрывать их массово не повреждая - невозможно.


            1. sinhbad Автор
              17.08.2022 19:10

              Письма врядли вскрывают - никто конверты не переписывает, а вскрывать их массово не повреждая - невозможно.

              Не смог найти подтверждение следующему факту в интернете, но где-то слышал, что с помощью спрея на основе фреона можно сделать письмо прозрачным на какое-то небольшое время (письмо можно обернуть в копировальную бумагу, чтобы не прочитали сообщение). А по поводу непереписывания конвертов, кажется, их всё-таки переписывают в рамках СОРМ, вот новость от 2015 года: https://habr.com/ru/news/t/356962/


  1. ahdenchik
    15.08.2022 21:47
    +1

    Не хватает защиты курьера от задержания с нежелательным транзитным контентом


    1. sinhbad Автор
      16.08.2022 09:43

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


      1. ahdenchik
        17.08.2022 15:21

        Непонятно каким образом это поможет. Решение нужно на уровне протокола.

        Кстати, вот старая идея на ту же тему: https://github.com/cheshirenet/cheshirenet


        1. sinhbad Автор
          17.08.2022 19:08

          Непонятно каким образом это поможет. Решение нужно на уровне протокола.

          Решения на уровне протокола будут использовать алгоритмы криптографии и/или стеганографии. Проект, который создал 1 человек, не может внедрить безопасное решение с криптографией. Любое известное ПО, связанное с криптографией, проходило аудиты, его проверяли много независимых организаций, и всё равно находили уязвимости. Поэтому мне больше нравится философия Unix, которая гласит, что лучше написать что-то узкоспециализированное, но оно будет работать хорошо. А решение на уровне протокола не является критически необходимым, а если оно необходимо, то репозиторий с письмами можно хранить на зашифрованном разделе VeraCrypt, особые параноики могут положить его в скрытый том, и тогда это решит проблему с нежелательным перехватом информации, потому что перехватывающая сторона не сможет получить содержимое писем (атаки вида "терморектального криптоанализа" мы здесь не рассматриваем, потому что им подвержены любые виды связи). Пользователи тоже должны сами позаботиться о своей безопасности, например, элементарно положив сообщение в запароленный архив, или использовать что-нибудь более модное, например, GPG. Как мне кажется, такая схема безопасности будет даже более прозрачной, чем, например, в Whatsapp ("Ну, мы внедрили протокол Signal, но исходный код клиентов и сервера вам не покажем") или в Telegram ("Да, у нас нет end-to-end шифрования, зато есть офигенная система синхронизации сообщений между устройствами, а по поводу безопасности, ну... верьте нам, что мы никогда не будем выдавать информацию третьим сторонам").

          Кстати, вот старая идея на ту же тему: https://github.com/cheshirenet/cheshirenet

          Спасибо, не натыкался на этот проект. Правда, первое, что бросается в глаза, это то, что это ПО распространяется в виде библиотеки, там нет никакого интерфейса пользователя (в ADPS есть две реализации: одна с GUI, а другая с CLI). А ещё там нет документации, в ADPS она есть.