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

כאן מתערבבות שתי שאלות: כמה חומר מפתח הקובץ מאחסן, וכמה חזקה ההצפנה המוסכמת. רק השנייה מתארת את המנהרה.

מה המספר בכותרת באמת סופר

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

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

שתי קבוצות מפתחות בקובץ אחד

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

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

קריאת הפרופיל אומרת לכם איזה מצב יש לכם

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

ההבחנה הזו קובעת גם את התגובה לחשיפה. מפתח tls-auth שדלף אינו חושף את מפתחות השיחה, אבל הוא מאפשר לתוקף להזריק תעבורה לערוץ הבקרה, ולכן עדיין יש להחליפו. מפתח secret שדלף גרוע יותר, מפני שהוא היה החומר שהגן על הנתונים עצמם.

מה סקירת אבטחה צריכה לתעד

תעדו שלושה דברים בנפרד: ההגנה המוסכמת על ערוץ הנתונים, ההגנה על ערוץ הבקרה, ואיך העמיתים מאמתים זה את זה. שורה כמו data-ciphers AES-256-GCM מתארת רק את הראשון, ודוח שנעצר שם אינו יכול להשיב אם ערוץ הבקרה מוגן בכלל. קובץ המפתח הסטטי שייך לקטגוריה השנייה כשהוא משמש עם tls-auth או tls-crypt, ולאף אחת מהן כשהוא אינו משמש. סוקרים שמערבבים את הקטגוריות מבקשים קובץ מפתח גדול יותר כשמה שהם רוצים הוא הצפנה חזקה יותר.

אם הקובץ נחשף, סובבו והפיצו אותו מחדש דרך הערוץ המאושר. הוספת תווים לסוד שנפרץ אינה סיבוב, והיא משאירה את החומר החשוף תקף.

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

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