שני הקצוות אומרים AES-128 והמנהרה עדיין מסרבת להיבנות. CBC ו-GCM הם המרות שונות שבמקרה חולקות אותו אורך מפתח, ולקוח שמציע אחת אינו מספק שער שמקבל רק את האחרת. המילה AES מתארת משפחה, לא הסכם.

יש גם ציר שני, והוא זה שמייצר את השגיאות המבלבלות.

שתי שכבות, שתי רשימות עצמאיות

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

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

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

קראו את השגיאה לצד ההצעות

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

swanctl --list-conns
swanctl --list-sas
journalctl -u strongswan -n 60 --no-pager

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

השאירו את CBC ו-GCM כחלופות נפרדות

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

proposals = aes128gcm16-prfsha256-ecp256, aes128-sha256-ecp256
esp_proposals = aes128gcm16-ecp256

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

הצעת ESP אינה הצעת IKE בשם אחר

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

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

אמתו את שתי המערכות, ואז חידוש מפתח

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

שמרו את הראיה הזו עם השינוי. התנתקות חוזרת זקוקה לרשומת ההחלפה הכושלת שלה לפני שמישהו מאשים טיימר או פגם בפלטפורמה.

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