בלוג | הצפנות ומה שביניהם

הצפנות ומה שביניהם

Client 06 יוני 2018

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

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

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


כשמדברים על קריפטוגרפיה שמים דגש על 3 מטרות עיקריות:

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

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

ניתן להצפין ב- 3DES עם מפתחות באורך 666 ביט או 621 ביט.
AES - זהו המחליף של DES ו-3DES . משתמש במפתח באורך 192,128 או 256 ביט.


 

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

ואיך זה משתממש בעבודה השוטפת שלנו כאנשי IT?
בעת יצירה של תעודה דיגיטלית לשרת דואר, מה הם הצעדים שאנחנו מבצעים?
 אנחנו יוצרים על השרת דואר שלנו זוג מפתחות. מפתח אחד הוא ה Public key שאותו אנחנו בדרך כלל גם נעלה ל-CA מוכר בבקשה שיחתום לנו את התעודה (בתשלום כמובן). המפתח השני, ה Private Key נשמר כפרטי.
כשמשתמש כלשהו נכנס לתיבת הדואר שלו דרך OWA, הוא מצפין את ההודעה בעזרת המפתח הציבורי שאנחנו פירסמנו על אתר כלשהו.
ברגע שנקבל את ההועדה משמשתמש, נפתח אותה בעזרת המפתח הפרטי שיושב אצלנו והוא סודי ביותר.
אם מתישהו נשנה את המפתח הפרטי שלנו בשרת- נצטרך גם להפיץ את המפתח הציבורי שמשמש להצפנה למשתמשים.

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

הצפנה אסימטרית- Diffie-Hellman: 
פרוטוקול זה אינו משמש כלל להצפנה, אלא להחלפת מפתחות בלבד.
המגבלה העיקרית של פרוטוקול דיפי-הלמן היא רגישותו להתקפת man in the middle .


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

3.Hash Functions:
הצפנות סימטריות והצפנות א-סימטריות משמשות עבור הצפנת מידע.
אך מעבר להצפנת המידע , כיצד נוכל לאמת שמי ששולח לי את המידע הוא באמת מי שהוא מצהיר שהוא?
וכיצד אני יכול לדעת שהמידע שעבר אלי ברחבי הרשת לא עבר שינוי כלשהו ע"י גורם זר (Data Integrity) ?

פונקציית Hash Function  היא פונקציה שממירה קלט חופשי באורך משתנה לפלט באורך קבוע, 
כל שינוי של ביט במידע יגרום לשינוי דרמטי ב Hash שיווצר.
Hash חזק, הוא כזה שלא ניתן לבצע בו reverse engineering או שניתן יהיה לייצר שתי קלטים שייתנו לנו את אותו ה Hash .

אלגוריתם MD5 :
מעבד הודעות בגודל משתנה ופולט ערך בגודל קבוע של 128 סיביות.
הוא נחשב ככזה שקל ליצור עבורו שתי קלטים שיתנו את אותו ה Hash .
חתימת MD5 היא מחרוזת טקסט חסרת משמעות שאורכה 32 תווים, כגון: 1b1e2cca18d2beec33272ea8b3f4c271.

SHA- 
היא משפחה של פונקציות גיבוב קריפטוגרפיות, הכוללת את הפונקציות SHA-0 (במקור SHA)‏, SHA-2, SHA-1 והחל מ-2012 גם את SHA-3. 
SHA נחשב לחזק יותר מכיוון שאורך ה Hash שלו יכול להיות 160,256 או 512 ביט .

יישומים של Hash Functions :

One Way Password- ישנו שימוש של יצירת קובץ סיסמאות חד כיווני.
ישנם מערכות הפעלה ומערכות נוספות שממקמות את קובץ הסיסמאות שלהן מקומית על המחשב.
כאשר משתמש כלשהו מקיש את הסיסמא האישית שלו, ה Hash של הקלט שלו מושווה עם ה Hash ששמור בקובץ הסיסמאות.

חתימה דיגיטלית- בחתימה דיגיטלית ישנו שילוב בין Hash Functions ל- הצפנה א-סימטרית.
ה Hash מוצפן ע"י המפתח הפרטי .
מי שירצה לשנות את ההודעה של המשתמש, חייב להגיע למפתח הפרטי שלו.

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


דוגמאות ליישומים פרקטיים של הצפנה סימטרית, הצפנה א-סימטרית ו Hash Functions  בעולם אבטחת המידע:


