Релиз NNCP 3.3, утилит для store-and-forward передачи файлов/почты/команд

Состоялся релиз Node-to-Node copy (NNCP), набора утилит для безопасной передачи файлов, электронной почты и команд для исполнения в режиме store-and-forward. Поддерживается работа на POSIX-совместимых операционных системах. Утилиты написаны на языке Go и распространяются под лицензией GPLv3+.

Утилиты ориентированы на помощь в построении небольших одноранговых friend-to-friend сетей (дюжины узлов) со статической маршрутизацией для безопасной передачи файлов в режиме fire-and-forget, запросов на файлы, электронной почты и запросов на выполнение команд. Все передаваемые пакеты зашифрованы (end-to-end) и явно аутентифицируются по известным публичным ключам знакомых. Луковое (как в Tor) шифрование применяется для всех промежуточных пакетов. Каждый узел может выступать как в роли клиента, так и сервера и использовать и push и poll модель поведения.

Отличием NNCP от решений UUCP и FTN (FidoNet Technology Network), кроме вышеупомянутого шифрования и аутентификации, является поддержка из коробки сетей флоппинет и компьютеров, физически изолированных (air-gapped) от небезопасных локальных и публичных сетей. Особенностью NNCP также является лёгкая интеграция (наравне с UUCP) с текущими почтовыми серверами, такими как Postfix и Exim.

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

Среди новшеств NNCP 3.3, по-сравнению с предыдущей новостью (версия 0.7), можно отметить:

  • Как и в UUCP, теперь можно делать удалённый вызов команд. Отправка почты стала удалённым выполнением команды sendmail. Например, это можно использовать для того, чтобы по узким каналам связи с низкой задержкой (например сотовая сеть) запросить удалённую систему сделать полное зеркалирование сайта/страницы и подготовить ответ для передачи по толстым каналам с большой задержкой (для копирования на диски/ленты);
  • Команда nncp-bundle позволяет создавать bundles пригодные для потоковой записи пакетов на ленты, компакт-диски и блочные устройства без файловых систем. Ранее невозможно было удобно обмениваться пакетами используя ленточные накопители без создания промежуточного архива;
  • Возможность создания .seen-файлов, отмечающих что заданный пакет был обработан ранее. Это позволяет обрабатывать огромные объёмы пакетов за несколько проходов чтения (с ленты, дисков) без их полного копирования в spool. Кроме того, позволяет избегать дублирования при обмене пакетами по нескольким параллельным каналам связи;
  • Включение NNCP в порты FreeBSD;
  • Отправитель может задать предпочитаемый приоритет для ответных пакетов на запросы файлов и исполнения команд;
  • Возможность переопределять промежуточные ноды через которые будет отправлен пакет прямо из командной строки, не меняя конфигурационный файл;
  • Алгоритм шифрования Twofish заменён на ChaCha20, существенно ускоряя работу на слабых процессорах;
  • Приоритеты пакетов, вместо целого числа 1–255, теперь можно задавать человекочитаемыми именами вида: NORMAL, BULK+20, PRIORITY-15, F+3;
  • Огромное количество поправок для удобства: возможность делать tossing только для заданного типа пакетов, возможность переопределять путь до spool директории, команда nncp-rm для удаления различных файлов из spool директории, прерывание низкоприоритетных online-передач более высокоприоритетными, и множество других.

© OpenNet