נזרקו כאן כל מיני מושגים לאוויר על איך ההצפנה של SSL עובדת ונוצר קצת אי סדר.
איך הצפנה א-סימטרית עובדת על קצה המזלג? לאתר יש מפתח פרטי שיכול לפענח מידע שמוצפן בעזרת המפתח הפומבי (שלך יש אותו). לבצע הצפנה א-סימטרית כל הזמן זה כבד ולא יעיל, לכן תחת ההצפנה הא-סימטרית מתאמים מפתח סימטרי ואיתו מצפינים את התעבורה (אלגוריתמים כמו RC4 ו-AES). כביכול אמור להיות לך את המפתח הפומבי של האתר על המכשיר, אולם לא ריאלי שיהיה לך את המפתח הפרטי של כל האתרים. לכן כאשר אתה מתחבר לאתר ב-SSL אחד הדברים הראשונים שעוברים בפרוטוקול הוא סרטיפיקט שמכיל את המפתח הפומבי של האתר *חתום* על ידי CA (חברה כמו verisign). לך תמיד יש את המפתח הפומבי של versign (ושל עוד כמה חברות על המכשיר) ולכן אתה יכול לאמת את הסרטיפיקט של האתר ולהאמין לו שזה באמת המפתח הפומבי שלו.
לפיכך, במידה ואתה רוצה לעשות mitm למכשיר יש לך אופציה אחת עיקרית: להוסיף סרטיפיקט חדש לרשימת ה-CAים שאתה יצרת במכשיר, ואז לייצר סרטיפיקטת ל-mitm חתום על ידך. בגלל שהמכשיר סומך על CA המזוייף שלך הוא יאמין לסרטיפיקט המזוייף.
הטענה
ציטוט: |
יש לך את האפליקציה מותקנת על מכשיר והיא משתמשת במפתח משמע המפתח נמצא על המכשיר אתה צריך רק למצוא אותו. |
לא מתאימה במקרה זה. אם הכוונה למפתח הפומבי, אז אין בכך כל תועלת. אם הכוונה למפתח הפרטי אז זה שקר. אם הכוונה הייתה למפתח הסימטרי, תגלה שזה מאד לא נוח לחלץ לכל session של SSL בזמן ריצה מהזכרון את המפתח.
לסיכום: אם אתה רוצה לפענח תעבורת SSL של אפליקציה תזייף CA וכך תזייף את הסרטיפיקט.
(יש תוכנות שלא סומכות על ה-CA ומקודדות hash של המפתח הפומבי הרלוונטי בתוכנה עצמה, למשל chrome עושה את זה לסרטיפיקטים של גוגל, וכך נתפסה הפריצה לדיגינוטר שהייתה לפני כמה זמן וגם ההנפקה הלא מורשית של ה-CA הטורקי).