Encryption and Hashing buzzwords explained

23 באוגוסט 2008

3 תגובות

 

אם היו באים למכור לכם מוצר אבטחתי והיו זורקים Buzzwords שנשמעים מאוד חדשניים  או נשמעים

מאובטחים, האם הייתם קונים אם היו אומרים לכם שהתווך שלכם מוצפן? המושג הצפנה מאוד נפוץ

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

לאלגוריתמים שונים? לחוזק ההצפנה?

 

 

מה היא הצפנה (Encryption)?

הצפנה היא רצף פעולות מתמטיות המופעלות על מידע הגורמות לו להיות בלתי קריא, או בלתי מובן

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

והצפנה אסימטרית.

הצפנה סימטרית נחשבת למהירה יותר מההצפנה האסימטרית.

 

הצפנה סימטרית היא הצפנה בה מפתח (או סוד/ Cipher) ההצפנה ידוע לשני הצדדים – הצד השולח והצד

המקבל. המפתח שיש לשני הצדדים נועד להצפנה ופענוח.

ניתן לחלק את אלגוריתמי ההצפנה הסימטרית לשני סוגים: Stream Cipher  ו – Block Cipher.

Stream Cipher הוא אלגוריתם המצפין את כל המידע ביט אחרי ביט באמצעות מספר שהוא כביכול

אקראי בכל ביט (ישנו תהליך המאפשר לקבל את אותם המספרים הכביכול אקראיים אצל כל מי שיש לו

את מפתח ההצפנה). בד"כ מדובר בפעולת XOR בין הנתונים. דוגמא לשימוש ב – Stream  Cipher: ניתן

להזדהות באמצעות סיסמה חד פעמית (OTP או One-time Password) שמופיעה על ה – TOKEN מול

שרת ההזדהות בארגון.

Block Cipher הוא אלגוריתם המצפין בלוקים של המידע (לדוגמא: בלוק אחד = 128 ביטים).

לאלגוריתם זה יש מספר גרסאות (או תצורות עבודה), בשלב זה לא אפרט יותר. רוב האלגוריתמים היום

עובדים עם Block Cipher. דוגמא: הצפנת מסמך ב – PGP באמצעות סוד משותף ופתיחתו באמצעות

אותו הסוד.

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

 

הצפנה אסימטרית (או הצפנת Public Key) היא הצפנה התלויה בשני מפתחות שיש בניהם קשר מתמטי:

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

הציבורי ניתן לפרסום (לדוגמא: רשות התעודות – Certificate Authority, יכולה להכיל את כל המפתחות

הציבוריים בארגון).

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

הצפנה אסימטרית נחשבת בכלליות כחזקה יותר מהצפנה סימטרית היות ובהצפנה אסימטרית קיים

שימוש במפתחות הצפנה יותר ארוכים, לדוגמא: בהצפנה סימטרית בד"כ משתמשים באורך מפתח של

128-256 ביט, ואילו בהצפנה אסימטרית משתמשים בד"כ באורך מפתח של 1024-2048 (יש מפתחות יותר

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

המוצפן במפתח שאורכו 1024 ביט נדרשים פחות מ –   21024 נסיונות לפריצה.

ישנם שני שימושים עיקריים להצפנה אסימטרית:

1. החלפת מפתחות סימטריים בין הצד השולח לצד המקבל.

לדוגמא: בוב מעונין לשלוח את המפתח הסימטרי לאלן. בוב יצפין את המפתח הסימטרי באמצעות

המפתח הציבורי של אלן. כשאלן תקבל את המידע המוצפן, היא תוכל לפתוח אותו באמצעות המפתח

הפרטי שלה.

2. חתימה דיגיטאלית.

רעיון החתימה הדיגיטאלית הוא מניעת הכחשה של שליחת מידע. כיצד מונעים הכחשה? אם מידע מוצפן

באמצעות המפתח הפרטי של בוב, הרי שאלן תוכל לפתוח את המידע באמצעות המפתח הציבורי של בוב.

רק בוב היה מסוגל להצפין את המידע באמצעות המפתח הפרטי שלו.

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

אלגוריתמים נפוצים: RSA ו – ElGamal.

ElGamal נקרא על שם ד"ר טהר אלגמאל (Taher Elgamal) ששיפור של האלגוריתם שפותח ע"י

המדענים ויטפילד דיפי (Whitfield Diffie) ומרטין הלמן (Martin Hellman).

 

איזו הצפנה חזקה יותר?

בימים אלו חוזק ההצפנה של מפתח סימטרי שאורכו 128 ביט נחשב כמקביל למפתח אסימטרי שאורכו

1024 ביט. הצפנות אלו נחשבות לחלשות יחסית וממולץ שלא להשתמש בהם, אלא בהצפנות החזקות

