Sunday, January 1, 2012

איך לפצח הצפנות XML-Enc?

לשבור את XML-Enc

זמן קצר לאחר תחילת חגיגות השנה החדשה פורסם הגליון ה-28 של DigitalWhisper ובו גם מאמר שלי שבו אני מנסה להסביר כיצד אפשר לפצח צפנים ב-XML-Enc תוך כדי ניצול חולשה שאותה גילו והדגימו חוקרים מאוניברסיטת רוהר שבגרמניה. מדובר בליקוי מהותי בתקן XML-Enc של W3C. בתקן הזה משתמשים כדי להצפין מידע במסמכי XML. במשך שנים נחשבו המימושים של התקן לאמצעי יעיל בהגנה על מידע ששודר על ידי יישומים רבים במערכות מסחר אלקטרוני,  מערכות רפואיות,  מערכות פיננסיות,  ממשלתיות ואפילו צבאיות. אולי השימוש הנפוץ ביותר של מימושים של התקן הוא בשידור מידע שקשור לעסקאות בכרטיסי אשראי.

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

הנה קישור למאמר ב-DigitalWhisper: 

אז מה אפשר לעשות כדי להתמודד עם החולשה כרגע?

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

החדשות הטובות:  ניתן לגלות את ההתקפה,  במיוחד אם יש ניטור,  בקרה ודיווח מידיים על כשלים ועל טעויות בניתוח מסמכי XML בעיבוד השכבות השונות של הפרוטוקולים ושל התקנים. אפשר לקנפג XML Firewall שידווח בזמן אמת ואפילו יחסום את המשך התקשורת. כמובן, שניתן לצמצם ככל הניתן את המשוב השלילי שחוזר ובכך לנטרל את ה-אורקל שמשרת את ההתקפה.  כדוגמה,  ה- F5 ASM עשוי אפילו שלא להשיב לבקשה שגרמה לטעות תחבירית ב-XML (ואין זה אפילו משנה אם זה כחלק מפענוח)  וניסיונות נשנים יגרמו לחסימת שירותים (ואפילו לפעולות נוספות)  הרבה לפני שיוכלו להתקיים מספר הניסיונות הדרושים לשם ההתקפה הזאת גם אם השירות שעליו מגן F5 ASM פגיע להתקפה.

לסיכום, ההתקפה יעילה מאוד בזמן ובחישוב ומתבקש לתקן את תקן XML-Enc כדי להתגבר עליה.