IPSec

Internet Protocol Security (ראשי תיבות: IPsec) הוא פרוטוקול אבטחה שפותח על ידי IETF בתחילת שנות ה-90 כדי להגן על חבילות (packets) ה-IP, מבלי לשנות את פרוטוקול IP עצמו. IPsec מספק זיהוי של השולח, וידוא שלמות של חבילות IP, הצפנת תוכן החבילות, מניעת שליחה מחדש של חבילות ישנות והגנה נגד ניתוח התעבורה ברשת. לחבילות IP אין אבטחה מובנית. לכן, יחסית קל לזייף כתובות של חבילות IP, לשנות את תוכנן, לשדר שוב חבילות שכבר נשלחו ולבדוק את תוכן החבילות. כאשר מתקבלת חבילת IP, לא ניתן להיות בטוחים בזהות השולח, בתוכן החבילה (כלומר ייתכן שהיא שונתה) ובכך שתוכן החבילה לא נקרא בידי אדם או תוכנה לא מורשים. בתחילת שנות ה-90 היה ברור שפרוטוקול ה-IP הוא הפרוטוקול הפופולרי ביותר ברשת ולכן ארגון Internet Engineering Task Force (בראשי תיבות IETF) החל לפתח פרוטוקול אבטחה מתאים. פרוטוקול IPsec התפתח כחלק מפרוטוקול IPv6 והיה מנדטורי עד ל־RFC 4294. כתגובה להתפתחות של פרוטוקולים מתחרים כמו SSH ו-SSL החל ממסמך זה הדרישה למימוש הפרוטוקול עברה מסטטוס MUST לסטטוס SHOULD. IPsec כולל שני תתי פרוטוקולים: ESP (Encapsulating Security Payload) ו-AH (Authentication Header). בעוד ש-AH מספק זיהוי של השולח ומבטיח את אמינות (integrity) המידע שמועבר, הוא אינו מספק הצפנה של המידע. ESP מספק את כל התכונות של AH, ובנוסף הצפנה של המידע. נוסף לכך, IPSec יכול להגן על כל חבילת ה-IP (התוכן הפנימי – data והחלק החיצוני – header), או רק על החלק הפנימי שלה. כדי לאפשר הפרדה זו קיימות שתי דרכי פעולה שונות ל-IPsec: תעבורה (transport mode) – מגן רק על החלק הפנימי של החבילה. יש header חדש של IPsec שמתווסף לחבילה בין ה-IP header לבין שאר החבילה. ניתן להשתמש במוד זה בין שתי תחנות קצה מוצפנות. מנהור (tunnel mode) - מגן על כל החבילה. כל החבילה המקורית נעטפת בחבילת IP נוספת, ו-IPsec header מוכנס בין ה-IP header המקורי לחדש. ניתן להשתמש במנהור בין שתי תחנות קצה מוצפנות ובנוסף בין שערי אבטחה (security gateways) שנותנים שרותי אבטחה לגופים נוספים ברשת (כדוגמת VPN). במקרה כזה, כתובות נקודות הקצה נמצאות ב-header הפנימי בחבילה שמוגנת במעטפת נוספת. כאשר חבילה כזאת מגיעה ל-gateway, מוסרת המעטפת החיצונית, והחבילה נשלחת ליעדה הסופי. IPsec יכול להיות ממומש בתחנות קצה או בשערי אבטחה, כגון נתבים (routers) וחומות אש (firewalls). כדי להרכיב ולפרק חבילות IPsec, צריכה להיות דרך לחבר בין שרותי אבטחה רצויים ומפתח לבין תעבורה שעליה רוצים להגן ולבין תחנה מרוחקת שאיתה רוצים להחליף מידע המוגן בעזרת IPsec, או במילים אחרות: איך להגן על התעבורה, על איזו תעבורה להגן ועם מי לבצע את ההגנה. כל הנתונים הנ"ל מרוכזים במבנה שנקרא Security Association ובקיצור SA. SA ב-IPsec הוא חד כיווני, כלומר הוא מגדיר שרותי אבטחה בכיוון אחד בלבד – או עבור תעבורה יוצאת או עבור תעבורה נכנסת. בדרך כלל, SA-ים קיימים בזוגות: אחד בכיוון ההולך, ושני בכיוון החוזר. SA מחזיק בכל נתוני האבטחה הדרושים ל-session של IPsec. נתונים אלה הם: מספר סידורי (sequence number). מספר שמאותחל ב-0 ועולה באחד עם כל חבילה. Sequence Overflow Flag. מציין אם המספר הסידורי גדול מ-4,294,967,295. חלון נגד שליחה חוזרת של חבילות (Anti-Replay Window). כדי למנוע חזרה של חבילות ישנות כל צד עוקב אחרי חלון בגודל של 64 חבילות. כאשר מגיעה חבילה – החלון מוזז בהתאמה. להלן כללים לטיפול בחבילה שמגיעה: אם המספר הסידורי של החבילה הוא שמאלה מהחלון (החבילה הגיעה מאוחר מדי) – החבילה נזרקת. אם המספר הסידורי של החבילה הוא בתוך החלון, אך מספר זה כבר הופיע קודם – החבילה נזרקת. אם המספר הסידורי של החבילה הוא בתוך החלון ומספר זה הוא מספר שעוד לא הופיע – בודקים את ה-header AH (על מנת לוודא את זיהוי השולח). אם הוא נכון – מקבלים את החבילה. אם לא – החבילה נזרקת. אם המספר הסידורי של החבילה הוא ימינה מהחלון - בודקים את ה-header AH (על מנת לוודא את זיהוי השולח). אם הוא נכון – מקבלים את החבילה ומזיזים את החלון בהתאם. אם לא – החבילה נזרקת. IPsec מספק אבטחה בשכבת הרשת של מודל ה-OSI, ובכך דואג לאבטחה של כל השכבות שמעליו. כל השכבות והיישומים מעל IPsec מאובטחים, ואין צורך להגן על כל אחד מהם בנפרד. השימוש הנפוץ ביותר של IPsec הוא במימוש של VPN-ים. כיום קיימים בשוק שלושה מימושים שונים עיקריים של VPN-ים: VPN מבוסס IPsec - הוותיק מבין השלושה VPN מבוסס SSL (פרוטוקול אבטחה שפותח על ידי חברת נטסקייפ) VPN מבוסס L2TP (פרוטוקול אבטחה נוסף שפותח על ידי מיקרוסופט ו-סיסקו) - פחות נפוץ קיים ויכוח איזה מימוש מוצלח יותר. יתרונו העיקרי של VPN מבוסס SSL הוא קונפיגורציה פשוטה יותר, אך מאידך רמת האבטחה הניתנת נמוכה יותר מאשר ב-VPN מבוסס IPsec. מדיה וקבצים בנושא IPSec בוויקישיתוף להגדרת מונחי מסמכי RFC, ראה: RFC 2119