Node-to-Node CoPy (NNCP) väljalase, turvaliste failide, e-posti ja käskude edastamiseks mõeldud instrumentide komplekt, mis töötab režiimis store-and-forward. Ühildub POSIX-iga ühilduvate operatsioonisüsteemidega. Instrumentide komplekt on kirjutatud Go keeles ja jagatakse GPLv3 litsentsi all.
Instrumentide komplekt on suunatud väikeste peer-to-peer sõprade vaheliste võrkude (kümnete sõlmede) loomisele staatilise marsruutimisega, et ohutult edastada faile režiimis fire-and-forget, failide taotlusi, e-posti ja käskude täitmise taotlusi. Kõik edastatavad paketid on krüpteeritud (end-to-end) ja autentitakse tuntud avalike võtmete abil. Kõikide vahepakettide jaoks rakendatakse sibulakrüpteerimist (nagu Tor). Iga sõlm võib toimida nii kliendi kui ka serverilt ja kasutada nii push kui ka poll käitumismudelit.
NNCP eristub UUCP ja FTN (FidoNet Technology Network) lahendustest, lisaks eespool mainitud krüpteerimisele ja autentimisele, pakub see kohe välja floppynet ja füüsiliselt eraldatud (air-gapped) arvutite võrkude toetamist, mis on ohutud kohalike ja avalike võrkude eest. NNCP eripära on ka lihtne integreerimine (koos UUCP-iga) olemasolevate postiserveritega, serveritega, nagu Postfix ja Exim.
NNCP võimalikud rakendusvaldkonnad hõlmavad e-kirjade saatmist / vastuvõtmist seadmetes, mis pole pidevalt internetiühendusega, failide edastamist ebastabiilsete võrgutingimuste korral, väga suurte andmemahtude ohutut edastamist füüsilistel andmekandjatel, Man-in-the-Middle rünnakute eest kaitstud isoleeritud andmeedastuse võrkude loomist, võrgusisese tsensuuri ja jälgimise vältimist. Kuna dešifreerimise võti on ainult saajal, ei saa kolmas isik sisu lugeda, isegi kui ta püüab saatmist vahele võtta, sõltumata paketide edastamisest võrgus või füüsiliste andmekandjate kaudu. Samuti ei võimalda digitaalse allkirja autentimine vale saatmise esitamist teise saatja nime all.
NNCP 8.8.0 uuendused võrreldes eelmise versiooniga (versioon 5.0.0):
- BLAKE2b hash as a means for checking file integrity is replaced by the so-called MTH: Merkle Tree-based Hashing, which uses BLAKE3 hash. This allows for the computation of the integrity of the encrypted part of the packet directly during the download, without requiring it to be read further. It also provides the ability for unlimited parallel integrity checks.
- The new format of encrypted packets is fully streaming-friendly when the size of the data is unknown in advance. The signal for the end of transmission, with an authenticated size, goes directly within the encrypted stream. Previously, to know the size of the transmitted data, it was necessary to save it to a temporary file. Therefore, the 'nncp-exec' team has removed the ‘-use-tmp’ option as it is no longer needed.
- The functions BLAKE2b KDF and XOF have been replaced with BLAKE3 to reduce the number of cryptographic primitives used and to simplify the code.
- The ability to discover other nodes on the local network through multicast broadcasting at the address 'ff02::4e4e:4350' has been introduced.
- Multicast groups (similar to echo conferences in FidoNet or newsgroups in Usenet) have been created, allowing data to be sent to multiple group participants with one packet, where each also retransmits the packet to other subscribers. Reading a multicast packet requires knowing the key pair (one must be a group participant), but retransmission can be performed by any node.
- Support for explicit acknowledgment of packet receipt has been introduced. The sender can choose not to delete the packet after sending, waiting for a special ACK packet from the receiver.
- Built-in support for the Yggdrasil overlay network has been added: online demons can act as full-fledged participants in the network, without the use of third-party Yggdrasil implementations and complete operation with the IP stack on a virtual network interface.
- Instead of structured strings (RFC 3339), the log uses recfile records, which can be handled using GNU Recutils utilities.
- Optionally, headers of encrypted packets can be stored in separate files in the subdirectory 'hdr/', significantly speeding up the operations of listing packets on file systems with large block sizes, such as ZFS. Previously, obtaining the packet header by default required reading a full 128KiB block from disk.
- Uute failide olemasolu kontrollimiseks võib valikuliselt kasutada kqueue ja inotify tuuma subsüsteeme, vähendades süsteemikutsungite arvu.
- Utilities hoiab vähem avatud faile, nende sulgemine ja taasavamise sagedus on harvem. Suure arvu paketiga võib varem sattuda avatud failide maksimaalse arvu piirangusse.
- Paljud käsklused on hakanud näitama edusamme ja operatsioonide täitmise kiirus, nagu allalaadimine/üleslaadimine, kopeerimine ja pakettide töötlemine (toss).
- Käsk «nncp-file» suudab saata mitte ainult üksikfaile, vaid ka kaustu, luues nende sisu jaoks reaalajas pax-arhiivi.
- Online utiliidid võivad valikuliselt kohe käivitada pakettide töötlemise protsessi (tossing) pärast paketi edukat allalaadimist, ilma et käivitada eraldi demooni «nncp-toss».
- Online teise osalise kutsumine võib valikuliselt toimuda mitte ainult taimeri sündmuse, vaid ka spooling-directorysse suunatud väljumispaketi ilmumise korral.
- Töötav versioon NetBSD ja OpenBSD operatsioonisüsteemides, peale varem toetatud FreeBSD ja GNU/Linuxi.
- «nncp-daemon» on täielikult kooskõlas UCSPI-TCP liidesega. Koos võimalusega logida määratud failidesse (näiteks seades «NNCPLOG=FD:4») on see täiesti sõbralik sarnaste daemontools utiliididega käivitamiseks.
- Projekti koostamine on täielikult üle viidud redo süsteemi.
Allikas: opennet.ru
