שלום לכולם!
כולכם בטח שמעתם על SSL או HTTPS. שיותר מאובטח להשתמש בזה וכו'. אבל מה זה? היום נדבר על זה.
בגדול, SSL זו פשוט שיטה להצפין נתונים, בצורה כזאת שתוקף שמאזין לאינטרנט שלכם לא יוכל לפענח את הנתונים. אבל איך בפועל זה מתבצע?
(ולגבי HTTPS – זה בעצם HTTP שעובר הצפנה בשיטת SSL. בשביל לדעת מה זה HTTP, מוזמנים לקרוא את המאמר שלי איך עובד הדפדפן?)
נקדים, שיש 2 שיטות להצפנה:
1. הצפנה סימטרית:
הצפנה סימטרית זה השיטה הקלאסית להצפנה: יש לי מפתח הצפנה שאיתו אני מצפין את ההודעה. כשמישהו ירצה לפענח את ההצפנה, הוא יצטרך גם שיהיה לו את אותו המפתח, ואיתו הוא יוכל לפענח. אם לא יהיה לו את מפתח ההצפנה, הוא לא יוכל לפענח..
כלומר, הצפנה סימטרית זה הצפנה שבה מפתח ההצפנה ומפתח הפיענוח הוא אותו המפתח.
(כמובן, כשאני אומר מפתח אני לא מדבר על מפתח פיזי. זה רצף של מספרים ואותיות, שבעזרתם אפשר להצפין או לפענח)
2. הצפנה א-סימטרית:
בניגוד להצפנה הסימטרית, בהצפנה הזאת יש מפתח נפרד להצפנה ומפתח נפרד לפיענוח. למשל, בואו נגיד שאבא במשפחה מסויימת רוצה לדעת מי אכל את פרוסת העוגה האחרונה. (היא היתה שלייייי, ילדים חוצפנים) אבל הוא יודע שאף אחד לא יעז להודות, כי לא נעים לו מול כולם. לכן, האבא יכול להשתמש בהצפנה א-סימטרית. יהיה לו מפתח שאיתו מצפינים ומפתח שאיתו מפענחים. הוא יחלק לכולם את המפתח שאיתו מצפינים. כל אחד יכתוב על פתק בצורה מוצפנת (בעזרת המפתח הצפנה שאבא נתן) אם זה הוא או לא, וישלח לאבא את הפתק המוצפן. האבא יפענח את ההצפנה בעזרת מפתח הפענוח שלו (שאותו הוא שומר בסוד), וככה רק הוא יוכל לדעת מי אכל את פרוסת העוגה האחרונה. כל שאר האחים, גם אם ישימו את ידיהם על הפתקים של האחרים, לא יכולו בשום אופן לדעת מה כתוב שם.
כלומר, הצפנה א-סימטרית זה הצפנה שבה מפתח ההצפנה ומפתח הפענוח שונים זה מזה.
ומפה, נעבור לאיך בימינו בשתמשים בזה:
בואו נגיד ששוקרון (מכשיר ה Kindle היקר שלי) רוצה לדבר בצורה מוצפנת עם ג'ימייל. לכן, הכי טוב אם יהיה לשניהם את אותו המפתח, וככה הם יוכלו לדבר בעזרת הצפנה סימטרית. שוקרון יצפין עם המפתח את מה שהוא רוצה להגיד ל Gmail, ישלח לג'ימייל, ג'ימייל יפענח. אחרי זה ג'ימייל יצפין עם המפתח, ישלח לשוקרון, ושוקרון יפענח. וכן הלאה.
אבל, יש פה בעיה אחת חמורה: איך הם יסכימו על מפתח ששניהם ישתמשו בו? נניח ששוקרון יחליט על מפתח, וישלח אותו לשרת של ג'ימייל – אז אם אני תוקף שנמצא בין שוקרון לשרת של ג'ימייל (בעזרת ההתקפה שדיברתי עליה במאמר ARP Poisoning – מה זה ועל מה זה, למשל) – אני אוכל לראות איזה מפתח שוקרון שלח לשרת של ג'ימייל, וככה אני אוכל לפענח את כל מה שהם שולחים אחד לשני, ואז הלך הרעיון של ההצפנה!
לכן, צריך גם את המפתח להעביר באופן מוצפן, וחזרנו שוב לבעיה הראשונה!
אבל ב"ה, יש לנו גם הצפנה א-סימטרית. איך זה עוזר?
בואו נגיד שלשרת של ג'ימייל יש מפתח להצפנה ומפתח לפיענוח (כמו מה שהיה לאבא הנ"ל). אז יהיה אפשר לעשות דבר כזה:
1. השרת של ג'ימייל נותן את המפתח הצפנה שלו לכללל מי שרוצה.
2. כדי ששוקרון יוכל לשלוח לשרת של ג'ימייל את המפתח הסימטרי שאיתו הם ידברו בלי שאני אוכל לראות אותו באמצע, הוא יצפין אותו בעזרת המפתח הצפנה של ג'ימייל.
3. אני לא אוכל לקרוא את זה, כי רק לג'ימייל יש את המפתח פענוח!!!
4. השרת של ג'ימייל יפענח את מה ששוקרון שלח לו בעזרת המפתח פענוח שלו, ואז הוא ידע את המפתח ששוקרון רוצה לדבר בעזרתו.
5. שוקרון וג'ימייל ידברו חופשי בהצפנה סימטרית, בעזרת המפתח ששוקרון בחר.
זה הרעיון. בדיוק ככה זה עובד כשהמחשב שלכם נכנס לאתר מסויים שמשתמש ב HTTPS. יש עוד תוספת קטנה (וחשובה!) לתקשורת, שעליה נדבר בעז"ה במאמר הבא.