• Shuffle
    Toggle On
    Toggle Off
  • Alphabetize
    Toggle On
    Toggle Off
  • Front First
    Toggle On
    Toggle Off
  • Both Sides
    Toggle On
    Toggle Off
  • Read
    Toggle On
    Toggle Off
Reading...
Front

Card Range To Study

through

image

Play button

image

Play button

image

Progress

1/36

Click to flip

Use LEFT and RIGHT arrow keys to navigate between flashcards;

Use UP and DOWN arrow keys to flip the card;

H to show hint;

A reads text to speech;

36 Cards in this Set

  • Front
  • Back

אלגוריתמי הצפנה


Caesar Cipher

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

אלגוריתמי הצפנה


Substitution Cipher

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

אלגוריתמי הצפנה


Vigenere Cipher

1. בחירת מפתח, למשל "lemon".


2. שרשור המפתח לעצמו ע"פ התבנית של ה- plain text.


3. כל אות בא"ב מקבלת קידוד ע"פ הסדר, כלומר a=0,b=1,c=2,…,l=11,m=12,n=13,o=14,…,z=25.


4. ה- cipher text מתקבל ע"י חיבור קידוד כל אות ב- plain text עם קידוד כל אות בטקסט המשורשר.



מיפוי האותיות נעשה באופן רנדומלי והוא אף יכול להשתנות בכל מופע של האות (בדוגמא שלנו - האות e מופתה פעם אחת ל i ופעם אחת ל- s, כיוון שהאותיות המקבילות אליה בטקסט המשורר היו שונות, פעם e ופעם o).



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

אלגוריתמי הצפנה


One Time Pad

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

אלגוריתמי הצפנה


Stream Cipher

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

אלגוריתמי הצפנה


Block Cipher

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

אלגוריתמי הצפנה


Electronic Code Book (ECB)

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

אלגוריתמי הצפנה


Cipher Block Chaining (CBC)

- נחלק את הטקסט לבלוקים בגודל שווה.


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

Cryptanalysis


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


- Bruteforce - מעבר על כל האפשרויות הקיימות. בסיסי ולא יעיל.


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

סוגי תקיפות


Ciphertext only attack

התוקף מכיר רק סט מוגבל של ciphertexts.

סוגי תקיפות


Known plaintext attack

התוקף מכיר רק סט מוגבל של ciphertexts ואת ה- plaintexts המתאימים להם.

סוגי תקיפות


Chosen plaintext attack

התוקף יכול להשיג ciphertext של איזה plaintext שהוא בוחר.

סוגי התקיפות


Chosen ciphertext attack

התוקף יכול להשיג plaintext של איזה ciphertext שהוא בוחר (כמובן לא זה שעליו לפענח).

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

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

מנגון החלפת המפתחות Diffie Hellman

- אליס ובוב מחליטים באופן פומבי על המפתח הציבורי, n (מספר ראשוני), ועל האלגוריתם g.


