שחרור של NNCP 8.8.0, כלי עזר להעברת קבצים/פקודות במצב אחסון והעברה

שחרורו של Node-to-Node CoPy (NNCP), ערכת כלי עזר להעברת קבצים, דואר אלקטרוני ופקודות בצורה מאובטחת לביצוע במצב אחסון והעברה. תומך בהפעלה במערכות הפעלה תואמות POSIX. כלי השירות כתובים ב-Go ומופצים תחת רישיון GPLv3.

כלי עזר אלה נועדו לסייע בבניית רשתות קטנות של עמיתים (P2P) של חבר לחבר (עשרות צמתים) עם ניתוב סטטי להעברות קבצים מאובטחות מסוג "fire-and-forget", בקשות קבצים, דוא"ל ובקשות ביצוע פקודות. כל החבילות המועברות מוצפנות מקצה לקצה ומאומתות במפורש באמצעות מפתחות ציבוריים ידועים של העמיתים. הצפנת בצל (כמו Tor) מוחלת על כל החבילות הביניים. כל צומת יכול לפעול כלקוח או כלוחם. שרת ולהשתמש במודלים של התנהגות דחיפה ושל סקר.

NNCP שונה מפתרונות UUCP ו-FTN (רשת טכנולוגיית FidoNet), בנוסף להצפנה ולאימות שהוזכרו לעיל, בכך שהוא מספק תמיכה מוכנה לשימוש ברשתות דיסקט ומחשבים המבודדים פיזית (air-gapped) מרשתות מקומיות וציבוריות לא מאובטחות. NNCP כולל גם אינטגרציה קלה (כמו UUCP) עם שירותי דוא"ל קיימים. שרתים, כגון Postfix ו-Exim.

תחומי יישום אפשריים של NNCP כוללים ארגון שליחה/קבלת דואר למכשירים ללא חיבור קבוע לאינטרנט, העברת קבצים במצבים של חיבור רשת לא יציב, העברה מאובטחת של כמויות גדולות מאוד של נתונים במדיה פיזית, יצירת רשתות העברת נתונים מבודדות המוגנות מפני התקפות MitM, עקיפת צנזורה ומעקב ברשת. מכיוון שמפתח הפענוח נמצא רק בידי הנמען, ללא קשר לשאלה אם החבילה מועברת ברשת או באמצעות מדיה פיזית, צד שלישי אינו יכול לקרוא את התוכן, גם אם החבילה מיירטת. בתורו, אימות באמצעות חתימה דיגיטלית אינו מאפשר ליצור הודעה פיקטיבית במסווה של שולח אחר.

בין החידושים של NNCP 8.8.0, בהשוואה לחדשות הקודמות (גרסה 5.0.0):

  • במקום ה-hash BLAKE2b, מה שנקרא MTH: Merkle Tree-based Hashing, המשתמש ב-hash BLAKE3, משמש לבדיקת תקינות הקבצים. זה מאפשר לך לחשב את שלמות החלק המוצפן של החבילה ממש במהלך ההורדה, מבלי לדרוש אותה בעתיד. זה גם מאפשר הקבילה בלתי מוגבלת של בדיקות תקינות.
  • פורמט החבילות המוצפן החדש ידידותי לחלוטין לסטרימינג כאשר גודל הנתונים אינו ידוע מראש. האות על השלמת ההעברה, עם גודל מאומת, עובר ישירות לתוך הזרם המוצפן. בעבר, כדי לגלות את גודל הנתונים המועברים, היה צורך לשמור אותם בקובץ זמני. אז הפקודה "nncp-exec" איבדה את האפשרות "-use-tmp" מכיוון שהיא מיותרת לחלוטין.
  • הפונקציות BLAKE2b KDF ו-XOF הוחלפו ב-BLAKE3 כדי לצמצם את מספר הפרימיטיבים ההצפנה בשימוש ולפשט את הקוד.
  • כעת ניתן לזהות צמתים אחרים ברשת המקומית באמצעות שידור רב לכתובת "ff02::4e4e:4350".
  • קבוצות ריבוי שידור הופיעו (בדומה לכנסים של FidoNet הד או קבוצות חדשות של Usenet), המאפשרות לחבילה אחת לשלוח נתונים למספר חברי קבוצה, כאשר כל אחד מהם גם מעביר את החבילה לשאר החותמים. קריאת חבילת ריבוי שידור מצריכה ידע על צמד המפתחות (עליך להיות חבר במפורש בקבוצה), אך ניתן לבצע העברה על ידי כל צומת.
  • כעת יש תמיכה באישור מפורש של קבלת מנות. השולח עשוי שלא למחוק את החבילה לאחר השליחה, ימתין עד שיקבל חבילת ACK מיוחדת מהמקלט.
  • תמיכה מובנית ברשת שכבת העל של Yggdrasil: דמונים מקוונים יכולים לפעול כמשתתפי רשת עצמאיים מן המניין, מבלי להשתמש בהטמעות Yggdrasil של צד שלישי ומבלי לעבוד באופן מלא עם מחסנית ה-IP על ממשק רשת וירטואלית.
  • במקום מחרוזות מובנות (RFC 3339), היומן משתמש בערכי recfile, שניתן להשתמש בהם עם כלי השירות של GNU Recutils.
  • לחלופין, ניתן לאחסן כותרות מנות מוצפנות בקבצים נפרדים בספריית המשנה "hdr/", לזרז משמעותית את פעולות אחזור רשימת המנות במערכות קבצים בעלות גדלי בלוקים גדולים, כגון ZFS. בעבר, אחזור כותרת החבילה דרש קריאה רק בלוק של 128KiB מהדיסק כברירת מחדל.
  • בדיקת קבצים חדשים יכולה להשתמש ב-kqueue וללא מידע על תת-מערכות הליבה, ולבצע פחות קריאות מערכת.
  • כלי עזר מחזיקים פחות קבצים פתוחים וסוגרים ופותחים אותם מחדש בתדירות נמוכה יותר. עם מספר רב של חבילות, בעבר ניתן היה להיתקל במגבלה על המספר המרבי של קבצים פתוחים.
  • צוותים רבים החלו להראות את ההתקדמות והמהירות של פעולות כגון הורדה/העלאה, העתקה ועיבוד (השלכת) חבילות.
  • הפקודה "nncp-file" יכולה לשלוח לא רק קבצים בודדים, אלא גם ספריות, וליצור ארכיון pax עם התוכן שלהם תוך כדי תנועה.
  • כלי עזר מקוונים יכולים באופן אופציונלי להפעיל מיד זריקת מנות לאחר הורדת חבילה בהצלחה, מבלי להפעיל דמון נפרד מסוג "nncp-toss".
  • שיחה מקוונת למשתתף אחר יכולה להתרחש באופן אופציונלי לא רק כאשר טיימר מופעל, אלא גם כאשר מופיעה חבילה יוצאת בספריית הסלולר.
  • מבטיח תפעול תחת NetBSD ו-OpenBSD OS, בנוסף ל-FreeBSD ו-GNU/Linux שנתמכו בעבר.
  • "nncp-daemon" תואם באופן מלא לממשק UCSPI-TCP. יחד עם היכולת להיכנס אל מתאר קובץ מוגדר (לדוגמה על ידי הגדרת "NNCPLOG=FD:4"), זה ידידותי לחלוטין לרוץ תחת כלי עזר דמויי daemontools.
  • הרכבת הפרויקט הועברה לחלוטין למערכת החזרה.

מקור: OpenNet.ru