HTTPS: מדריך למתחילים

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

https

HTTPS הוא HTTP עם SSL (קיצור של Secure Sockets Layer). ה-"S" ב-HTTP משמעה "Secure". אם אתם עדיין לא מכירים את HTTP, תוכלו לקרוא עליו עוד במאמר שכתבתי כאן.

עד לפני מספר שנים, HTTPS היה פרוטוקול שהיה נפוץ בעיקר במערכות Enterprise, ו/או אתרים משעממים אחרים.
דברים השתנו, ויותר ויותר אתרים משתמשים ב-HTTPS בתור פרוטוקול ברירת המחדל שלהן: גוגל, טוויטר, פייסבוק ועוד.

ישנן כמה סיבות שבגללן השינוי מתרחש:

1. HTTPS הוא "תואם" ל-HTTP ואינו דורש (בתיאוריה) שינויי קוד בכדי לעבור אליו.

2. החומרה נעשית חזקה יותר ויותר, והתקורה של עבודה ב HTTPS היא כבר לא-משמעותית*.

3. מודעות גדלה לפרטיות ואבטחה ברשת.

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

.

Context: היכן פרוטוקול HTTPS "מתרחש"?

הבהרה / היסטוריה: פרוטוקול ה-SSL (קיצור של Secure Sockets Layer) הוגדר ע"י חברת Netscape עבור הדפדפן Netscape Navigator – שאיננו קיים עוד. הוא היה בגרסאות 1.0 עד 3.0, ואז הוא הועבר לגוף תקינה סטנדרטי ושמו שונה ל TLS (קיצור של Transport Layer Security). בשנת 1999 שוחרר TLS גרסה 1.0, הגרסה העדכנית של TLS היא 1.2 (ששוחררה בשנת 2008).

אף על פי שהשם "TLS" קיים כבר יותר מעשור, השם SSL דבק ועדיין מוכר יותר / משתמשים בו לעתים קרובות בהחלפה ל-TLS. ישנו עוד ציוד רשת (בעיקר שרתים) שעדיין תומכים ב-SSL או גרסאות ישנות של TLS – מה שמחייב את הדפדפנים לעבוד בגרסה ישנה יותר (ופחות מאובטחת) של הפרוטוקול.

בסך הכל, TLS הוא פרוטוקול שרץ מעל TCP ומתחת ל-HTTP (או פרוטוקולים אחרים ברמת ה"אפליקציה"), כך שבעקרון הוא לא משנה את אופן העבודה של HTTP:

ssl-tls

כדאי לציין שיש עוד פתרונות הצפנה ל-HTTP כגון VPN או IPSec שהם ברמת פרוטוקול ה-IP – אך נשאיר אותם מחוץ ל-scope של הפוסט הנוכחי.

אז אלו שירותים פרוטוקול HTTP מספק?

"הצפנה!" – נכון. אבל הצפנה של מה?

כדי להבטיח תקשורת פשוטה ומאובטחת, אנו זקוקים לקצת יותר מ"הצפנה!".
פרוטוקול TLS מספק 3 שירותים עיקריים:

  • הצפנה של המידע העובר בין הלקוח לשרת – כדי שצד שלישי לא יוכל להאזין לתקשורת.
  • Authentication: זיהוי השרת ו (אולי גם) הלקוח – כדי שנדע, למשל, ש"הבנק" שלנו הוא באמת הבנק שלנו, ולא אתר מתחזה. רק כהערת אגב, שרתי DNS נחשבים כלא כל-כך מאובטחים, ולכן התקפה לא מורכבת כל-כך יכולה להפנות אותנו לאתר שונה ממה שהתכוונו אליו.
  • וידוא שלמות ההודעה, בעזרת "חתימה דיגיטלית" – כדי להתמודד עם התקפות מסוג Man in the Middle.
צילומסך. פרוטוקול TLS בפעולה בדפדפן כרום: ורוד - אני רואה שיש אימות שאני אכן מחובר לבנק הפועלים. לפני כל הכנסה של כרטיס אשראי - כדאי מאוד לוודא שהשרת מאומת ושמו נשמע הגיוני. תכלת - הממ.... 112-ביט הוא מפתח מעט חלש בימנו + חיבור 1.0 TLS הוא מעט לא מעודכן וחשוף להתקפות כגון BEAST (בהמשך)

צילומסך. פרוטוקול TLS בפעולה בדפדפן כרום:
מסומן בורוד – יש אימות שאני אכן מחובר לבנק הפועלים. לפני כל הכנסה של כרטיס אשראי – כדאי מאוד לוודא שהשרת מאומת ושמו נשמע הגיוני.
תכלת –  112-ביט הוא מפתח מעט חלש בימנו + חיבור 1.0 TLS הוא מעט לא מעודכן וחשוף להתקפות כגון BEAST (בהמשך)

על מפתחות סימטריים וא-סימטריים (הצפנה)

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

מפתחות סימטריים הם פשוטים יותר ונוחים לעבודה. בימנו הם לרוב באורך של 128 עד 256 ביט – כאשר מפתח ארוך יותר הוא בעקרון חזק יותר וקשה יותר לפיצוח ב-brute force" (כלומר: ניסיון כל הצירופים האפשריים, לעתים עם כמה קיצורים). יכולת הפיצוח תלויה כמובן גם בסביבה, באלגוריתם ההצפנה ובמידת האקראיות של המפתח.

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

לצורך כך הומצאו המפתחות הא-סימטריים. האלגוריתם הנחשב בתחום זה הוא אלגוריתם RSA (שאחד ממפתחיו הוא הישראלי עדי שמיר, אותו אחד שגם הצליח לפרוץ את ההצפנה של האלגוריתם לפני מספר ימים) – אלגוריתם שמאפשר לסיטואציה המדהימה הבאה להתרחש:

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

