אבטחת מידע

 אבטחת מידע

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


Confidentiality

נתחיל ב Confidentiality סודיות, אז מה זה סודיות ?
אנחנו רוצים שהתכנים שלנו יהיו סודיים ולא יהיו נגישים לאנשים אחרים.
אחד הנושאים העיקריים בסודיות הוא: הצפנה.


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

                                   




דוגמה: ״WR EH RU QRW WR EH״ שזה בעצם צופן היסט (של 3 אותיות) למשפט ״to be or not to be״, בעצם לוקחים את האותיות ה - a-z ומסיטים כל אות 3 צעדים קדימה למשל האות A הופגת להיות C והאות B הופכת להיות האות D וכך הלאה..




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


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









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

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



וזה עובד באופן הבא:
קודם כל תכירו 2 דמויות פקטיביות, בוב ואליס.

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

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

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

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





ככה נראה מפתח:



ככה נראית הודעה מוצפנת:



SSH Keys

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

קודם כל, צריך לזכור את שם המשתמש והסיסמה כל הזמן.

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

לכן הדרך הטובה ביותר היא לעבוד עם SSH keys.

מה זה ?

מדובר במנגנון שיוצר שני מפתחות – מפתח פרטי ומפתח פומבי ששניהם מתואמים ותלויים זה בזה.

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




דוגמה לשיחה מאובטחת ברשת האינטרנט:







Integrity

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

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

אז איך זה קורה ? באמצעות hashing, וזה קורה בצורה הבאה:


Hashing


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

המכונה נקראת hasing algoritem (הדגם כאן של המכונה הוא MD5, יש גם דגמים מסוג SHA-256 ועוד ועוד..) והכנסתי לו קובץ מידע מסויים עם בשם ״michael״, המספר שאקבל הוא 20722010705ad7641c2b2c86bdc255ba זה מספר שמיוצג באמצעות ספרות hexdecimel הגודל שלו הוא 128 ביט, בכל פעם שאכניס את אותו קובץ המידע אני אקבל את אותו המספר.



האשינג הוא חד כיווני.. אם אני אכניס למכונה את המספר: ״20722010705ad7641c2b2c86bdc255ba״
אני לא אקבל את הקובץ ״michael״ כיוון שבתוך המספר הזה לא באמת קיים קובץ המידע michael, אלא מתבצעת כאן פעולה מתמטית שמתוכה נגזרה איזושהיא תוצאה, אבל התוצאה לא מכילה את המידע עצמו..
האשינג ניתן לבצע על כל מידע דיגיטלי שיש לנו... קבצים מכל הסוגים וכו...

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



והוא רוצה להעלות את המתכון שלו לאתר שלו כדי שאליס תוכל לגשת לאתר ולהוריד את המתכון שלו, אז בוב כותב אתר אינטרנט ומעלה לשם את המתכון המיוחד שלו, כמובן שכדי לגשת למתכון צריך להתחבר עם שם מזהה וסיסמה, לאחר שאליס הקישה את שם המשתמש והסיסמה, ועכשיו היא רוצה להוריד את קובץ המתכון, איך היא תהיה בטוחה שעד שהמתכון הגיע אליה מישהו לא שינה אותו בדרך ?
הפתרון לכך הוא שבוב הוסיף באתר את מספר ה hashing של הקובץ ״622CC5EECACA59AD2BA9F79B6CAC7E97״
והוא מוודא שזה המספר בלבד שמתקבל אם נעביר את הקובץ במכונת ההאשינג שלנו.

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

מתכון אמיתי למי שהתגרה ובא לו חורשת סבזי...:

Comments

Popular posts from this blog

Selenium - locators

Selenium Webdriver Manager

Selenium - brief

Page Object Model, what is it ?

תבניות עיצוב - מפעל

Security Informtion