Data Security
Data Security
סוגי תוקפים –
.1
משתמש בלי ידע רחב – משתמש עשה משהו בטעות.
.2ילדי סקריפטים -אנשים שלמדו בעצמם ,ישתמשו בדברים מהרשת ,בשבילם
זה משחק..
.3כובע שחור – תוקף מקצועי למטרות כסף וכו'
4אקטיביסטים – בין ילדי סקריפטים ל כובע שחור – תוקפים למטרות אקטיביסטיות.
.5כובע לבן – חוקרי אבטחה למטרות עבודה .אנשים טובים שמועסקים בחברות
על מנת להגן על המידע.
שיעור 2
הצפנה סימטרית
איך נעזור למה שמחפשים:
- - Confidentialityהצפנה ,החלפת מפתח,
- - Integrityפונקציית הש קריפטוגרפית
- Authenticityחתימה דיגיטלית
- - Authenticationאימות באפס מידע ,אלגוריתמים
- Non repudiationחתימה דיגיטלית ,טביעה דיגיטלית
שיעור 3
נמשיך עם בלוקס – אם יש שאריות :כמו שראינו לעיל.
:Ecbהמודל הכי פשוט .מחלקים לבלוקים מצפינים .וגם המקבל מפענח כל אחד
בנפרד .הבעיה :אם יש חזרות אז גם בקובץ המוצפן יהיה חזרות כלומר הרבה
בלוקים מוצפנים יחזרו על עצמם .כמו עם הפינגווין .מתי כן אפשר להתשמש?
כששולחים רק בלוק אחד למשל שאז אין חזרות ..או אם המידע הוא רנדומלי
לחלוטין .כדי להתגבר על זה נשתמש ב cbcשיודע למנוע חזרות.
- :Cbcשרשור בלוקים .לפני שמצפינים עושים xorעם הבלוק המוצפן הקודם ואת
מה שיצא מצפינים .לבלוק הראשון נותנים דאטה חיצוני לעשות איתו .xorהוא לא
חייב להיות רנדומלי ולא חייב להיות סודי .הוא צריך להיות שונה בכל הודעה ,אבל
המקבל צריך לדעת אותו .המקבל בהתאמה לוקח את ההודעה המוצפנת מפענח
ועושה לה xorעם ivומקבל את ההודעה הראשונה .ואז מקבל את ההודעה
המוצפנת השנייה ,מפענח ועושה לה xor
עם ההודעה המוצפנת הקודמת וכך מקבל את ההודעה השנייה וכן הלאה.
חסרונות :אין הצפנה במקביל ,כי חייב בכל שלב לחכות להודעה הקודמת .אבל
ניתן לפענח במקביל .אם יש ביט אחד דפוק זה משפיע גם בביט אחד על ההודעה
הבאה .ניתן לפענח גם מאמצע הדיסק .נשים לב שאפילו בבלוק אחד cbcעדיף
על ebcכי יש לו .iv
- :Ctrגם פה יש ivשמשתנה מהודעה להודעה .הוא מתפקד כמו מונה .מצפינים
את ה ivכלומר בכל בלוק מצפינים את iv +1ומקבלים הודעות חדשות שעושים
להם xorעם ההודעה המקורית וכך מקבלים הודעה מוצפנת .המקבל עובד
בהתאמה קודם כל מצפין את ivואז עושה xorעם ההודעה המוצפנת ומקבל את
ההודעה המקורית .מי שמתבונן מהצד אמנת יודע את ivואת האלגוריתם אבל אין
לו את המפתח .יתרונות :מהיר כי המקבל לא צריך את הסייפר כדי להתחיל
לפענח .אלגוריתם הפענוח ואלגוריתם הפענוח הם אותו האלגוריתם .בגלל שזה
מהיר ואפשר להתחיל לפענח מהאמצע זה טוב להזרמת וידאו .טעויות הן מינימלות
רק מה שהשתנה ישתנה .ניתן להצפין ולפענח בצורה מקבילה.
עד עכשיו דיברנו על השילוב של כמה בלוקים אבל איך מצפינים כל בלוק בנפרד?
רשתות פייסטל – צריך לדעת? הפונקציה fלא צריכה להיות הפיכה כי יש .xor
מחלקים את הבלוק לשני חלקים שווים ימין ושמאל .כל בלוק מוצפן בנפרד .איך
נצפין? באמצעות רשתות פייסטל .ניתן לקבוע גדלים שונים לבלוקים ככל
שהבלוק יותר גדול זה יותר מאובטח אבל יותר איטי .ניתן לקבוע גדלי מפתחות
אבל ככל שהמפתח יותר גדול המערכת יותר איטית והמערכת יותר בטוחה .ניתן
לקבוע את מספר הסיבובים וככל שיהיה יותר גדול יהיה יותר מאובטח אבל יותר
איטי .ניתן לשנות את . f
סוגי הצפנת בלוק:
- - Desכיום נחשב פרוץ וחלש .בלוק 64ביט מפתח 56ביט מבוסס על פייסטל .יש
16סיבובים ויש פרמוטציה התחלתית שניתן להפוך אותה .יש פרמוטציה בסוף .זה
לא עוזר לאבטחה וזה לא סוד אלא רק המפתח הוא הסוד .המפתח מחולק לשתי
מפתחות של 28ביט ועם כל מיני תזוזות בכל סיבוב יש מפתח של 48ביט .בכל
סיבוב לפונקציה מכניסים את המפתח ומריצים את fעל החצי בלוק .חולשות:
מפתח קטן .יש מפתחות חלשים וחצי חלשים .מה הפתרון למפתח חלש? להגדיל
ופה נכנס ה .double des
- Double – desחסרון :כמו בכל דאבל של הצפנה סימטרית :ניתן לפרוץ את
המפתחות כך :בהנחה שיש שלך הודעה מוצפנת אחת ואת הפענוח שלה ,קח את
כל האפשרויות למפתח הראשון והצפן את הפליין עם כל אחד מהמפתחות ושמור
את כל האפשרויות בטבלה .כעת פענח את ההודעה המוצפנת באמצעות כל אחד
מהאפשרויות למפתח השני .עבור כל תוצאה השווה ובדוק האם היא נמצאת
בטבלה .אם היא נמצאת אז מצאת את המפתח הראשון והשני.
מה הפתרון?
Triple -des : 168ביטים .מצפינים עם הראשון מפענחים עם השני ומצפינים שוב עם
השלישי .כך ניתן להשתמש במפתח אחד לכולם ולדמות desרגיל במקרה
הצורך.
שיעור 4
הצפנה סימטרית – כעת נעבור לסטרים סייפר.
ורנהם – עושים לכל ביט xorעם ביט אחד במפתח .ניתן להשתמש במפתח אחד
אינסופי שאף פעם לא חוזר על עצמו וזה נקרא . one time padבמקרה זה אסור
להשתמש פעמיים באותו מפתח כי אז אפשר לעשות xorלשתי הודעות מוצפנות
אחד עם השני ולקבל שילוב של שתי ההודעות המקוריות כלומר המפתח נעלם.
ניתן גם להשתמש בפסאודו אקראי שזה אומר בהינתן סיד קצר מקבלים מספר
ארוך שנראה כמו אקראי אבל הוא לא באמת אקראי כי הוא תוצאה של הסיד
ומישהו אחר שיכניס אותו סיד יקבל אותו מספר ארוך .אז מכניסים סיד ומקבלים
מספר ארוך פסאודו אקראי שעושים לו xorעם ההודעה המקורית ומקבלים הודעה
מוצפנת.
מחולל פסאודו אקראיים:
הדרישה היא שלא נוכל לחזות את הביט הבא.
דוגמא ראשונה :דיפי – הלמן -זהו לא אלגוריתם הצפנה אלא סכמה לקביעת
מפתח סימטרי משותף בין 2אנשים כלומר להחלפת מפתח וזה מבוסס על . dsl
אליס ובוב מעוניינים להחליף מפתח ביניהם מבלי להיפגש כלומר עוברים ג=דרך
משהו לא סודי .אז הם קובעים צבע צהוב משותף .כל מי שרוצה יכול לדעת אותו.
בנוסף לבוב יש צבע סודי שרק הוא יודע – טורקיז .וגם לאליס יש מפתח סודי שרק
היא יודעת – אדום .בוב מערבב את הפומבי עם הסודי שלו ושולח את המעורבב
דרך הערוץ הפומבי לאליס .אותו דבר אליס עושה .כעת כל אחד מהם מוסיף
לצבע שקיבל את הצבע הסודי שלו .יצא שלשניהם יצא אותו צבע חום .כי סך הכל
שני הצדדים חיברו את אותם הצבעים.
למה מי שראה בדרך לא יצליח לפרוץ? הוא יודע את צהוב .הוא לא יודע את
הסודי אבל רואה בערוץ המשותף את הצבע שהם שלחו אחד לשני .הוא לא יגיע
לעולם לחום כי אין לו את הסודי שמשולב בחום .נזכיר שקשה להפריד צבעים ,כמו
בעיית ה .dsl
בעולם המספרים :
אליס ובוב מסכימים על gו pשכולם יודעים .אליס בוחרת מספר סודי aובוב בוחר
מספר סודי . bאליס שולחת לבוב gבחזקת aמודולו Pובוב שולח לאליס g
בחזקת bמודולו . pכעת אליס מחשבת k :היא לוקחת מה שקיבלה מבוב
ומעלה אותו בחזקת המספר הסודי שלה .אותו הדבר בוב עושה עם המספר הסודי
שלו וככה הם קיבלו שניהם את אותו המספר ובעצם החליפו סיסמא בינהם מבלי
להיפגש.
למה זה עובד? זה שיש לפורץ את gבחזקת aמודולו pואת השני זה לא עוזר לו
למצוא את aאו bכי זה בעיית .dsl
השאלה האם בהינתן שתי ההודעות הגלויות הוא יכול לשלב ולמצוא את
הסיסמא? לא .אבל זה שהוא לא יכול זה לא בגלל dslאלא בגלל הנחה אחרת
שקוראים לה cdhשאנו מניחים שהיא קשה.
בעיה בדיפי הלמן -אמנם בטוח מפני האזנות אבל אין זיהוי- ))autentucation
כלומר בוב לא יודע בוודאות שאליס נמצאת בצד השני .כלומר יש בעיה של איש
באמצע כך :אליס פונה לבוב ולמעשה מדברת עם הפורץ ובהתאמה כך גם בוב.
אליס שולחת לבוב את gבחזקת aמודול Pוהתוקף שומר את זה לעצמו ובמקום
זה שולח לבוב את gבחזרת eמודול P
.אותו הדבר עם בוב .כעת לתוקף יש מפתח משותף עם אליס ועוד מפתח נפרד
משותף עם בוב .כעת כל שאליס שולחת לבוב התוקף יכול לפענח לקרוא ואז
להצפין מחדש במפתח שלו ושל בוב ולשלוח לבוב .מה הפתרון? מנגנון אימות .
- Rsaמבוסס על בעיות קשות של פקטורינג ועל גילוי שורש בעולם של מודלו .זה
מתבסס על הרעיון שלמצוא שורש בעולם של מודולו זה קל אם יודעים את
הפקטורינג של המודולו אבל קשה אם לא .מנגנון :אליס רוצה שבוב יוכל לשלוח
לה הודעות .היא לוקחת 2מספרים ראשוניים pו qסודיים .מחשבת מכפלתם
שתהיה n. Nהוא המפתח הפומבי P .ן qהם סודיים .כעת אם בוב רוצה לשלוח לה
הודעה הוא מעלה את הפליין טקסט בחזקת d( dגם ידוע לכולם) מודלו nומקבל
סייפר .cאיך צפענחים? צריך להוציא שורש מסדר dשל .nרק אליס יכולה לעשות
את זה כי רק היא יודעת את הפקטורינג של .n
אוילר :פי של nהוא מספר המספרים שקטנים מ nוזרים לו .עבור nראשוני פי יהיה
.n-1
נשים לב גם ש עבור n=pqכאשר p,qראשוניים נקבל שפי של nיהיה
p-1כפול .q-1
הפתרון לכל הבעיות הללו זה להוסיף פדינג כלומר להודעה שאני רוצה להצפין
אני יוסיף קבוע ותבנית ומספר רנדומלי .איך התוספות הללו עוזרות? לראות.
סטנדרטים – לדלג.
איך עובד rsaבפועל? מפתח בגודל 1024עד 2048ביט .כלומר זה הסדר גודל
של nושל . dאיך לייצר מפתח? מגרילים 1023ביטים ובודקים אם המספר הוא
ראשוני .כך עבור 2המספרים.
:Authentication
איך בשימוש ב rsaאליס יכולה לדעת שהיא מתקשרת עם בוב? בהינתן n,eיש רק
dאחד שאותו רק בוב יודע .אז אליס שולחת לבוב מספר רנדומלי rשקבעה
עכשיו ובוב מפענח כלומר מעלה אותו בחזקת dמודלו . nושלוח את התשובה
לאליס וכעת אליס מפענחת עם המפתח הציבורי כלומר להעלות את התשובה
בחזקת eמודולו nולצפות לקבל את .rאם באמת קיבלה את rאז בוב הוא בוב
באמת.
אל – גמל :לדלג.
שיעור 5
שיעור 6
שימושים לקריפטוגרפיה אסימטרית.
דיברנו על בעיית שיתוף מפתחות – איך לשתף מפתח בצורה סודית.
נדבר על מפתחות – איך מייצרים מפתח טוב? צריך מפתח שהתוקף לא יוכל
לנחש.
איך שומרים מפתחות ? צריך במקום מאובטח .איך מפיצים? צריך בצורה סודית..
איך לחדש מפתחות?
איך מייצרים :קוד לייצור מפתחות .הקוד מייצר פסאודו רנדומלי ורכיב חומרה מייצר
רנדומלי לגמרי .יש רנדום ויש יורנדום אחד חוסם ואחד לא .מי שחוסם זה רנדום כי
הוא מחכה שיהיה מספר אקראי מספיק טוב ואילו יורנדום לא תוקע את המערכת כי
הוא נותן משהו גם לא הכי אקראי.
איך מאחסנים ? אפשר פיזית .אפשר לתקוף באמצעות ניתוח צריכת חשמל.
אפשר לתקוף באמצעות שמירת זיכרון של תהליך כשעושים ריסט .צריך לדאוג
לאופציות גיבוי.
איך מפיצים מפתחות באמצעות מנגנון סימטרי? אם אליס רוצה לדבר עם בוב זה
לא יעיל לדבר ביניהם .אפשר בכל פעם לשלוח מפתח חדש כשהוא מוצפן עם
המפתח הקודם אבל יש לזה חסרונות כי צריך נקודת התחלה וכי אם הסיבה
להחלפה היא שהמפתח הקודם נפרץ אז זה לא עוזר .אפשר לפנות לגורם שלישי
שיתן לשניהם מפתח אבל זה מצריך תקשורת משניהם עם הגורם השלישי.
מבנה המפתח :יש מפתח סשן ויש מפתח ראשי .הסשן הוא שמוחלף בכל פעם
והוא מתקבל באמצעות המפתח הראשי .ואז אם הסשן ייפרץ אפשר להשתמש
בראשי להחליף.
הפצה :אליס פונה לבוב .אנו מניחים שלאליס ובוב יש מפתח משותף עם המרכז
. , Ka,kbמדובר בהצפנה סימטרית .אליס אומרת לסנטר אני רוצה לדבר עם בוב
וזה הזהות שלי והיא נותנת נונס ייחודי לסשן הזה .הסנטר שולח לאליס בתשובה 2
הודעות מוצפנות .אחת מוצפנת עם המפתח של אליס ויש בה המפתח המשותף
שהמרכז מייצר עכשיו לאליס ובוב ,ויש את הזהות של אליס ושל בוב ואת הנונס
כדי שידעו על איזה הודעה הסנטר הגיב .בהודעה השנייה היא מוצפנת עם המפתח
של בוב ויש בה את המפתח שהסנטר מייצר עכשיו לאליס ובוב ,ואת הזהות של
אליס.
למעשה ההודעה השנייה מיועדת עבור בוב אבל נשלחת לאליס .אליס מקבלת
את ההודעה הראשונה ומפענחת ומקבלת את הסשן קי ומוודאת שהנונס הוא
באמת מה השיא שלחה .את ההודעה השנייה היא מעבירה ישירות לבוב .בוב
מפענח ורק הוא יכול לפענח .למה הסנטר לא שלח ישירות לבוב? כי בוב לא פנה
לסנטר עדיין ,ואז גם הסנטר צריך לזכור מצבים .כעת בוב רוצה לוודא שהוא מדבר
עם אליס אז הוא מגריל מספר נונס חדש ומצפין אותו עם המפתח של הסשן
שאליס יודעת ושולח לאליס .אליס מפענחת ושולחת תגובה מוצפנת עם המפתח
של הסשן .התגובה תהיה משהו שהוסכם מראש .בוב מקבל ומפענח ובודק שהוא
מקבל את התגובה שהוא מצפה.
איך עוד אפשר להפיץ מפתח סימטרי? באמצעות הצפנה אסימטרית ,כך:
אליס מייצרת מפתח ציבורי ומפתח פרטי ושולחת את הציבורי לבוב ובוב יצפין סשן
קי עם הציבורי וישלח לאליס ואליס היחידה שיודעת לפענח את ההודעה וכך תשיג
את הסשן קי .מה הבעיה? איש באמצע .בוב לא יכול לוודא שהמפתח הציבורי
שייך לאליס .כלומר אפשר לתקוף כך :אליס שולחת לבוב ,התוקף חוסם את
התקשורת ושולח לבוב מפתח ציבורי של התוקף .בוב מקבל ומצפין באמצעות
המפתח הציבורי הזדוני את הסשן קי שהוא הגריל ושולח אותו לתוקף .התוקף
מקבל ומפענח וכך מקבל את הסשן קי ואז מצפין את הסשן קי עם המפתח הציבורי
האמיתי של אליס ושולח אותו לאליס .אליס תפענח ותקבל את המפתח
שלמעשה הוא של התוקף .הפתרון :אפשר לשלוח את הציבורי באופן פיזי .אפשר
להפיץ ברבים .אפשר דרך סנטר שהוא תמיד מאובטח .אפשר באמצעות
סרטיפיקציות של גורם שלישי.
נרחיב על סרטי :קובץ בינארי עם דטה :מעיד על זהות .מחזיק תאריך תפוגה,
מפתח ציבורי ,וחתימה כדי לוודא שהסרטי אמיתי ולא התוקף כתב אותו וגם לדאוג
לשלמות.
זה עובד בשרשראות של סרטיפיקציות עד שמגיעים למי שמכירים וסומכים על
המפתח הציבורי שלו.
מה המנגנון שעומד מאחורי זה? - Pkiיש רוט ויש את השרשרת שמתחת.
Tls - httpsמשתמש בזה .מה זה נותן ? סודיות .כשאני מדבר עם גוגל כשאני
משתמש בסרטי אז ההודעות שלי מוצפנות כל הדרך עד לשרתים של גוגל כל
עוד אין תקלות .זה נותן גם שלמות באמצעות . macזה נותן גם . authenticityזה
שקוף לרמת האפליקציה .מתחת ל tlsיש פרוטוקולים קטנים.
איך עובד הפרוטוקול? לחיצת ידיים – מחליפים הודעות על כל מיני פרטים
לתקשורת למשל באיזה אלגוריתם משתמשים להחלפת מפתחות או להצפנה.
שלב – 2השרת שולח סרטי ללקוח והלקוח מאמת את הסרטי באמצעות
השרשרת ,מחליפים מפתחות.
שלב – 3הלקוח שולח את הצד שלו בהחלפת המפתחות כמו בדיפי הלמן.
שלב – 4כבר עשינו אימות והחלפנו מפתח ,כעת כל אחד שולח באיזה אלגוריתם
הוא תומך .ועכשיו מתחילים לתקשר.
שיעור 7
סיכום על קריפטוגרפיה.
בקרת גישה – מחולק ל autenticationכלומר לוודא זהות שמי שטוען שניגש זה
באמת הוא ,ול authorizationכלומר אחרי שהשתכנענו שאתה זה אתה בוא
נראה איזה הרשאות יש לך .
- Autenticationאיך לוודא שאני זה באמת אני? סיסמאות 3 .חלקים :משהו
שאתה יודע – סיסמא ,מספר ת.ז ,.ת.ל .הבעיה שזה לא תמיד סודי ..וגם יש
קצת מדי אפשרויות ,בנוסף אם זה סיסמאות אז קשה לזכור ויש נטיה לבחור
סיסמאות קלות .גם קשה לזכור הרבה סיסמאות .יש קונפליקט – האדמין רוצה
סיסמאות מסובכות והלקוח רוצה סיסמא קלה .סיסמאות ביחס למפתח קריפטוגרפי
– אותו דבר אבל בסיסמא לוקחים תווים מתחום קטן יותר ..בערך 32ולא . 256
בנוסף אנשים בוחרים דברים די קלים . ..איך תוקפים ? אפשר לנסות לנחש.
אפשר לנסות את התקפת מילון .אפשר לנסות להאזין לתקשורת ולראות את
הסיסמא .אפשר לשלוח מחדש את אותה הודעה שנשלחה מקודם מוצפנת ואם
אין הגנה על ריפליי אצליח להיכנס עם ההודעה הישנה שהיא כבר חתומה טוב.
אפשר לעשות פישינג – להידמות לאתר .הבעיה שצריך לגרום לך להגיע לאתר
של הפישינג ולא לאמיתי .לפעמים הסיסמא היא דיפולטית .לפעמים הסיסמא
מודפסת כחלק מלוגים .יש תוכנה שמקליטה את ההקלדות .התחזות ל . itאיך
אפשר להתמודד? להגביל את מספר האפשרויות לניסיון כניסה .אפשר לא
לאפשר סיסמאות חלשות .או לא לאפשר לשנות בצורה שדומה להודעה
הקודמת .להשתמש בהש.
משהו שיש לך – מפתח פיזי ,כרטיס אשראי ,כרטיס ציפ ,מפתח קריפטוגרפי,
חתיכת חומרה .איך משתמשים? יש מפתח שמוטמע בחומרה והצד השני מנסה
לאמת את המפתח שלנו .אליס תחשב hmacעל הנונס שקיבלה מהשרת עם
המפתח הסימטרי ושולחת את התשובה לשרת שגם מחשב hmacעל הנונס
בעזרת המפתח המשותף .ואז משווה .צריך שיהיה נונס ושיהיה רנדומלי כדי למנוע
התקפת ריפליי כי אם הנונס היה קבוע התוקף יכול להעתיק את ההודעה של אליס
עם ה hmacולהזדהות כאליס בפעם הבאה .את כל זה אפשר לעשות באמצעות
אסימטרי .אפשר כמו ssh-1ואפשר כמו . ssh-2אפשר גם לבצע אימות באמצעות
הוכחה ללא ידע.
יתרונות לחומרה :יותר קשה לתקוף ,מוגן פיזית ,צריך ידע ספציפי לפרוץ .חסרון:
אפשר לגנוב פיזית .זה יקר יותר.
אפשר לשלב את משהו שיש לך יחד עם משהו שאתה יודע למשל כספומט או
אשראי.
משהו שהוא אתה – טביעת אצבע ,חתימה על האשראי ,זיהוי פנים ,זיהוי קולי ,זיהוי
קשתית קצת בעייתית כי קל לזייף .נרצה :שיש לכולם ,שהוא ייחודי לכל אחד,
שהוא קבוע ולא משתנה ,שניתן לאסוף אותו כלומר להשתמש בו בקלות.
עקרון – עבור משתמש ומערכת עם Nמשאבים אז ליוזר צריך להיות גישה רק
למה שהוא צריך .הרעיון הוא בטיחות כלומר אם מישהו פרץ למשהו עם הרשאות
נמוכות אז זה לא נורא .החסרון הוא שקשה לתחזק והמשתמשים לא מרוצים מזה.
בעיית הפקיד המבולבל -עובד על . acl
אליס רוצה להשתמש בשירותי קומפילציה( .המחשב הוא הפקיד) והיא צריכה
לשלם .אז יש קובץ שאותו היא רוצה לקמפל שהרשאותיו :אליס יכולה לקרוא
ולכתוב והמחשב יכול רק לכתוב .יש גם קובץ פלט שגם אליס וגם המחשב יכולים
לקורא ולכתוב .יש גם את השירות קומפילציה שגם אליס וגם המחשב יכולים
לקרוא ולהריץ .יש גם בסיס נתונים של התשלומים שהמחשב בלבד יכול לקרוא
ולכתבו .אליס יכולה לתקוף כך :היא תגיד למחשב לקמפל קובץ ואת התוצאה
לכתוב לקובץ של התשלומים! אז יוצא שלאליס נהיתה גישה למשהו שלא אמור
להיות לה גישה.
זה נקרא .privilege escalationויש בזה 2סוגים .אחד זה שאתה משיג הרשאות
של יוזר אחר שיש לו יותר הרשאות ממך .השני זה שאתה משיג הרשאות של סתם
משתמש אחר.
הפתרון הוא להשתמש במסוגלות ואז זה טוב כי כשאליס תבקש משאב היא
תצמיד את ההרשאות שלה .ואז הקומפיילר לא יוכל לגשת לבסיס נתונים.
אז יש יתרונות וחסרונות ל aclלעומת מסוגלות .ואלו הן :עמוד .43
: Blpהגנה רמת שלבים :לכל משאב יש סיווג .מחולק לארבע רמות .יוזרים
מקבלים רמה באמצעות בדיקת רקע .מי שיש לו רמה מסויימת יכול לגשת לקרוא
אך ורק מדברים שהם ברמה שווה או פחותה ממנו .אבל לגשת לכתוב אתה יכול
לגשת לכתוב רק לדברים שהם ברמה גבוהה ממנו או שווה לו כדי שלא יכתוב
דברים מסווגים לקבצים ברמה נמוכה.
שיעור 8
אבטחת רשתות
השכבה הפיזית –
חוטים .איך לתקוף :להאזין לחוטים .להתערב בתקשורת .להזריק מידע .קשה
לתקוף צריך ידע ספציפי וציוד מיוחד וצריך להיות קרוב בדרך כלל.
ללא חוטים – וויפי ,בלוטוס ,וכו ,בד"כ יש נקודת קצה ויש ראוטר כלשהו .אז יותר
קל להאזין לרשת .וגם להזריק .אפשר לזייף כתובת . macיש התנגשויות של
רשתות כלומר רשתות חופפות .יש גישה זדונית של מישהו רשע שמנסה להתחבר
אז הוא לא צריך ממש להתחבר לחוטים .אפשר לעשות נקודת גישה זדונית.
אפשר לעשות איש באמצע כלומר התוקף משמש הן כנקודת גישה והן כנקודת
קצה .אפשר לתקוף dosבאמצעות שליחת הרבה בקשות .אפשר ad hocכלומר
כאשר אין נקודה מרכזית שמנהלת את הרשת אז המערכת יותר פגיעה.
איך נגן? אפשר להסתיר את הקיום של הרשת .זה לא מספיק .אנחנו יודעים מה
נדרש מהגנה.
יש סטנדרט של הגנה – 802.11מגן על רשת פנימית ללא חוטים .יש בו מנגנוני
הגנה .יש בו wepשנפרץ .יש בו גם את wpaשזה יותר בטוח ,משתמש ב mac
של .intergrityזוהי בעצם הגנה בין המחשב לנקודת גישה ולא מעבר .מהראוטר
802.11בטוח יחסית. והלאה זה לא מוצפן .סכמה איך 802.11עובד :עמוד .10
שכבת הרשת –
למה צריך שכבת רשת אם הפיזית מספקת הגנה? בגלל שמתקשרים בין רשתות
גם ולא רק בתוך הרשת עד הראוטר .גם בגלל שיש בעיה של הגנת עומק כלומר
תמיד צריך כמה רמות של הגנה כדי שאם משהו יפול לא תיפול כל המערכת.
קוראים לזה .defense in depth
איך נראה פקט של ? ipיש check sumלזיהוי שגיאות ולא נגד התקפה .שולחים
כמידע את כתובת השולח ותכלס אפשר לכתוב משהו אחר וכך להתחזות למישהו
אחר.
מבנה הרשת – חיבור של רשתות שמחוברות כולם אחד לשני .יש פה בעיה של
אבטחה ולכן המציאו את החומת אש שחוסמת את התקשורת ושולטת על מה
שנכנס ויוצא מהרשת הפנימית לרשת הגדולה .עושים את זה באמצעות תמיכה
בפורטים מסויימים רק מה שנדרש .גם בתוך הרשת הפנימית יש חומות כדי לאשר
רק חלק מהתקשורת.
חומת אש – לחברה יש חומה כדי שהתקשורת שיוצאת מהמחשבים של החברה
החוצה ,תנוטר דרך החומה כדי שתאפשר רק תקשורת מסויימת .כך גם בכניסה
של תקשורת לארגון.
– Scadaרשת תעשייתית – אפשר להתחבר מרחוק אבל אין צורך להוציא מידע אז
החומה תחסום כל יציאה החוצה ותאפשר רק פורט מסויים פנימה.
עם הזמן ראו שצריך חומה בכמה מקומות לאותה חברה בשביל אנשים שעובדים
מהבית וכו ,אז המציאו מבנה חדש שבו יש lanויש dmzשל רשתות הפנימיות אי
אפשר להגיע מבחוץ אבל ל dmzכן אפשר כלומר מחלקים את הרשת
לסגמנטים.
סינון אתרים – לחסום urlמסויימים מתוך .dbאיך זה מתגבר על ? httpsכי ה url
תמיד גלוי .
בדיקת הפקט – צריך לנתח אי אפשר להסתמך רק על פורט היעד כדי לדעת את
המטרה.
איך תוקפים חומת אש? בעיות בקונפיגורציה .לעבור דרך דברים חוקיים .לתקוף
חלקים לא מוגנים ופרצות .לזיף כתובות . ipלתקוף פיזית.
שכבת הטרנספורט –
- Vpnיש רשת פנימית ורוצים תקשורת החוצה מוגנת אז אם מישהו לגיטימי רוצה
לעבוד מהבית צריך לאפשר .אז vpnמדמה כאילו מכשירים מחוברים פיזית אבל
באמת זה וירטואלי .נרצה :סודיות ,שלמות ,אימות .איך עושים אימות ? אפשר
סיסמא ואפשר מפתח פרטי ואפשר משהו פיזי Vpn .מבוסס על - ipsecיש ערוץ
שדרכו הפרוטוקול עובר .האפליקציה לא מודעת אליו אלא ברמות מתחת
מקבלים אבטחה .
- Tcpפגיע ל . dos
Tlsעובד עם . tcpזהו מנגנון לקוח שרת.
– Dosלתקוף שירות ולגרום שהוא לא יהיה זמין .למנוע מהשרת גישה לרשת,
לשנות קונפיגורציה ,לקפוא באמצעות שליחת מידע לא תקין וכו.,
2סוגים :הצפה – שליחת הרבה הודעות ,או .ddosהשני – שליחת מידע לא תקין.
למשל דוגמא להצפה – הצפה של – synשולחים הודעה שרוצים להתחבר אבל
אל מתחברים ואז השרת מקצה המון משאבים.
– Ddosבוטנט – לתוקף יש הרבה מכשירים עם חיבור לרשת והוא נותן להם הוראה
לפנות למנהלים שלהם מדי פעם ולראות אם יש הוראה לשלוח בקשה .ואז הם
שולחים יחד בקשות בזמן שנקבע.
שרת הוא מחשב שמתחברים אליו דרך פורט .תוקף יכול להתחבר לפורט פתוח אז
כדאי לא לפתוח סתם פורטים – mmap .מזהה איזה פורטים פתוחים .אז התוקף
ישתמש בזה לבדוק מה פתוח ולתקוף דרכו - Metaspoit .יודע על חולשות
בתוכנות ואף עוזר לשלוח אותן.
שיעור 9
שכבת האפליקציה –
– httpsפרוטוקול httpבטוח .מבוסס על . tlsנותן העברת מידע בטוחה בין 2
צדדים – הדפדפן והשרת .קובעים מפתח משותף ,משתמשים בהצפנה של . aes
עושים שלמות עם sha-256ואמינות עם סרפי.
איך עובד האמינות עם סרפי? לאליס יש מפתח ציבורי שעליו היא סומכת שמתאים
למפתח הפרטי של ה . caגם לבוב יש כזה.לבוב יש גם זוג מפתחות פרטי וציבורי
שלו .כעת היא רוצה לדבר עם השרת בוב .בוב כבר ווידא בצורה פיזית את זהותו
מול ה . caוה caאמר אוקיי אתה בוב וה caחותמים לו חתימה דיגיטלית עם
המפתח הפרטי שלהם .בוב שומר את זה אצלו להרבה זמן .כעת שאליס פונה אל
בוב בוב אומר לה אני ישלח לך הודעות עם המפתח הציבורי שלי והנה הסרפי שלי.
תוכלי לוודא שזה אני באמצעות השוואה של המפתח הציבורי שלי עם המפתח
הציבורי של ה ca .מעתה והלאה בוב ישלח לאליס הודעות שחתומות עם
המפתח הפרטי שלו .ואליס תוודא עם המפתח הציבורי שקיבלה מבוב.
בעיות אבטחה - ssl stripping :כאשר אני חושב שאני מתקשר עם השרת ב https
אבל יש תוקף שמשנה את התקשורת ל httpמולי אבל עם השרת הוא מדבר
. https
בעיה נוספת :סרטי לא חוקי Common name .לא תקין .סרפי חתום על ידי caלא
מוכר .במקרים אלו אנו חשופים לאיש באמצע .כך :הדפדפן פונה לבנק ב https
כראוי .התוקף יוצר את אותה בקשה ושולח לבנק .הבנק עונה לתוקף ושולח
לתוקף את הסרפי שלו .התוקף יוצר אותו סרפי ומצמיד לו את המפתח הציבורי שלו
עצמו ,וחותם את הסרפי עם מפתח שהדפדפן מוכן לקבל למרות שהוא לא אמור
לקבל .כעת כשהדפדפן ייצר מפתח משותף הוא למעשה ייצר מפתח משותף עם
התוקף ומכאן והלאה התוקף עובר דרך כל התקשורת .זה גם מה שרימון עושים,
רק שהם נותנים ללקוח להתקין בעצמו את ה rootסרפי.
בעיה נוספת :כאשר יש עמודים שמערבים httpעם .https
אימייל :ארכיטקטורה Smtp .לא בטוחה .אז המציאו את – pgpמאובטח .עובד כך :
אימות :מחשבים הש על ההודעה ואת הפלט חותמים חתימה דיגיטלית עם המפתח
הפרטי של השולח .משרשרים את המייל ,מכניסים לזיפ את המייל והחתימה
ושולחים .הצד המקבל מחלץ מחשב הש על המייל מפענחים את החתימה ומשווה.
איך משיגים סודיות? מייצרים סשן קי – 128ביט ומצפינים את ההודעה עם הסשן קי.
מצפינים את הסשן קי עם המפתח הציבורי של המקבל ושולחם את ההודעה עם
הסשן קי .המקבל מפענח את הסשן קי ומפענח את ההודעה המוצפנת עם הסשן
קי ועושה אנזיפ .כלומר הרעיון הוא להצפין את המפתח הסימטרי באמצעות
הצפנה אסימטרית .למה שלא נצפין את ההודעה ישירות עם המפתח הציבורי של
המקבל? כי הצפנה אסימטרית היא איטית אז להודעה ארוכה זה בעיה ולכן
מצפינים רק את ההודעה עם מפתח סימטרי .לפרוטוקול הוסיפו דחיסה כלומר
לפני השליחה דוחסים אבל רק אחרי הדחיסה מצפינים .כלומר חתימה דחיסה
הצפנה ,ובצד המקבל פענוח ,חילוץ ,וידוא .למה קודם דוחסים ואז חותמים ? כי
הדחיסה היא פעולה לא דטרמניסטית .ואז החתימה לא תהיה טובה .לאחר כל זה
משתמשים ב . smtpמאיפה כל צד יודע את המפתח הציבורי של הצד השני?
אפשר באמצעות מזהה של 64ביט עבור המפתח ואז שולחים את המפתח פעם
אחת .פה אין סרטי אז איך סומכים על המפתחות? . Key-ringsהפומבי מכיל את כל
המפתחות הציבוריים שהמשתמש מכיר .והפרטי מכיל את המפתח הפרטי והציבורי
של המשתמש והוא מוגן באמצעות סיסמא .אז איך מנהלים מפתחות? לכל pgp
יש את ה caשלו שמנהל את המפתחות .
מודל האמון :אני סומך על המפתח שלי וכל מפתח שאני סומך עליו אני חותם
עליו עם המפתח שלי .יש בו נקודה באמצע .חץ ממשהו אלי אומר שהמפתח שלי
חתם על המשהו .אם חתמתי על מישהו ואני גם סומך עליו שיחתום על אחרים אז
אני מסמן אותו באפור .אפשר לסמוך חלקית ואז צובעים חצי באפור.
: Web-mail
משתמש ב httpsכלומר מאובטח עם . tls
Dnsלדלג.
הפקטור האנושי – קונפיגורציות ,סיסמא דיפולטית ,רשלנות ,תוקפים..
פישינג. Social engineering .
שיעור 10
אבטחת תוכנה
רוצים שלתוקף לא תהיה גישה לקוד אלא רק לקלט .בשפות נמוכות יש התקפות
על הזכרון.
אנו מניחים שהתוקף יודע איזו תוכנה רצה ולהשתמש בה.
בעיות לוגיות – אופטימיזציות לדוגמא אם לא בודקים תמונות שהוא מעלה ,לא
בודקים את הקלט שהוא תקין ,בקדורס ,טעויות בחשיפת מידע..
התקפות מבוססות זכרון – מטרת התוקף היא לעשות מניפולציות על התוכנה
באמצעות קלט .נניח שלתוך 3בפרים צמודים התכנית כותבת את השם משתמש
ואז הקלט של הסיסמא ואז הסיסמא האמיתית והיא משווה את 2הבפרים
האחרונים .אז התוקף שלמעשה שולט על 2הבפרים הראשונים ייתן את השם
משתמש ואז סיסמא יותר ארוכה מגודל הבפר השני כדי שהיא תיכתב על הבפר
השלישי .זה נקרא Buffer overflowוהבעיה בזה שהתכנה אחר כך כותבת
מהבסיס נתונים את הסיסמא האמיתית ודורסת את מה שהיה בבפר השלישי ואז
למעשה התכנה משווה את 2הבפרים ומדפיסה שזה לא טוב אבל היא מדפיסה
עד ה nullאז היא מדפיסה גם את מה שכתוב בבפר השלישי אז היא גילתה את
הסיסמא האמיתית.
עוד סוג של : buffer overflowכאשר במקום שבבפר השלישי יהיה כתוב הסיסמא
האמיתית ,יש שם מצביע לפונקציה שנקראת עם הפרמטרים שהם הבפר הראשון
והשני .והפונקציה הזו נקראת בהמשך .אז במקום user nameהתוקף יכניס את
הכתובת של השל .ובבפר השני התוקף יכניס משהו גדול מאורך הבפר .אז
במקום הכתובת של המצביע לפונקציה בבפר השלישי יהיה כתובת שהתוקף יכניס
והוא יכניס את הכתובת של הפונקציה systemוכך יוצא שבפרמטרים של
הפונקציה יהיה השל וכך השל ייפתח בשביל התוקף .נשים לב שזה עובד רק כי
בקוד יש מצביע לפונקציה שזה בעצם דטה ולכן ניתן לכתוב עליו.
התקפות על כתובת חזרה מפונקציה :
בעקבות מבנה המחסנית ,לאחר המשתנים הלוקליים בזכרון תהיה כתובה כתובת
החזרה מהפונקציה שאליה התכנית תעבור כשתחזור מהפונקציה .אז אפשר שוב
לכתוב מעבר לגודל הבפר ואז לדרוס את כתובת החזרה לפונקציה ולהשים
במקומה כתובת אחרת למשל כתובת של משהו שמכיל shellcodeוכך התכנית
תריץ מה שהתוקף רוצה.
הגנות מפני התקפות על זכרון:
לא לכתוב לגודל לא מוגבל .לדאוג למעברים בין 32-64ביט overflow .של
. integerלהיזהר מספריות ופונקציות לא בטוחות.
הגנה על המחסנית :ברמת הקומפיילר : canary :יש לנו מספר סודי שכותבים אותו
returnדואגים בזכרון לאחר המשתנים ולפני הכתובת חזרה .לפני שעושים
לבדוק שהוא לא השתנה ואז אם התוקף כתב משהו גדול אז לפני שכתובת
החזרה תידרס גם הסודי יידרס ואז נגלה את זה כשנשווה .הסודי צריך להיקבע
בזמן ריצה כי אם לא אז התוקף ישנה בדריסה וישמור על הקנרי בדריסה .יתרונות:
שקוף למתכנת .חסרונות :מגן רק על כתובת חזרה ,רק על מחסנית ,והוא מאיט
את המערכת וגם אם הסודי יתגלה נהיה בבעיה.
הגנה נוספת : : dep :מיועד למנוע את האפשרות להריץ קוד באזור של דטה.
מחלקים את הזיכרון לאזורים שמיועדים לקוד שירוץ ולאזורים שמיועדים לדטה .כך
אי אפשר להטמיע . shellcodeחסרונות :זה לא מגן מפני התקפות של הזרקת
מידע ולא הרצת קוד .זה לא מגן מפני קוד שכבר קיים לרוץ .אפשר להגן מפני זה
עם כתיבת מידע באיזורים רנדומליים .קוראים לזה .asr