יותר, לדוגמא: הצפנה של 256 ביט במפתחות סימטריים, ו – 2048 במפתחות אסימטריים.

 

האם כדאי לבחור במוצרים המצפינים באופן סימטרי או אסימטרי?

השיקולים בבחירת מוצר הצפנה הם בעיקר גודל המידע המוצפן וכוח העיבוד הנתון.

ישנו הבדל משמעותי בין הצפנת 200GB להצפנת 200KB. פענוח מידע שגודלו 200GB יקח פי  1048576

מהזמן שיקח לפענח 200KB.

דוגמא למידע שגודלו 200GB – בסיס נתונים.

דוגמא למידע שגודלו 200KB – קובצי טקסט, סיסמא, וכו'.

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

מהצפנה סימטרית.

 

 

מה הוא גיבוב (Hash)?

פעולת Hash (הנקראת גם Digest, Checksum או  Fingerprint) היא רצף של פעולות מתמטיות

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

אורך הטקסט המקורי, הערך ה"מעורבל" (Hash Sum) יהיה באותו האורך.

חשוב לציין שבכל פעם שתתבצע פעולת Hash על מידע תמיד יהיה ה – Hash Sum זהה, לדוגמא: לאחר

ביצוע פעולת Hash על המשפט "this is my example text" התוצאה תמיד תהיה

9fa898e9c7a4012ce2711c1b626e8dbe (השתמשתי באלגוריתם MD5).

מה תפקידו של ה – Hash?

ה – Hash אינו נועד רק לצורכי אבטחת מידע, אלא גם לצרכי ביצועים. לדוגמא: במקום להשוות בין שני

טקסטים שאורכם 1000 מילים ניתן להשוות אך ורק את ה – Hash שלהם שיהיה באורך קבוע.

כשמדובר באבטחת מידע קיים שימוש ב – Hash בעיקר לצורכי הסתרת המידע או חתימת המידע.

הסתרת מידע נדרשת במקרים בהם קיים חשש כי מישהו יגלה את המידע הנשלח בין רכיבים, לדוגמא:

שליחת סיסמא בטקסט קריא (Cleartext) תאפשר לתוקף לקרוא את הסיסמא ולפרוץ למערכת. היות

ופעולת Hash היא חד כיוונית, מתבצעת פעולת Hash על הסיסמא בשני הרכיבים ולאחר מכן מתבצעת

השוואת ה – Hash Sums.

חתימת מידע נדרשת בכדי לוודא כי לא בוצעו שינויים על המידע. לדוגמא: ביישום החתימה  הדיגיטאלית

מתבצע Hash על המידע, וה – Hash עצמו מוצפן באמצעות המפתח הפרטי של שולח המידע. כשהמידע

מגיע לנמען הוא פותח את ה – Hash Sum עם המפתח הציבורי של השולח ולאחר מכן מבצע  Hash על

הטקסט הגלוי. לאחר השוואת ה – Hash Sums ניתן לראות כי על המידע לא בוצעו שינויים וגם כי השולח

הוא אכן מי שהוא טוען שהוא.

אלגוריתמים נפוצים ל – Hash: MD5, SHA1, SHA-256, SHA-384, SHA-512, Tiger,

Whirlpool.

 

מה ההבדל בין חתימה דיגיטאלית לחתימת מידע (Hash)?

בחתימה דיגיטאלית מבוצע Hash  במטרה לוודא שהדוא"ל לא השתנה בדרך מהשולח לנמען (כפי שניתן

לעשות בהתקפה מסוג Man in the middle). בחתימה דיגיטאלית המידע המועבר אינו מוסתר אך אמינות

המידע חשובה.

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

לקבל ערך קצר יותר על קבצים גדולים כגון בסיס נתונים.

דוגמא נוספת: בתוכנת ההצפנה BitLocker שפותחה עבור Windows Vista ו- Windows 2008

קיים שימוש בפעולת Hash על מצב החומרה בעת כיבוי המחשב. כשמפעילים את המחשב (לאחר הזדהות)

מתבצעת פעולת השוואה בין ה – Hash של החומרה במצה הנוכחי לבין ה – Hash במצב הכיבוי. כך

למעשה ניתן לוודא שלא השתנו רכיבי חומרה בתחנה/שרת. להבדיל מחתימה דיגיטאלית המידע אודות

חומרת המערכת נשמר במצב Hash ולא ניתן לקרוא אותו.

הוסף תגובה
facebook linkedin twitter email

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *

3 תגובות

  1. המצפין הלאומי24 באוגוסט 2008 ב 8:29

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

    הגב
  2. Nir Valtman30 באוגוסט 2008 ב 11:38

    הוספתי התייחסות לתגובתו של "המצפין הלאומי"

    הגב