OpenVPN אומר ש-ncp-disable אינו מוכר: מה החליף אותו?
ncp-disable מעולם לא נועד לכבות הצפנה, ו-2.6 הסיר את האפשרות. גלו איזה קובץ בינארי הפיק את השגיאה, ותקנו את מדיניות data-cipher בשני הצדדים.
הלקוח מסרב לעלות עם שגיאת אפשרויות שמזכירה את ncp-disable, בעוד הפרופיל עבד במחשב הקודם. ההודעה הזו אינה אומרת שהאפשרות נכתבה בשגיאה או שההצפנה שבורה. היא אומרת שהקובץ הבינארי שלפניכם כלל אינו מכיר את ההוראה, ולכך יש שתי סיבות שונות מאוד. איזו מהן חלה קובעת אם תערכו את הפרופיל או תחליפו את הלקוח.
השגיאה יכולה לבוא מקובץ בינארי חדש יותר
שגיאת אפשרות לא מזוהה נוגעת למנתח, לא למנהרה. OpenVPN 2.4 הוסיף פרמטרי הצפנה ניתנים למשא ומתן, 2.5 הכריז על המתג שכיבה אותם כמיושן, ו-2.6 הסיר אותו לחלוטין. לכן פרופיל שנכתב עבור 2.3 או 2.4 נכשל בלקוח נוכחי, גם אם דבר בקובץ לא השתנה. הגרסה שמתלוננת חדשה יותר, לא ישנה יותר.
בררו איזה קובץ הרצה הפיק את ההודעה לפני שתערכו משהו. לקוח שולחני נושא מנוע משלו, בעוד קובץ בינארי של שורת פקודה המותקן בנפרד יש לו גרסה משלו. השניים יכולים שלא להסכים באותו מחשב.
openvpn --version מכריע בכך עבור הקובץ הבינארי שאתם בודקים. ייתכן שלקוח עם ממשק גרפי לא יציג את הפקודה, ואז קראו את מסך אודות או את גרסת הספרייה המצורפת.
מה ההוראה באמת שלטה בו
ההוראה כיבתה את המשא ומתן על פרמטרים קריפטוגרפיים, כך ששני הקצוות נפלו חזרה להתנהגות בחירה ישנה יותר שהונחתה על ידי ההגדרה cipher. היא מעולם לא כיבתה הצפנה, ומעולם לא הפכה את המנהרה לטקסט גלוי. קריאתה כמתג אבטחה היא הפנייה השגויה הראשונה, והיא מובילה לשינויים שהופכים את החיבור לגרוע יותר ולא לטוב יותר.
ברגע שקיים משא ומתן, השאלה המקבילה היא אילו צפנים כל צד מוכן להשתמש בהם. זו שאלת מדיניות, והמדיניות חיה ב-data-ciphers מ-2.5 ואילך.
השם הישן ncp-ciphers שייך ל-2.4. ערבוב שני השמות בין הצדדים הוא מקור נפוץ לכשלי משא ומתן חד-כיווניים. פרופיל שנושא את שניהם הוא פרופיל שערכו שני אנשים בזמנים שונים.
החליפו את המדיניות, לא את האיות
הגדירו data-ciphers בשני הצדדים עם בחירה משותפת מכוונת, והשאירו את הרשימה קצרה מספיק כדי שמבקר יוכל לחשוב עליה. שינוי שורה שרירותית אחת לא מוכיח דבר; התוצאה תלויה בחיתוך של שתי הרשימות ובמה שמחסנית ה-TLS תומכת בו. אשרו שהצדדים מסכימים בקריאת התוצאה שנדונה ולא בתצורה. לאחר מכן כתבו את שתי הרשימות ברשומת הפריסה כדי שהשינוי הבא יתחיל ממצב ידוע.
עדכנו את הפרופיל דרך הבעלים שלו. הוספת אפשרות התעלמות כדי להסתיר הוראה מיושנת משאירה את שאלת המדיניות ללא מענה.
אם צד ישן יותר באמת צריך טיפול בתאימות, הגבילו אותו לפריסה ההיא. שחזור התנהגות מיושנת ברמה גלובלית אינו תנאי מוקדם לחיבור צדדים מודרניים. החריגה צריכה לנקוב בשם הצד שלמענו היא קיימת.
שתי שורות שנראות כמו רשימת צפנים אך אינן
ערימת שתי שורות צופן אינה משחזרת את המשא ומתן, והתוצאה היא פרופיל שנראה כמו רשימה אך מתנהג כמו ערך יחיד. שורה שמציינת AES-256-CBC והבאה שמציינת CBC היא ניסיון נפוץ. CBC לבדו מציין מצב ולא אלגוריתם, ולכן מנתח עשוי לקבל אותו במקום אחד ולדחות אותו במקום הבא. הוראות cipher חוזרות מגדירות את אותה אפשרות פעמיים במקום לצבור מועמדים.
בדקו שמות מתקבלים עם openvpn --show-ciphers על הקובץ הבינארי המיועד במקום להעתיק רשימה ממדריך שנכתב לענף אחר. הרשימה משתנה בין מהדורות. שם תקף בענף אחד אינו בהכרח תקף בשני.
אם המטרה הייתה השוואת ביצועים, תעדו את האלגוריתמים ואת עומס העבודה. מעבר ל-CBC אינו מדידה של היעדר הצפנה.
בדקו מה החיבור באמת ניהל משא ומתן עליו
הקימו חיבור חדש וקראו את שורת ערוץ הנתונים ביומן, שמציינת את הצופן שבשימוש. חבילת ערוץ הבקרה נקבעת בנפרד, ולכן הרשימה המותרת בקובץ מציגה רק מה שהוצע. כאשר שני הצדדים בחרו משהו שלא ציפיתם לו, הרשימות הן המקום להסתכל בו ולא ממשק המנהרה. אשרו את התוצאה בחיבור שני לאחר כל שינוי, כי הפעלה מחדש אחת עשויה לעשות שימוש חוזר בהפעלה שמורה במטמון.
שמרו את התוצאה שנדונה ברשומת הפריסה לצד גרסת הפרופיל. זו העובדה שעונה על השאלה הבאה איזה צופן באמת מגן על התעבורה.