Рэліз NNCP 8.8.0, утыліт для перадачы файлаў/каманд у рэжыме 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 8.8.0, у параўнанні з папярэдняй навіной (версія 5.0.0):

  • Замест хэша BLAKE2b для праверкі цэласнасці файлаў задзейнічаны, так званы, MTH: Merkle Tree-based Hashing, які выкарыстоўвае хэш BLAKE3. Гэта дазваляе вылічаць цэласнасць зашыфраванай часткі пакета прама падчас дапампоўвання, не патрабуючы яе чытання ў наступным. Таксама гэта дае магчымасць неабмежаванага распаралельвання праверкі цэласнасці.
  • Новы фармат зашыфраваных пакетаў цалкам прыязны да струменевай перадачы, калі загадзя невядомы памер дадзеных. Сігналізацыя аб завяршэнні перадачы, з аўтэнтыфікаваным памерам, ідзе прама ўсярэдзіне зашыфраванага струменя. Перш, каб пазнаць памер перадаваных дадзеных, патрабавалася іх захаванне ў часовы файл. Так у каманды "nncp-exec" знікла опцыя "-use-tmp" за поўнай непатрэбнасцю.
  • Функцыі BLAKE2b KDF і XOF заменены на BLAKE3 для скарачэння колькасці выкарыстоўваных крыптаграфічных прымітываў і спрашчэнні кода.
  • З'явілася магчымасць выяўлення іншых нод у лакальнай сетцы праз мультывяшчальную рассылку па адрасе «ff02::4e4e:4350».
  • З'явіліся мультывяшчальныя групы (аналаг рэхаканферэнцый FidoNet або груп навін Usenet), якія дазваляюць адным пакетам адправіць дадзеныя мноству ўдзельнікаў групы, дзе кожны таксама рэтранслюе пакет астатнім падпісантам. Чытанне мультывяшчальнага пакета патрабуе ведання ключавой пары (трэба відавочна быць удзельнікам групы), але рэтрансляцыя можа выконвацца любой надай.
  • З'явілася падтрымка відавочнага пацверджання атрымання пакета. Адпраўнік можа не выдаляць пакет пасля адпраўкі, чакаючы атрыманні адмысловага ACK-пакета ад атрымальніка.
  • Убудаваная падтрымка overlay-сеткі Yggdrasil: online дэманы могуць выступаць паўнавартаснымі самастойнымі ўдзельнікамі сеткі, без выкарыстання іншых рэалізацый Yggdrasil і паўнавартаснай працы з IP стэкам на віртуальным сеткавым інтэрфейсе.
  • Замест структураваных радкоў (RFC 3339), часопіс выкарыстоўвае recfile-запісы, з якімі можна выкарыстоўваць утыліты GNU Recutils.
  • Апцыянальна загалоўкі зашыфраваных пакетаў могуць захоўваецца ў асобных файлах паддырэкторыі "hdr/", істотна паскараючы аперацыі атрымання спісу пакетаў на файлавых сістэмах з вялікім памерам блока, такіх як ZFS. Раней атрыманне загалоўка пакета патрабавала па змаўчанні чытання з дыска ўсяго 128KiB блока.
  • Праверка наяўнасці новых файлаў можа апцыянальна выкарыстоўваць падсістэмы ядра kqueue і inotify, робячы менш сістэмных выклікаў.
  • Утыліты трымаюць менш адчыненых файлаў, радзей адбываецца іх зачыненне і пераадкрыццё. Пры вялікай колькасці пакетаў раней можна было ўперціся ў абмежаванне на максімальную колькасць адчыненых файлаў.
  • Многія каманды сталі паказваць прагрэс і хуткасць выканання аперацый, такіх як запампоўка/выгрузка, капіраванне і апрацоўка (toss) пакетаў.
  • Каманда "nncp-file" можа адпраўляць не толькі адзінкавыя файлы, але і дырэкторыі, на лёце ствараючы pax-архіў з іх змесцівам.
  • Online утыліты, могуць апцыянальна адразу ж выклікаць працэс апрацоўкі пакетаў (tossing) пасля паспяховай запампоўкі пакета, без запуску асобнага дэмана "nncp-toss".
  • Online выклік іншага ўдзельніка можа апцыянальна адбывацца не толькі па падзеі спрацоўвання таймера, але і па факце з'яўлення выходнага пакета ў spool-дырэкторыі.
  • Забяспечана працаздольнасць пад NetBSD і OpenBSD АС, акрамя раней падтрымліваемых FreeBSD і GNU/Linux.
  • "nncp-daemon" цалкам сумяшчальны з інтэрфейсам UCSPI-TCP. Разам з магчымасцю часопісавання ў паказаны файлавы дэскрыптар (напрыклад выстаўляючы «NNCPLOG=FD:4»), ён цалкам прыязны для запуску пад падобнымі на daemontools утылітамі.
  • Зборка праекта поўнасцю пераведзена на сістэму redo.

Крыніца: opennet.ru

Дадаць каментар