כיצד זה קורה? העיקרון מבוסס על הגרלה של 2 מספרים ראשוניים אקראיים גדולים מאוד והכפלה שלהם. המספר שנוצר מהמכפלה הוא ענק – ומאוד קשה לחשב ממנו את המספרים הראשוניים מהם הוא מורכב (במיוחד כשארכיטקטורת המחשב היא, 64 ביט, היא קטנה משמעותית מאורך המספרים). מתוך המכפלה מחלצים 2 מפתחות / מספרים:
מפתח ציבורי – מפתח שניתן לחלק לכל / לצעוק בתוך החדר.
מפתח פרטי – מפתח סודי שיש לשמור.

כדי להצפין ולפתוח מסרים ב-RSA – זקוקים לשילוב של 2 המפתחות. ניתן לשלב אותם בשני האופנים הבאים:

  • כאשר רוצים להצפין מסר לבעל המפתח, מצפינים אותו בעזרת המפתח הציבורי – וניתן לפתוח אותו רק בעזרת המפתח הפרטי (שהוא סודי, בידי בעל המפתח).
  • כאשר בעל המפתח רוצה לאמת בפני אחרים שהוא שולח ההודעה ושהיא לא שונתה, מה שנקרא "חתימה דיגיטלית", הוא מצפין את ההודעה בעזרת המפתח הפרטי – שרק בעזרת המפתח הציבורי ניתן לפתוח. יש גם עוד checksum (או MAC) של ההודעה שמאמת שלא נעשו בה שינויים בדרך.

סה"כ מפתחות א-סימטריים היום הם באורך של 512 עד 2048 ביט – ודיי יקר למעבד לפענח אותם. דרך הפעולה של TLS הוא לבצע את התקשורת הראשונית בעזרת מפתח א-סימטרי (יקר להצפנה/פענוח). בערוץ המאובטח שנוצר – מעבירים מפתח סימטרי קצר יותר (קל להצפנה/פענוח) ושצריך פחות עבודת חישוב בו נשתמש מכאן והלאה. חתימה דיגיטלית יכולה לסייע לאמת את זהות המתקשרים (שרת / לקוח).

cert-rsa-encryption

האם פרוטוקול ה SSL/TLS הוא מוגן לחלוטין?

לא.

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

כרגע החוק בארצות הברית (למיטב ידיעתי) מגביל את גודל המפתחות ל-256 ביט להצפנה סימטרית ול-2048 ביט להצפנה אי-סימטרית (במקרה שלנו: RSA).

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

האם פרוטוקול RSA עליו מסתמכת חלק גדול מהאבטחה של HTTPS יכול "להיפרץ" בצורה גנרית? כנראה שכן – אבל זה עדיין לא קרה.

יש גם באגים בפרוטוקול ה-SSL עצמו

התקפות מפורסמות אחרונות המבוססות על באגים אלו קרויות BEAST ו CRIME – וחלק גדול של משתמשי האינטרנט עדיין חשוף אליהן. חשוף, מכיוון ששרתי אינטרנט רבים הם לא מעודכנים ועדיין עובדים עם גרסאות ישנות של TLS או אפילו SSL (כלומר: גרסה ישנה הרבה יותר). מצד שני, לא צריך מאוד לדאוג – כי אלו התקפות מורכבות למדי ליישום. זה לא אומר שלא הייתי מעדיף שכל שירות דואר אלקטרוני או אתר שמתעסק בכסף שלי, יעבוד עם TLS גרסה 1.2.

על-פי שמועות, מומחי ה NSA "דחפו" באגים מתוחכמים לתוך התקן של TLS על-מנת שהם יוכלו לנצל אותם בהמשך. יש פה הנחה, לא בהכרח נכונה, שהבאגים כל-כך מורכבים ופינתיים – שאף אחד לא ימצא אותם. ה-NSA, בין היתר, גם שילם ל RSA כדי שיחלישו את ההגנות שלהם.

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

מה בהמשך?

מאחר ונושא ההצפנה ו-HTTPS הוא לא הכי פשוט בעולם, החלטנו לחלק את הפוסט ל-2 חלקים. בחלק הנוכחי, סקרנו את הפונקציונליות הכללית של HTTPS (קרי TLS/SSL) וקישרנו אותו ל TCP/IP Stack שכולנו מכירים.
בחלק הבא נתמקד ב-HTTPS Authentication וה-Certificates – צד חשוב מאוד בפרוטוקול ה-HTTPS, ובהשפעה של HTTPS על מערכת / המתכנתים / Operations.

.

הפוסט פורסם במקור בבלוג Software Archiblog

קרדיט תמונה: Shutterstock / https and lock symbol

ליאור בר-און

ליאור בר-און הוא Chief Architect בחברת סטארטאפ ישראלית גדולה.

הגב

4 Comments on "HTTPS: מדריך למתחילים"

avatar
Photo and Image Files
 
 
 
Audio and Video Files
 
 
 
Other File Types
 
 
 
Sort by:   newest | oldest | most voted
Moshe Haggai
Guest

שים לב שאחרי ביצוע Login לאתר בנק הפועלים משתנה המפתח ל- 128 ביט (עדיין TLS 1.0).

עופר
Guest

מעולה וברור, תודה.
תיקון טעות סופר קטנה – בכותרת "אז אלו שירותים פרוטוקול HTTP מספק?" יש להחליף כמובן ל-HTTPS במקום HTTP.

אבירם
Guest

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

wpDiscuz

תגיות לכתבה: