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

יומן אבטחה

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

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

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

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


1/2007

מבוא להצפנה


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

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

 

מהי הצפנה

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

 

 

סוגי הצפנות

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

 

פונקציות סימטריות:

בפונקציות הצפנה סימטריות יש למעשה מפתח הצפנה יחיד המשמש להצפנה ולפענוח. על מנת ששני צדדים יוכלו להעביר ביניהם נתונים בצורה מאובטחת, הם צריכים לחלוק את אותו המפתח ומכאן נובעת הבעיה המרכזית של אלגוריתמים סימטריים - כיצד מעבירים את המפתח. הרי לא סביר שאם נרצה לדבר עם מישהו באמריקה נצטרך לסוע עד אליו כדי להעביר לו את מפתח ההצפנה. מצד שני, מה נעשה? נשלח את מפתח ההצפנה במייל? בעיה נוספת קשורה לכמות המפתחות שצריך לנהל. בהצפנה סימטרית, כדי לשמור על סודיות הנתונים, כל זוג משתמשים צריך מפתח ייחודי (על מנת שאחרים לא יוכלו להאזין). התוצאה היא שכמות המפתחות היא למעשה (n(n-1)/2). בארגון של 100 איש המשמעות היא שצריך לנהל 4950 מפתחות. שזה די הרבה, בייחוד אם רוצים החלפה תדירה. כדי לפתור את הבעיה הראשונה (החלפת המפתחות) המציאו דיפי והלמן אלגוריתם שנקרא (הפתעה!!) דיפי-הלמן. זה אלגוריתם פשוט מבחינה מתמטית (כלומר פשוט להבנה) ומומלץ לקרוא עליו (סתם כי הוא נחמד). האלגוריתם מאפשר לשני צדדים להחליט על מפתח הצפנה סימטרי בצורה מאובטחת בסביבה לא מאובטחת. כדי לפתור את הבעיה השניה (וגם את הראשונה) הומצאה ההצפנה האסימטרית (שאלגוריתם דיפי-הלמן היה המתאבן שלה) וגולת הכותרת שלה הוא אלגוריתם RSA.

אלגוריתמים נפוצים: DES, 3DES, AES (Rijandael), Blowfish, Twofish, RC4, RC5.

 

פונקציות אסימטריות:

בפונקציות הצפנה אסימטריות יש שני מפתחות הקשורים זה בזה אך המסוגלים לבצע פעולות הופכיות. מפתח אחד נקרא מפתח פרטי והוא משויך לפרט. מפתח שני נקרא מפתח ציבורי והוא מופץ לציבור. כאשר מצפינים עם המפתח הפרטי ניתן לפענח רק באמצעות המפתח הציבורי. כאשר מצפינים עם המפתח הציבורי, ניתן לפענח רק עם המפתח הפרטי. המשמעות היא שכל זוג משתמשים הרוצים לתקשר ביניהם בצורה מאובטחת עושים שימוש בארבעה מפתחות - כל אחד מהצדדים עושה שימוש במפתח הציבורי של האחר על מנת להצפין עבורו, בעוד שאת המידע המוצפן שקיבל הוא מפענח עם המפתח הפרטי שלו. זה עשוי להשמע כאילו שיש פה הרבה מפתחות לנהל, אך המשמעות היא שכדי ששניים יצטרכו לדבר הם צריכים רק לשלוף את המפתח הציבורי של הצד השני וזהו. כך שכל אחד צריך להחזיק רק n+1 מפתחות (כל המפתחות הציבוריים והפרטי שלו) ובכל הארגון יש רק 2n מפתחות. בארגון של 100 איש זה 200 מפתחות, שזה הרבה יותר טוב מה-4950 הדרושים בהצפנה סימטרית. בנוסף, מאחר ואנחנו לעולם איננו צריכים להעביר את המפתח הפרטי שלנו, אלא רק את המפתח הציבורי, לא ניתן לפענח הודעות הנשלחות עבורנו (זה לא לגמרי מדויק, אך הסבר מפורט יגיע בחלק הבא).

אלגוריתמים נפוצים: RSA, DSS-DSA, ECC, El-Gamal.

 

פונקציות קיצוץ (hash):

פונקציות קיצוץ (hash) הן עוף מוזר. תכליתן להסתיר מידע, אך בלי יכולת לפענח אותו. פונקציות קיצוץ עושות שימוש אף הן באלגוריתמים קבועים, אך אינן עושות שימוש במפתח הצפנה. למעשה, פונקציות קיצוץ לוקחות נתון באורך משתנה (כלומר בכל גודל)  ומייצרות ייצוג חד חד ערכי שלו באורך קבוע (128bit, או 160bit בשני האלגוריתמים הכי נפוצים). הייצוג הזה נקרא בעברית גיבוב ובאנגלית digest.  יש מספר דרישות מפונקציית גיבוב:

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

למה צריך פונקציות קיצוץ בכלל? לדוגמא כדי לשמור סיסמאות בצורה כזו שלא ניתן יהיה לאחזר אותן.

אלגוריתמים נפוצים: MD5, SHA-1.

 

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

 

אפילוג

ולפני שניפרד, שני טקסטים מכוננים על הצפנה.

עקרון קרקהוף (קריפטוגרף בן המאה ה-19 שכתב מהן הדרישות ממערכת הצפנה):

  1. המערכת צריכה להיות בלתי ניתנת לפענוח מבחינה יישומית, גם אם לא מבחינה מתמטית.
  2. אין לדרוש כי המערכת תהיה סודית ונפילתה לידי האויב לא תגרום אי נוחות [משמעותית].
  3. ניתן יהיה לשנע ולאחזר את המפתח ללא שימוש בפתקים וניתן יהיה להחליף מפתחות ברצות המשתמשים בכך.
  4. המערכת צריכה להיות ישימה לתקשורת טלגרפית (טוב, בכל זאת מהמאה ה-19).
  5. המערכת צריכה להיות ניידת ותפעולה לא יצריך מספר אנשים.
  6. הפעלת המערכת לא תדרוש מומחיות יוצאת דופן או ידע רב.

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

 

 

נכתב על ידי , 4/1/2007 22:16   בקטגוריות אבטחת מידע כללי, כרטיסים חכמים, הצפנות ושמונצס, מושגי יסוד  
2 תגובות   הצג תגובות    הוסף תגובה   4 הפניות לכאן   קישור ישיר   שתף   המלץ   הצע ציטוט



כינוי: 

גיל: 49




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