- כל אחד מהם בוחר את המפתח הפרטי שלו, x, מבצע את החישוב (y=g^xmod(n ושולח לשני.


- כל צד מבצע את החישוב y'^xmod(n) ,כאשר ’y הינו הערך שנשלח אליהם מהצד השני.


- מובטח כי לאחר ביצוע החישוב עם ’y,שני הצדדים יקבלו את אותו המפתח.

במנגון החלפת המפתוחת, איב יכולה לדעת מה הם המפתחות הפרטיים?

נשים לב שאיב (תוקף מאזין) יכולה לדעת מהו המפתח הציבורי n, מהו האלגוריתם g, ומהן תוצאות החישובים Ya ו-Yb,אבל היא לא יודעת מהם המפתחות הפרטיים שכל אחד מהצדדים בחר, ולכן היא לא יכולה לבצע את החישוב בעצמה ולגלות את המפתח שיתקבל בסופו של דבר. זאת כיוון שפונקציית ה- mod אינה חח"ע, והיא קלה לחישוב בצד אחד אך קשה מאוד עד בלתי אפשרית לשחזור בצד השני, ללא מידע נוסף (המפתח הפרטי). פונקציות כאלו נקראות One-Way Function (“Trap Door”).

הצפנה א-סימטרית

במקום שלשני הצדדים הרוצים לתקשר ביניהם יהיה מפתח ציבורי משותף, לכל אדם יהיו שני מפתחות - ציבורי ופרטי. כך נוכל לשמור על המידע חשאי, לאמת את זהות השולח ולהימנע מבעיית הפצת המפתחות. ההצפנה מתבצעת עם המפתח הציבורי של הנמען, בעוד שהפענוח מתאפשר רק ע"י המפתח הפרטי שלו.
נוכל לוודא שמפתח ציבורי מסוים אכן שייך לאדם מסוים,ע"י Certificate Authority (CA) - צד שלישי שניתן לסמוך עליו שיאמת זאת. שימוש בכך יכול לבוא לידי ביטוי ב- Message Integrity,כשנרצה לוודא שאדם שטוען שהוא כתב משהו מסוים (למשל תוכנה), הוא אכן הכותב.

Message Authentication Code (MAC)

- אליס רוצה לשלוח את ההודעה m לבוב. היא מייצרת tag=MAC(m) (מפעילה את הפונקציה MAC על ההודעה) ושולחת לבוב את ההודעה m ואתה- tag.


- בוב רוצה לוודא שאכן אליס היא זו ששלחה את ההודעה ושזהו תוכן ההודעה. הוא מאמת זאת באמצעות אלגוריתם מיוחד שבוחן האם יש התאמה בין m לבין ה- tag.

חתימה דיגיטלית

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


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

הצפנה היברידית

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


- אליס מצפינה את ההודעה m ע"י מפתח סימטרי -> K(m).


- אליס מצפינה את המפתח K ע"י המפתח הציבורי של בוב ->.


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


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

WEP Insecurity

זוהי שיטת הצפנה עבור רשתותאלחוטיות. ב- WEP כל ההודעות מוצפנות על מנת שרק מי שחבר ברשתיוכל לשלוח ולקרוא אותן. ההצפנה נעשית ע"פ streamcipher בעזרת מפתח השייך לרשת, כך שכולם משתמשיםבאותו המפתח. לשם כך, משתמשים בוקטור אתחול IV עם ערכים אקראיים עבור כל משתמש, מה שמוביל לכך שההצפנה תהיהאקראית ושונה עבור כל משתמש ברשת. אורך ה- VI הוא 24 ביט, ולכן, בהאזנה ארוכה מספיק, נוכל למצוא שתי הודעותלפחות שהוצפנו באותו המפתח, מה שיעזור לנו, בהתבסס על נתונים סטטיסטיים, לפענח את ההודעותאו למצוא את המפתח.

Steganography

החבאת מידע בתוך מידע אחר,למשל החבאת הודעה בתוך תמונה.

RSA

מנגנון ליצירת מפתח ציבוריומפתח פרטי.


- בוחריםשני מספרים ראשוניים גדולים, p ו- q.
- מחשביםאת n ע"י n=pqואת φ(n)=(p-1)(q-1).


- בוחרים מספר e שיהיה זר ל- φ(n).


- מוצאים את d כך שיקיים:


ed=1 (mod φ(n)).



המפתח הציבורי הוא (e,n) והמפתח הפרטי הוא (d,n).


ההצפנה מתבצעת ע"י c^e mod(n) כאשר m זוהי ההודעההמקורית.


הפענוח מתבצע ע"י c^d mod(n) כאשר d זוהי ההודעה המוצפנת.

חתימה דיגיטלית באמצעות RSA

- אליסמצפינה את ההודעה m ע"י המפתח הפרטי שלה ושולחת לבוב אתההודעה המוצפנת s:


s=m^d mod(n)
אליס היא היחידה שיכולה לייצר את s,כיוון שרק לה יש את המפתח הפרטי שלה.
- בוב,שרוצה לוודא שההודעה אכן נשלחה מאליס, מפענח את ההודעה המוצפנת שקיבל מאליס, s, ע"י המפתח הציבורי שלו:


s=m^e mod(n)
כך הוא מקבל את m ומאמת שההודעה הגיעה מאליס.

Secure Socket Layer(SSL)

פרוטוקול שמיושם בין שכבתהאפליקציה לבין שכבת התעבורה ומטרתו להגן על המידע שנשלח ברשת. SSL מספק אבטחה רק את השכבות שמעליו, ולכן אין לו השפעה על TCP, IP וכו' - כלומר הם לא מוצפנים.

ציין את יתרונות וחסרונות SSL

יתרונות:
- זהומנגנון אבטחה ידוע, אין צורך לממש משהו חדש.


- עובדמעל TCP ולכן "נהנה" מכל היתרונות של TCP כגון אמינות.
- ה- headers לא מוצפנים ולכן firewalls יכולים לראות את ה- headersהאמיתיים ולהתנהג בהתאם.
חסרונות:
חשוףבפני כל ההתקפות על ה- headers הלאמוצפנים.

SSL
חלוקה ל-4 תתי פרוטוקולים

בשכבת ה- SSL:
Record protocol - מתעסקבהצפנה ובאימות.
בשכבתהאפליקציה:
Handshakeprotocol - מתעסק בתיאום ובאימות בין שני הצדדים עלפרמטרים משותפים (state).
Change cipher spec protocol - שינוי האופן בוהתבצעה התקשורת לאופן המוסכם החדש.
AlertProtocol - מתעסק בשליחת הודעותשגיאה.

SSL Handshake

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

ClientHello(version, cipher_suites,client_random, sid)

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

ServerHello(version, cipher_suite,server_random, sid), Cert, [CertRequest]

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

ClientKeyExchange, [Certificate],[CertVerify]

לאחר שהלקוח אימת את השרת, הוא בוחר מפתחרנדומלי זמני, (pre_master_key), מצפיןאותו ע"י המפתח הציבורי של השרת, בכדי שרק השרת יוכל לפענח אותו, ושולח אותולשרת. לאחר מכן, השרת והלקוח מייצרים את המפתח האמיתי שישמש לתקשורת ביניהם - master_secret, ע"י הפעלת פונקציית hash עלה- pre_master_key ועל המספרים האקראיים שהם בחרו בהתחלה.
כעת לשני הצדדים יש את כל המידע הדרוש ומעתה הםיכולים לשלוח אחד לשני הודעות מוצפנות.
ב- short handshake לא יתבצע שלב ה- ClientKeyExchange וה- sidיהיה שונה מ-0 (שווה ל- sidהקיים).

IPSEC

פרוטוקול שמיושם בשכבת ה- IP ומטרתו להגן על השכבות שמעליו (תעבורה ואפליקציה).


מצד אחד - מאפשר הגנה מפניהתקפות בשכבת התעבורה, ומצד שני - עלול ליצור בעיות ב- firewalls.

IPSEC


חלוקה ל-2 תתי פרוטוקולים

Encapsulation Security Payload (ESP) - · מתעסק בהצפנה ו/או באימות.


Authentication Header (AH) - מתעסק באימות בלבד.

מצבי IPSEC

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


Tunnel Mode - אבטחהבין שתי רשתות, יצירת "מנהרה" בין הרשתות דרכה המידע מוגן.בתוך כל רשת המידע חשוף, רק ב"המנהרה"הוא מוגן.

IPSEC Data Structures

Security Association Database (SAD) - בסיס נתוניםהמכיל את כל המידע אודות אופן ביצוע התקשורת המאובטחת. עבור כל סשן ישנן שתירשומות, אחת עבור חבילות נכנסות והשניה עבור חבילות יוצאות. הרשומותיכולות להיווצר או באופן ידני או באמצעות פרוטוקול IKE שמיועד לכך.
Security Policy Database (SPD) - מאגר מדיוניותשאנו רוצים לאכוף על החבילות שעוברותב- IPSEC. דומה למדיניות סינון החבילות ב- firewall.
- Drop: החבילה נדחית.
- Forward: החבילה עוברת ללא IPSEC.
- Secure: החבילה נאכפת ע"י IPSEC ורק לאחר מכן עוברת.

VPN - Virtualprivate network

שימוש ב- IPSEC ב- Tunnel Mode עלמנת לייצר מעין רשת פרטית מאובטחת על גבי האינטרנט.