ניתוב רב-קפיצות ב-dVPN: מדריך לארכיטקטורות מבוזרות
TL;DR
יסודות ניתוב בצל בעולם P2P
האם תהיתם אי פעם מדוע ה-VPN ה"פרטי" שלכם מרגיש כמו בית זכוכית? אם אתם משתמשים רק בשרת אחד, הספק רואה כל מה שאתם עושים - זהו נקודת כשל יחידה ומסיבית. ניתוב רב-קפיצות (Multi-hop routing) מתקן זאת על ידי הקפצת הנתונים שלכם דרך מספר צמתים, כך שלאף אחד אין תמונה מלאה.
בעיקרון, במקום קו ישר, התעבורה שלכם עוברת בנתיב זיג-זג. זה נפוץ ברשתות מֶשׁ (Mesh networks) שבהן הכיסוי עולה על הטווח של צומת בודד.
- הצפנה בשכבות: כל צומת (או קפיצה) מקלף רק שכבה אחת של ה"בצל", ויודע רק מאיפה הגיע הפַּקֶט (packet) ולאן הוא הולך הלאה.
- אין אמון מרכזי: בהתקנת P2P, אינכם מסתמכים על מרכז נתונים ארגוני אחד; אתם משתמשים ברשת צמתים מבוזרת.
- אנרגיה ויעילות: זה לא רק בשביל התגנבות; לפעמים קפיצה בין צמתי רדיו קרובים יותר היא למעשה חסכונית יותר באנרגיה מאשר שיגור אות למגדל מרוחק.
ראיתי אנשים שמנסים לעשות זאת בעצמם עם מכולות מקוננות (nested containers), אבל ארכיטקטורות מבוזרות הופכות את זה למובנה. קשה הרבה יותר לכל אחד לעקוב אחריכם כשהנתיב משתנה כל הזמן. כאן נכנס לתמונה DePIN (רשתות תשתית פיזיות מבוזרות), שבעצם מדובר באנשים שמשתפים את החומרה שלהם כדי לבנות רשתות בעולם האמיתי.
בהמשך, נבחן את הצד הקריפטוגרפי...
הצפנה בשכבות ורשת VPN מבוזרת
תחשבו על הצפנה בשכבות כמו בבושקות רוסיות, אבל עבור מנות הנתונים שלכם. כדי שזה יעבוד בלי לתת אמון באף אחד, המערכת משתמשת בלחיצת יד קריפטוגרפית אסימטרית – בדרך כלל משהו כמו חילופי מפתחות דיפי-הלמן באמצעות עקום אליפטי (ECDH). לפני שנתונים עוברים, הלקוח שלכם משתמש במפתחות הציבוריים של כל צומת כדי לנהל משא ומתן על "מפתח סשן" ייחודי לכל מעבר (hop). בצורה זו, המחשב שלכם עוטף את הנתונים בשלוש שכבות של הצפנה עוד לפני שהם עוזבים את הבית שלכם. הצומת הראשון יכול לפתוח רק את השכבה החיצונית כדי לראות לאן לשלוח את זה הלאה, אבל הוא לא יכול לראות את ההודעה עצמה או את היעד הסופי.
- מפתחות ספציפיים למעבר: הלקוח שלכם מנהל משא ומתן על מפתחות נפרדים עם כל ממסר; צומת הכניסה לא יכול לראות מה צומת היציאה עושה.
- קבוצות אנונימיות: על ידי ערבוב התעבורה שלכם עם אלפים אחרים, זרמים בודדים הופכים לבלתי ניתנים להבחנה.
- מגוון צמתים: מכיוון שאלה לא בבעלות חברה אחת, אין "מתג ראשי" כדי לרשום את ההיסטוריה שלכם.
אני בדרך כלל ממליץ לאנשים לדבוק ב-WireGuard בגלל המהירות, אם כי חשוב לזכור ש-WireGuard הוא פרוטוקול מנהור נקודה לנקודה. הוא לא עושה ריבוי מעברים בעצמו כמו Tor. כדי לקבל אנונימיות אמיתית, מפתחים צריכים לעטוף את WireGuard בתוך מסגרת מותאמת אישית שמטפלת בלוגיקת הניתוב בצורת בצל. אם אתם מריצים צומת על תיבת לינוקס, אתם יכולים לראות את הכתמים המוצפנים עוברים בלי שיהיה לכם מושג מה יש בפנים.
התחום מתקדם במהירות, במיוחד עם שווקי רוחב פס מבוססי בלוקצ'יין. אני בדרך כלל עוקב אחר פרויקטים שמפרסמים את ביקורות האבטחה שלהם בקוד פתוח כי, בכנות, אם אני לא יכול לקרוא את קוד המקור, אני לא סומך על טענות הפרטיות.
בהמשך, נצלול לאיך הצמתים האלה מקבלים תשלום על הטרחה שלהם...
תמריצים לרשת באמצעות רוחב פס מנוֹכָּל
למה שמישהו ישאיר את המחשב שלו דולק כל הלילה רק כדי לנתב את התעבורה של מישהו אחר? בעבר, עשית את זה "למען המטרה", אבל עכשיו אנחנו משתמשים ברוחב פס מנוֹכָּל כדי שזה יהיה שווה את המאמץ. זה בעצם מודל Airbnb עבור צינור האינטרנט שלך.
- כריית רוחב פס: אתה מפעיל צומת, והרשת משלמת לך בקריפטו בהתאם לכמות הנתונים שהצלחת להעביר בהצלחה.
- הוכחת רוחב פס: פרוטוקולים משתמשים באתגרים קריפטוגרפיים כדי להוכיח שאתה לא מזייף את המהירויות שלך. זה ענק לעצירת מתקפות סיביל (Sybil attacks), שבהן בחור אחד מנסה ליצור 1,000 צמתים מזויפים כדי לשלוט ברשת. על ידי דרישת "הימור" או הוכחת עבודה, זה הופך להיות יקר מדי עבור האקר לזייף הרבה זהויות.
- תמחור דינמי: בבורסה מבוזרת, אם צומת באזור עם צנזורה גבוהה יורד, התגמולים עבור צמתים חדשים שם מזנקים.
ראיתי בחורים בתחומי הקמעונאות והפיננסים משתמשים בזה כדי לגרד נתונים מבלי להיחסם. בהמשך, נבחן את הטרייד-אופים והיישומים בעולם האמיתי.
פשרות ויישומים ברשתות DePIN
תראו, ריבוי צמתים אינו פתרון קסם; אם אתם מעבירים תעבורה דרך שלושה צמתים ברחבי העולם, הפינג שלכם ייפגע. זהו פשרה קלאסית שבה אתם מקריבים מהירות גולמית עבור ריבונות דיגיטלית אמיתית.
כל "קפיצה" נוספת מוסיפה עיכובים של מילישניות בגלל תקורה של הצפנה ומרחק פיזי. אמנם WireGuard מהיר, אך הוא לא נבנה במקור עבור ניתוב בסגנון onion. כדי לתקן זאת, פרויקטים מהדור הבא של DePIN מייעלים את בחירת הצמתים על סמך קרבה או משתמשים בפרוטוקולים כמו Sphinx כדי לשמור על גדלי מנות אחידים, כך שאף אחד לא יוכל לנחש מה יש בפנים על סמך תזמון.
יישומים בעולם האמיתי:
- שירותי בריאות: שיתוף מאובטח של רשומות מטופלים בין מרפאות ללא דליפה של מסד נתונים מרכזי.
- קמעונאות: מניעת מעקב של מתחרים אחר גירוד מלאי באמצעות רוטציה של כתובות IP מבוזרות.
- פיננסים: סוחרי תדירות גבוהה המשתמשים ברשתות mesh כדי להימנע מצווארי בקבוק של בורסה מרכזית.
הניצחון האמיתי הוא להפוך את הרשת לבלתי ניתנת להריסה. מכיוון שאין מנכ"ל מרכזי או API שאפשר להוציא צו שיפוטי נגדו, חלופה מבוזרת לספק שירותי אינטרנט נשארת פעילה גם כאשר ממשלות מנסות לנתק אותה.
בכנות, אנחנו בונים כאן רשת עמידה יותר. זה מבולגן, אבל זה שלנו.