אתה נמצא כאן מדריכים  >>  הגנת מידע  >>  נספח: הצפנת מידע

נספח: הצפנת מידע

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

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

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

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

אלגוריתם הצפנה חד-כיווני מתבסס בעיקר על טבלאות Hash. האלגוריתם פועל על מחרוזת כלשהי ומחשב את הערך המתאים לה בטבלת ה-Hash. ניקח למשל את אלגוריתם ההצפנה החד-כיווני MD5, שמצפין מחרוזת כלשהי במספר הקסאדיצמלי בן 32 ספרות, ולמעשה מתבסס על טבלת Hash בגודל של 16^32 (16 בחזקת 32). האלגוריתם של MD5 מתאים לכל מחרוזת "תא" בתוך הטבלה. היות ויש לנו מספר סופי של "תאים" בטבלת ה-Hash ואינסוף מחרוזות אפשריות, הרי שייתכן מצב שבו 2 מחרוזות (או יותר) ייכנסו לאותו התא. זאת הסיבה שאם משתמשים באלגוריתם זה לשמירת ססמאות מוצפנות, ייתכן ו-2 ססמאות שונות ייכנסו לאותו ה-"תא", ובעצם קיים סיכוי שנאמת ססמא לא נכונה. למעשה, יש אינסוף מחרוזות שונות מוצפנות בכל "תא" בטבלת ה-Hash, אך אין זה גורע מהיעילות של אלגוריתם ההצפנה, כי משתמשים במספר אסטרונומי של "תאים" - 16^32 ~ 3.4e+38. והסיכוי לקלוע ל-"תא" הנכון של הססמא הנכונה באמצעות ניחוש, הוא סיכוי אפסי ביותר. דרגת ההצפנה של האלגוריתם MD5 הוא 128 ביט, שנחשבת לרמת הצפנה טובה מאוד.


תגובות בנושא

שאלה 02-11-02 06:01
 [ללא שם]
#609

האם יש אלגוריתם הצפנה דו-כיווני חוץ מ-str_rot13?

MD5 ניתן לפיתוח 09-12-03 00:01
 פלג קורלנד
#1088

במידה והוצפנה מילה שהיא "מילונית" אז יש אתר שבפחות מ-5 שניחות מפצח את הצפנה שלכם!!!
אם אתה מצפינים משהו כמו $3sdf5@^&3
אז את זה האתר לא יכול לפצח!!!

MD5 לא ניתן 07-12-05 23:01
 שאול חסוי
#2605

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

חייב לדעת...... 04-12-07 02:02
 אסלאם אטרש
#2761

חייב לדעת אחי שזו פונקציה שהיא חד-כיווני ואי-אפשר לפצח אותה ... רק במקרה אחד יכולים כמו באתר מסויים מה שהוא יודע שאני הכנסתי "שלום" ועשיתי הצפנה ... הוא שומר זו מילה בבסיס נתונים לאתר הזה וכאשר אתה נותן לו את ההאש שלי הוא כותב לך "שלום" כי אחד מהמשתמשים עשה הצפנה לזו מילה .. אבל אם אתה נכנסתה לפני הקלדת המילה הוא יכתוב : שהמילה אינה כתובה בבסיס הנתונים ...
תודה

sha1 08-12-10 01:00
 אולג קגן
#2885

אני מציע להשתמש ב פונקציה חד כיוונית sha1
כי sha1 יותר עמיד נגד פריצה
במקום md5
או עדיף ;(('sha1(sha1('secret)


לדף הקודםהורדה -הקודם
לתחילת הדףלתחילת הדף
הבא- בסיס הנתוניםלדף הבא