כמה סכומי בדיקה יש בחבילת VPN? זה תלוי
המספר תלוי בגרסאות ה-IP, בפרוטוקול הנישא ובתבנית ההגנה. סכומי בדיקה של כותרת, של השכבה העליונה ותגי שלמות שונים.
הטענה שחבילת VPN נושאת בדיוק שני סכומי בדיקה נשמעת מסודרת והיא שגויה לעתים די קרובות כדי שיהיה שווה לפרק אותה. המספר תלוי באילו גרסאות IP מופיעות, איזה פרוטוקול תעבורה נישא ואיזו תבנית הגנה המנהרה משתמשת בה. סכום בדיקה של כותרת, סכום בדיקה של השכבה העליונה ותג שלמות קריפטוגרפי הם שלושה מנגנונים עם שלושה תחומים. ספירתם מתחילה בסימון מה כל אחד מהם מכסה.
בדקו אילו גרסאות IP נמצאות באמת על החוט
כותרות IPv4 נושאות סכום בדיקה של כותרת באורך 16 סיביות, וכותרות IPv6 אינן נושאות דבר כזה. העובדה האחת הזו משנה את המספר בכל מנהרה, כי עטיפת IPv4 בתוך IPv6 ועטיפת IPv6 בתוך IPv4 יוצרות מסמכים שונים. מנהרה יכולה לשאת את שתי המשפחות בו-זמנית, ואז כיוון אחד עשוי להכיל שדה שהשני חסר. קבעו את הגרסאות לפני שסופרים משהו.
כתבו את הפריסה כרשימת כותרות ולא כתמונה. הסדר חשוב בקריאת לכידה, והנוכחות או היעדר של שדה סכום הבדיקה הוא הדבר הראשון שיש לסמן.
outer IPv6 | ESP | inner IPv6 | UDP | application data
outer IPv4 | ESP | inner IPv4 | TCP | application data
בשורה הראשונה אין סכום בדיקה של כותרת IP בשום מקום בכותרות ה-IP שלה, ואילו בשנייה יש שניים כששתי הכותרות הן IPv4. אותה טכנולוגיית מנהרה, מספר שונה, ואף אחת מהשורות אינה תבנית חוט מלאה.
בדקו מה כל סכום בדיקה מכסה
הכיסוי הוא החלק שאנשים מדלגים עליו, והוא מה שעושה מספר להגיוני. סכום בדיקה של כותרת IPv4 מגן על הכותרת ולא על דבר אחר, ולכן אינו אומר דבר על המטען שמאחוריה. סכום בדיקה של UDP מעל IPv6 מכסה כותרת מדומה וכן את כותרת ה-UDP והמטען, כלומר הוא מגיע אל החבילה הנישאת כשהדטה-גרם עובר במנהרה. ל-TCP יש סכום בדיקה משלו עם תלות דומה בכותרת המדומה. אלה שלושה תחומים שונים אף שכל השלושה נקראים סכומי בדיקה.
RFC 791 מגדיר את בדיקת כותרת IPv4 ואת חישובה מחדש בכל קפיצה, ו-RFC 8200 מגדיר את הטיפול בשכבה העליונה מעל IPv6 כולל הכותרת המדומה. אף אחד מהמסמכים אינו אומר שחבילת VPN מכילה מספר קבוע של סכומי בדיקה, משום שאף אחד מהם אינו מתאר מנהרה.
tshark -r capture.pcap -Y "ip.proto == 50" -V | grep -i checksum
בדקו את הגנת השלמות בנפרד
שלמות ESP היא הגנה קריפטוגרפית עם כיסוי משלה וייצוג שתלוי באלגוריתם. היא אינה סכום בדיקה של IP או UDP בשם אחר, ואורכה משתנה לפי המבנה הנבחר. בדיקת שלמות מכסה חלק מוגדר מהחבילה, שעשוי לכלול את כותרת ESP וחלק מהמטען בהתאם למצב שבו משתמשים. ספירתה כשדה סכום בדיקה ברוחב ידוע היא המקום שבו רוב ההסברים האלה מתפרקים.
קראו את המבנה הנבחר לפני ספירת בתים, ותארו את התוצאה כהגנת שלמות ולא כסכום בדיקה עם תווית אחרת. המפענח ייתן לכם את שם השדה אם תשאלו אותו.
tshark -r capture.pcap -Y esp -V | grep -iE "integrity|icv"
בדקו את נקודת התצפית לפני הספירה
לכידה בממשק הפנימי ולכידה על החוט יכולות להראות שכבות שונות לחלוטין. בממשק הפנימי המנהרה כבר הוסרה, כך שאתם רואים את החבילה הנישאת ואף אחת מהכותרות החיצוניות. על החוט אתם רואים את הכותרות החיצוניות ומטען מוצפן שאינכם יכולים לקרוא. אף אחת מהתצוגות אינה שגויה, והן אינן תצוגות של אותו עצם. ציינו היכן נלקחה הלכידה לפני שאתם מצטטים מספר כלשהו.
sudo tcpdump -ni eth0 -vv -c 5 esp
sudo tcpdump -ni tun0 -vv -c 5
הפקודה הראשונה מציגה את החבילה החיצונית עם עוקב השלמות שלה, והשנייה מציגה את החבילה הנישאת עם סכום בדיקת התעבורה שלה. חיבור מספרים משתי הלכידות אינו סופר דבר פעמיים, אבל הוא מסביר את אותה חבילה פעמיים.
השוו את המספר ללכידה אמיתית
פענחו חבילה אחת במלואה וסמנו כל שדה שהמפענח מכנה סכום בדיקה או ערך שלמות. אחר כך השוו כל סימון לפריסה שכתבתם, ומחקו כל סימון ששייך לשכבה שאינכם סופרים בפועל. מספר ששורד את התרגיל הזה הוא בר-הגנה, ומספר שמצוטט מהזיכרון אינו כזה.
חזרו על כך עבור כיוון התשובה, משום שמנהרה שנושאת את שתי המשפחות עשויה להשתנות לפי כיוון ולפי זרימה. אחר כך אמרו את המספר יחד עם תחומו, למשל שלושה סכומי בדיקה עבור החבילה הפנימית הזו בנקודת התצפית הזו, ולא כתכונה של חבילות VPN בכלל.
tshark -r capture.pcap -T fields -e ip.checksum -e udp.checksum -e tcp.checksum