הסקיצה שמה את המפתח הפרטי של WireGuard במערך תווים, והמנהרה עובדת, ולכן השאלה חוזרת ועולה. ההחלטה שעליכם לקבל אינה «האם זה בטוח» אלא «איזה משלושה תנאים חל על הפריסה הזו». ואלה הם: מי יכול להחזיק את המכשיר פיזית, מה נותן קריאת פלאש ברכיב שלכם, והאם הצי חולק מפתח אחד או שכל יחידה נושאת מפתח משלה. ענו על אלה והתכנון ייגזר, כי כל תנאי משנה את עלות המפתח שדלף, לא את העובדה שהוא יכול לדלוף.

מה המפתח מתיר

WireGuard מאמת עמיתים באמצעות מפתח ציבורי. השרת ממפה את המפתח הציבורי של כל עמית לכתובת ולרשימת AllowedIPs, ולכן המפתח הפרטי הוא מה שמאפשר ללקוח לשלוח תעבורה מאותה כתובת.

אותה רשומה קובעת גם לאילו יעדים המכשיר יכול להגיע, ולכן מפתח שדלף חושף את הרשת שמאחורי המנהרה וגם את כתובת המנהרה.

תנאי ראשון: מי יכול להחזיק את המכשיר

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

הכריעו בתנאי הזה לפני השניים האחרים, כי הוא קובע את התקציב לשניהם.

תנאי שני: מה נותנת קריאת פלאש

כל מי שיכול לקרוא את תמונת הפלאש משחזר מפתח שנשמר כליטרל, בין דרך חיבור דיבוג, קובץ עדכון, גיבוי או יחידה שהוחזרה. הצפנת פלאש מייקרת שפיכה ישירה, והתיעוד של ESP-IDF מתאר מה התכונה מכסה עבור רכיב ותצורה נתונים. היא לא הופכת את המפתח לבלתי ניתן לחילוץ בכל מודל תקיפה, והיא לא עושה דבר למקרה שבו המכשיר ביד. התייחסו אליה כשכבה אחת שמשנה עלות, לא כתשובה.

קראו את תיעוד הפלטפורמה עבור השבב והתצורה המדויקים שלכם לפני שאתם טוענים לתכונה בסקירת תכנון.

תנאי שלישי: שימוש חוזר בכל הצי

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

אם הצי הוא חמש יחידות על שולחן, שיתוף מפתח עשוי להיות חילוף סביר. אם הוא חמש מאות בשטח, זה בכלל לא חילוף.

דפוס הרישום שהופך מפתחות לכל מכשיר למעשיים

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

זהו שירות קטן, והוא ההבדל בין צי שאפשר לבקר לבין צי שאפשר רק לצרוב מחדש.

זמן, נקודות קצה וההחלטה

הדוגמה מסנכרנת זמן לפני הפעלת המנהרה, וזה חשוב מעבר ל־TLS: לחיצות הידיים של WireGuard נושאות חותמת זמן להגנה מפני שידור חוזר, ולכן מכשיר שעולה עם שעון שגוי עלול לקבל לחיצות ידיים שנדחו. נקודת הקצה היא שם מארח, מה שמכניס את ה־DNS לנתיב האמון למרות שהמפתח הציבורי של השרת עדיין מאמת את העמית. כתובת שגויה מבזבזת ניסיונות ומגלה מתי המכשיר מחובר. טפלו בשניהם לפני שתתווכחו על המפתח.

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

מאמרים קשורים