安全なファイル転送、電子メール、およびストアアンドフォワードコマンド実行のためのユーティリティ セットである Node-to-Node CoPy (NNCP) がリリースされました。 POSIX 互換オペレーティング システムでの操作をサポートします。ユーティリティは Go で記述されており、GPLv3 ライセンスの下でライセンスされます。
これらのユーティリティは、静的ルーティングを用いた小規模なピアツーピアのフレンドツーフレンドネットワーク(数十ノード)の構築を支援するために設計されており、安全なファイアアンドフォーゲットファイル転送、ファイルリクエスト、メール、コマンド実行リクエストを実現します。送信されるすべてのパケットはエンドツーエンドで暗号化され、ピアの既知の公開鍵を使用して明示的に認証されます。すべての中間パケットには、TorのようなOnion暗号化が適用されます。各ノードは、クライアントまたはホストとして動作できます。 サーバー プッシュとポーリングの両方の動作モデルを使用します。
NNCPは、前述の暗号化と認証機能に加え、フロッピーネットワークや、安全でないローカルネットワークやパブリックネットワークから物理的に隔離された(エアギャップされた)コンピュータをすぐに利用できるという点で、UUCPやFTN(FidoNet Technology Network)ソリューションとは異なります。NNCPは、UUCPと同様に、既存の電子メールサービスとの容易な統合も特徴としています。 サーバーPostfix や Exim など。
NNCP の適用分野としては、インターネットに常時接続されていないデバイスへのメールの送受信の組織化、ネットワーク接続が不安定な状況でのファイル転送、物理メディアでの大量のデータの安全な転送、MitM 攻撃から保護された分離されたデータ転送ネットワークの作成、ネットワーク検閲と監視の回避などが考えられます。復号化キーは受信者のみが持つため、ネットワーク経由または物理メディア経由のパケットの配信経路に関係なく、第三者がメッセージを傍受したとしても内容を読み取ることはできません。逆に、デジタル署名による認証では、別の送信者を装った偽のメッセージの作成は許可されません。
NNCP 8.8.0 の新機能には、以前のリリース (バージョン 5.0.0) と比較したものが以下のとおりあります。
- ファイルの整合性をチェックするには、BLAKE2b ハッシュの代わりに、BLAKE3 ハッシュを使用する、いわゆる MTH: Merkle Tree-based Hashing が使用されます。これにより、後で読み取る必要がなく、ダウンロード中にパケットの暗号化された部分の整合性を直接計算できるようになります。これにより、整合性チェックの無制限の並列化も可能になります。
- 新しい暗号化パケット形式は、データサイズが事前に分からない場合でも、ストリームに完全に対応しています。認証されたサイズを含む転送終了のシグナルは、暗号化ストリーム内に直接送信されます。以前は、転送されたデータのサイズを確認するには、一時ファイルに保存する必要がありました。そのため、「nncp-exec」コマンドでは「-use-tmp」オプションは完全に不要になったため削除されました。
- BLAKE2b の KDF および XOF 関数は、使用される暗号化プリミティブの数を減らし、コードを簡素化するために BLAKE3 に置き換えられました。
- アドレス「ff02::4e4e:4350」へのマルチキャストを介してローカル ネットワーク内の他のノードを検出できるようになりました。
- マルチキャストグループ(FidoNetのエコー会議やUsenetのニュースグループに類似)が登場し、1つのパケットを複数のグループメンバーに送信できるようになりました。各メンバーは、他の署名者にパケットを中継します。マルチキャストパケットを読み取るには、鍵ペアの知識が必要です(明示的にグループのメンバーである必要があります)。ただし、中継はどのノードでも実行できます。
- パケット受信の明示的な確認のサポートが追加されました。送信者は、受信側からの特別な ACK パケットの受信を待機しながら、パケットを送信した後にそのパケットを削除することはできません。
- Yggdrasil オーバーレイ ネットワークの組み込みサポート: オンライン デーモンは、サードパーティの Yggdrasil 実装を使用せずに、本格的な独立したネットワーク 参加者として機能し、仮想ネットワーク インターフェイス上の IP スタックと本格的に連携できます。
- ログは、構造化された行 (RFC 3339) の代わりに、GNU Recutils ユーティリティで使用できる recfile レコードを使用します。
- オプションで、暗号化されたパケット ヘッダーを「hdr/」サブディレクトリ内の個別のファイルに保存できるため、ZFS などの大きなブロック サイズのファイル システムでのパケット リスト操作が大幅に高速化されます。以前は、パケット ヘッダーを取得するには、デフォルトでディスクから 128KiB ブロックのみを読み取る必要がありました。
- 新しいファイルのチェックでは、オプションで kqueue および inotify カーネル サブシステムを使用できるため、システム コールが少なくなります。
- ユーティリティが開いているファイルの数が少なくなり、ファイルが閉じられて再度開かれる頻度も少なくなります。以前は、パッケージの数が多いと、開いているファイルの最大数の制限に達する可能性がありました。
- 多くのチームが、パッケージのダウンロード/アップロード、コピー、処理(トス)などの操作の進捗と速度を示し始めました。
- 「nncp-file」コマンドは、単一のファイルだけでなくディレクトリも送信でき、その内容を含む pax アーカイブを即座に作成します。
- オンライン ユーティリティは、オプションで、パッケージのダウンロードが成功した後、別の「nncp-toss」デーモンを起動せずに、すぐにトス プロセスを呼び出すことができます。
- 別の参加者へのオンライン呼び出しは、タイマー トリガー イベントだけでなく、スプール ディレクトリに送信パケットが出現したときにもオプションで発生することがあります。
- これまでサポートされていた FreeBSD および GNU/Linux に加えて、NetBSD および OpenBSD OS でも機能が保証されました。
- 「nncp-daemon」は、UCSPI-TCP インターフェースと完全に互換性があります。指定されたファイル記述子にログを記録する機能(たとえば、「NNCPLOG=FD:4」を設定する)と組み合わせると、daemontools のようなユーティリティで実行するのに非常に便利です。
- プロジェクトアセンブリは、やり直しシステムに完全に転送されました。
出所: オープンネット.ru