SSL- Secure Sockets Layer ( זהוי דוגמא מצויינת של מימוש העברת נתונים ע"י שימוש ביסודות הקריפטוגרפיה)
פרוטוקול תקשורת  המאשר תקשורת מאובטחת ומוצפנת בין 2 יישומים.
עובד בשכבה הגבוהה של מודל ה-OSI (שכבה שביעית).  למען האמת, ניתן לומר שטכנולוגיית ה SSL היא כבר מיושנת ושבשנים החליפה אותה- TLS.
SSL קיים בשביל לענות ע שני צרכים:
1. הצפנת המידע - לוודא שאף גורם צד ג' אינו יכול לקרוא את המידע שנשלח בין א' ל ב'.
2.הזדהות - לוודא שהמחשב מולו אתה מתקשר הוא באמת מי שהוא טוען.


תיאור SSL ב חמישה שלבים:
1. הלקוח ניגש לאתר gmail שמוצפן ב https, שני הצדדים מסכימים איך להצפין:
כצעד ראשון השרת והלקוח מסכמים ביניהם על צורת ההצפנה :
Key --- RSA  or  Diffie-Hellman  orDSA   *
Cipher --- RC4 or Tripel DES or AES      *
Hash ---- MD5  or  SHA                             *
בנוסף גם ישלח הVersion של הפרוטוקול, לרוב 3.3 (TLS) ובנוסף, ה- Random number.
כצעד ראשון, השרת ישלח ללקוח- "אני החלטתי על RSA להחלפת מפתח, AES להצפנת ההודעות ו SHA1 לעירבול.
בתגובה, המשתמש יחזיר לשרת "אוקיי, אני יכול לעמוד בתנאים האלה" .

2. הServer שולח מספר נתונים ללקוח:
השרת שולח ללקוח תעודה דיגיטלית (חתומה ע"י CA)- התעודה הדיגיטלית כוללת פרטים חשובים מאוד
לקריאה: http://en.wikipedia.org/wiki/Public_key_certificate.
ובנוסף הוא מציג בפניו את ה Public Key שלו.


3. ה Client מאשר לשרת "התחל להצפין":

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

4. השרת אומר ל Client "אני מתחיל להצפין":
א. השרת אומר ללקוח "אני הולך לשלוח כעת הודעה מוצפנת"
ב. Lets go -- ההודעה שנשלחת כעת ללקוח מוצפנת לחלוטין.

5. כל ההודעות מוצפנות בזה הרגע בהצפנה סימטרית.
כעת הלקוח מבצע הזדהות (במקרה שלנו Gmail)
User name: david
Pass : AhiT0v

ההזדהות לGmail מוצפנת ונשלחת על הקו בצורה הבאה:
jhduiSGSG@!#12uedhsuhs82387jhds

HTTPS:

חשוב מאוד לדעת ש HTTPS באופן רשמי, הוא אינו פרוטוקול תקשורת לכשלעצמו, אלא שימוש בפרוטוקול HTTP על שכבת SSL\TLS ובכך מקנה יכולות אבטחה של סטנדרט SSL\TLS לתקשורת HTTP רגילה.



 
 



IPsec - (ויקיפדיה)

IPSec מספק זיהוי של השולח, וידוא שלימות של חבילות IP, הצפנת תוכן החבילות, מניעת שליחה מחדש של חבילות ישנות והגנה נגד ניתוח התעבורה ברשת.

לחבילות IP אין אבטחה מובנית. לכן, יחסית קל לזייף כתובות של חבילות IP, לשנות את תוכנן, לשדר שוב חבילות שכבר נשלחו ולבדוק את תוכן החבילות. כאשר מתקבלת חבילת IP, לא ניתן להיות בטוחים בזהות השולח, בתוכן החבילה (כלומר ייתכן שהיא שונתה) ובכך שתוכן החבילה לא נקרא בידי אדם או תוכנה לא מורשים. 
כאן בדיוק IPSec נכנס לתמונה,

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

השימוש הנפוץ ביותר של IPSec הוא במימוש של VPN-ים.

כיום קיימים בשוק שלושה מימושים שונים עיקריים של VPN-ים:

VPN מבוסס IPSec - הוותיק מבין השלושה
VPN מבוסס SSL (פרוטוקול אבטחה שפותח על ידי חברת נטסקייפ)

VPN מבוסס L2TP (פרוטוקול אבטחה נוסף שפותח על ידי מיקרוסופט ו-סיסקו) - פחות נפוץ.

השאר תגובה

למעלה