Node-to-Node CoPy (NNCP) er blevet udgivet, et værktøjssæt til sikker overførsel af filer, e-mails og kommandoer til udførelse i store og fremadskridende tilstande. Den understøtter drift på POSIX-kompatible operativsystemer. Værktøjerne er skrevet i Go og distribueres under GPLv3-licensen.
Værktøjerne er designet til at hjælpe med at opbygge små peer-to-peer netværk (dusinvis af noder) med statisk routing til sikker overførsel af filer i fire-and-forget mode, filanmodninger, e-mails og kommandoanmodninger. Alle overførte pakker er krypteret (end-to-end) og autentificeres eksplicit ved hjælp af kendte offentlige nøgler fra bekendte. Løgnet (som i Tor) kryptering anvendes til alle mellemliggende pakker. Hver node kan fungere både som klient og server og bruge både push og poll adfærd.
Forskellen mellem NNCP og UUCP samt FTN (FidoNet Technology Network), udover den nævnte kryptering og autentifikation, er understøttelsen af floppineter og computere, der fysisk er isoleret (air-gapped) fra usikre lokale og offentlige netværk, som en standard. Et særpræg ved NNCP er desuden nem integration (som med UUCP) med eksisterende mail servere, såsom Postfix og Exim.
Mulige anvendelsesområder for NNCP inkluderer organisering af afsendelse/modtagelse af post på enheder uden konstant internetforbindelse, filoverførsel under ustabile netværksforhold, sikker overførsel af meget store datamængder på fysiske medier, oprettelse af beskyttede netværk mod MitM-angreb, omgåelse af netværkscensur og overvågning. Da nøglen til dekryptering kun findes hos modtageren, kan en tredje part ikke læse indholdet, selv om de opsnapper forsendelsen, uanset leveringsveje gennem netværk eller via fysiske medier. Autentifikation gennem digital signatur gør det heller ikke muligt at danne en falsk forsendelse under dække af en anden afsender.
Blandt nyhederne i NNCP 8.8.0, sammenlignet med den tidligere version (5.0.0):
- I stedet for BLAKE2b-hash til at kontrollere filens integritet anvendes såkaldt MTH: Merkle Tree-baseret hashing, der bruger BLAKE3-hash. Det muliggør beregningen af integriteten af den krypterede del af pakken direkte under download, uden at det kræver, at den skal læses senere. Dette giver også mulighed for ubegrænset parallelisering af integritetskontrollen.
- Det nye format for krypterede pakker er helt venligt over for streaming, når størrelsen på dataene er ukendt på forhånd. Signaliseringen om afslutning af transmission, med den autentificerede størrelse, foregår direkte inden for den krypterede strøm. Tidligere krævede det at kende størrelsen på de transmitterede data at gemme dem i en midlertidig fil. Derfor er muligheden "-use-tmp" for teamet "nncp-exec" fjernet, da den ikke længere er nødvendig.
- Funktionerne BLAKE2b KDF og XOF er blevet erstattet med BLAKE3 for at reducere antallet af anvendte kryptografiske primitive og forenkle koden.
- Der er mulighed for at opdage andre noder i det lokale netværk via multicast ved adressen "ff02::4e4e:4350."
- Multicast-grupper er blevet introduceret (analog til echo-konferencerne fra FidoNet eller nyhedsgrupper fra Usenet), der muliggør at sende data i én pakke til mange gruppemedlemmer, hvor hver også videresender pakken til de øvrige abonnenter. At læse multicast-pakken kræver kendskab til nøgleparret (man skal være en eksplicit deltager i gruppen), men videresendelse kan ske af enhver node.
- Der er indbygget støtte til eksplicit bekræftelse af modtagelse af pakken. Afsenderen kan vælge ikke at slette pakken efter afsendelse, men vente på at modtage en særlig ACK-pakke fra modtageren.
- Yggdrasil overlay-netværk er indbygget: online daemoner kan fungere som fuldgyldige, autonome medlemmer af netværket, uden at bruge tredjepartsimplementationer af Yggdrasil og uden at kræve fuld integration med IP-stakken på det virtuelle netværksinterface.
- I stedet for strukturerede strenge (RFC 3339) bruger loggen recfile-poster, som kan arbejde med GNU Recutils-værktøjer.
- Valgfrit kan overskrifterne på de krypterede pakker opbevares i separate filer i undermappen "hdr/", hvilket væsentligt fremskynder operationer til at hente pakkeoversigter på filsystemer med store blokstørrelser som ZFS. Tidligere krævede hentningen af pakkeoverskriften som standard, at man læste hele 128KiB-blokken fra disken.
- Kontrol af tilgængeligheden af nye filer kan valgfrit bruge kernen kqueue og inotify subsystems, hvilket reducerer systemopkald.
- Værktøjerne holder færre åbne filer, hvilket gør, at de sjældnere lukkes og åbnes igen. Ved et stort antal pakker kunne man tidligere støde på begrænsningen for det maksimale antal åbne filer.
- Mange kommandoer begyndte at vise fremdrift og hastighed for operationer såsom downloading/uploading, kopiering og behandling (toss) af pakker.
- Kommandoen «nncp-file» kan sende ikke kun individuelle filer, men også mapper, mens den dynamisk opretter et pax-arkiv med deres indhold.
- Online-værktøjer kan valgfrit straks starte processen med at behandle pakker (tossing) efter en succesfuld download af pakken, uden at starte en separat daemon «nncp-toss».
- Online-opkald til en anden deltager kan valgfrit ske ikke kun ved en timer-udløb, men også ved ankomsten af en udgående pakke i spool-kataloget.
- Sikret drift under NetBSD og OpenBSD OS, udover tidligere understøttede FreeBSD og GNU/Linux.
- «nncp-daemon» er fuldt kompatibel med UCSPI-TCP-grænsefladen. Sammen med muligheden for at logge til den angivne filbeskrivelse (f.eks. ved at indstille «NNCPLOG=FD:4»), er den fuldt kompatibel med værktøjer, der ligner daemontools.
- Bygningen af projektet er helt overgået til redo-systemet.
Kilde: opennet.ru
