לדף הכניסה של ישרא-בלוג
לדף הראשי של nana10
לחצו לחיפוש
חפש שם בלוג/בלוגר
חפש בכל הבלוגים
חפש בבלוג זה
 

יומן אבטחה

בלוג אבטחת מידע. עדכונים, עניינים, חדשות ופרסומים. הכל מכל בכל בנושא אבטחת מידע. ופרטיות.

מלאו כאן את כתובת האימייל
שלכם ותקבלו עדכון בכל פעם שיעודכן הבלוג שלי:

הצטרף כמנוי
בטל מנוי
שלח

RSS: לקטעים  לתגובות 
ארכיון:


1/2007

מבוא להצפנה - חלק ב'


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

 

 

הבדלי ביצועים בין פונקציות סימטריות לעומת פונקציות אסימטריות

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

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

 

מילה על מפתחות הצפנה

המפתח הוא אותו המרכיב המעניק להצפנה הנוכחית את הייחודיות שלה. שני אנשים יכולים להצפין אותו נתון עם אותו אלגוריתם ולקבל תוצר מוצפן שונה לחלוטין. זו תוצאה של שימוש במפתחות הצפנה שונים. בפועל, רוב האלגוריתמים מיישמים מנגנון שנועד למנוע מצב בו הצפנה של אותו הנתון, באותו האלגוריתם, עם אותו המפתח תייצר אותה תוצאה. מנגנון זה נקרא וקטור אתחול (Initialization Vector) והוא מבוסס על הוספת מרכיב אקראי בעת אתחול מנגנון ההצפנה. אורך מפתח נמדד בביטים, כאשר האורכים המקובלים היום הם 128 או 256 לפונקציות סימטריות ו-1024 או 2048 לפונקציות אסימטריות (בצורה מאוד פשטנית. יש אלגוריתמים אסימטריים, כמו ECC שעושים שימוש במפתח 160 ביט, אך זה לא באמת מהותי). מה מציין אותו אורך מפתח? כל ביט הרי מייצג שתי אפשרויות 0 או 1. ומכאן שמפתח של 128 ביט מציין מפתח בעל 2 בחזקת 128 אפשרויות, שזה נכון להיום כמות בלתי סבירה של אפשרויות לניחוש עיוור.

 

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

 

 

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

 

 

 יתרונות וחסרונות של פונקציות סימטריות ואסימטריות

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

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

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

 

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

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

 

בפועל מה קורה?

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

 

 

שימו לב לחלק המוקף באליפסה אדומה. פרוטוקול ההצפנה: TLS גרסה אחת (כמו שאמרתי, זה SSL לצורך העניין). האלגוריתם בשימוש - AES (שהופיע כאחד האלגוריתמים במשפחת האלגוריתמים הסימטריים) עם מפתח של 256bit ובשילוב עם אלגוריתם RSA (שהוא אלגוריתם אסימטרי) עם מפתח 1024bit ובנוסף SHA (שזה אלגוריתם hash). נעזוב לרגע את ה-hash בצד ונתעסק רק בפונקציות הסימטריות והאסימטריות.

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

 

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

 

בחלקים הבאים אעסוק בפונקציות hash ושימושים שלהם, חתימה דיגיטלית ושימושיה PKI, חולשות בפתרונות הצפנה ונושאים אחרים.

נכתב על ידי , 8/1/2007 20:35   בקטגוריות אבטחת מידע כללי, כרטיסים חכמים, הצפנות ושמונצס, מושגי יסוד  
5 תגובות   הצג תגובות    הוסף תגובה   3 הפניות לכאן   קישור ישיר   שתף   המלץ   הצע ציטוט



כינוי: 

גיל: 48




65,156
הבלוג משוייך לקטגוריות: אינטרנט
© הזכויות לתכנים בעמוד זה שייכות לעומר טרן אלא אם צויין אחרת
האחריות לתכנים בעמוד זה חלה על עומר טרן ועליו/ה בלבד
כל הזכויות שמורות 2024 © עמותת ישראבלוג (ע"ר)