Professional Documents
Culture Documents
מבוא לקריפטוגרפיה הרצאה 1
מבוא לקריפטוגרפיה הרצאה 1
הצפנה
הצפנה :אליס ובוב רוצים לדבר מעל ערוץ לא מאובטח )כל אחד יכול לקרוא את התקשורת ביניהם( בהינתן
יריב זדוני באמצע שנמצא ביניהם ועלול להפריע לתקשורת .נניח שלאליס ובוב יש מפתח פרטי ושלתוקף אין
את אותו מפתח .אליס יכולה להצפין הודעות בעזרת המפתח ובוב יכול לפענח אותן ,התוקף לא יכול לקרוא.
בתהליך ההצפנה ,נעשה שימוש בשלושה אלגוריתמים:
הצפנות היסטוריות
כבר בתקופת רומא העתיקה ,לפני 2000שנה ,ראינו הצפנות על מנת להגן על מידע. -
הקריפטוגרפים ניסו להמציא שיטות חדשות להצפין ותוקפים ניסו למצוא בהן חולשות ולשבור אותן
– מעין משחק של חתול ועכבר .הקריפטוגרפיה לא הייתה מדעית במיוחד ,יותר סוג של אומנות
שעברה ממורה לתלמיד.
ב 1940נעשה ניסיון ראשון ללמוד קריפטוגרפיה מדעית .התיאוריה הייתה פסימית – האמינו שכל -
צופן ניתן לשבור.
בזכות תורת החישוביות ,למדנו מה מחשב מסוגל או לא מסוגל לעשות ,ולכן ב 1976הוציאו דיפי -
והלמן מאמר על צופן חזק שלמחשב קשה לפרוץ.
צופן קיסר – לכל אות ב ,plain text-נזיז אותה שלוש אותיות קדימה בא"ב בצופן .למשל,
𝐹 → 𝑐 𝑎 → 𝐷, 𝑏 → 𝐸,וכו' .אין פה מפתח! לכן ההצפנה אינה בטוחה כלל ,כי אם מגלים את אלג'
ההצפנה אפשר לפענח את ההודעה בקלות .דבר זה מוביל אותנו לעיקרון קירכוף :אסור לבסס בטיחות של
הצפנה ע"י הסתרת אלג' ההצפנה /פענוח .נרצה שהסכמה תמיד תהיה פומבית ,כאשר כל מה שסודי הוא
המפתח.
ננסה לשדרג את צופן קיסר לצופן הזזה – נבחר מפתח שיהיה בכמה אותיות להזיז כל אות ב,plaintext-
במקום .3
כעת נעבור לצופן החלפה – בוחרים לכל אות ,אות אחרת אקראית בה נחליף אותה .למשל את aנחליף ב-
,Hאת bנחליף ב A-וכו'.
𝑘𝑒𝑦𝑔𝑒𝑛: 𝜋: Σ → Σ
) 𝑚(𝜋 = 𝐶 | ) 𝐶 𝐸𝑛𝑐 (𝑚 , … , 𝑚 ) = (𝐶 , … ,
) 𝐶(𝜋 = 𝑚 | ) 𝑚 𝐷𝑒𝑐 (𝐶 , … , 𝐶 ) = (𝑚 , … ,
26! ≈ 2 גודל מרחב המפתחות הוא
החולשה :לשפה יש מבנה ,והצופן לא מחביא את המבנה .אפשר להשתמש בסטטיסטיקה כדי לזהות
אותיות נפוצות .למשל ,באנגלית ,האותיות eו a-הכי נפוצות בשפה ,לכן ניתן לבדוק מה האות הכי נפוצה
בצופן ולנסות להציב אותיות) .ניתן גם ליצור אלג' פשוט ששובר את הצופן ,כיוון שידוע שמתקיים
∑ 𝑝 = 0.065כאשר 𝑝 = השכיחות של התו ה .i-לכן נעבור על כל מפתח kונחשב את הסכום
)𝑘 Σ(𝑞 +לכל שכיחות של תו qבצופן ,והסכום שמתקרב ביותר ל 0.065-ירמוז לנו מה היא ההצפנה(.
חולשות:
.1אם יודעים את גודל המפתח אפשר לעשות התקפה סטטיסטית על חלוקות לפי הגודל.
.2אם לא יודעים את גודל המפתח ,אפשר לנסות ) 𝑡 ∗ 𝑋(𝑂 התקפות סטטיסטיות ,כאשר = Xהעלות של
התקפה סטטיסטית ,כלומר ננסה לכל גודל חלוקה אפשרי.
.3איך נמצא את ?tנבצע GCDעל חזרות של אותיות .למשל ,בדוגמה שלנו ,בפעם הבאה שנראה W
בצופן ,כיוון שאין הרבה קומבינציות שיחזירו Wנוכל להניח שזוהי תחילה של החלוקה עם האות
ההתחלתית ,וניתן להסיק שה GCDבין המיקומים הללו יעיד על גודל החלוקה.
.4עדיין יש מבנים בשפה שקל לזהות – למשל ,המילה theנפוצה באנגלית ,ותהיה תמיד זהה בצופן.
.1הגדרות מדויקות ופורמליות .לדוגמה ,סכמת הצפנה .צריכים להגדיר גם פונקציונליות ,ובטיחות של
הצפנה .הצעות להגדרה של הצפנה:
א" .היריב אינו יכול לגלות את המפתח" .הגדרה לא טובה – אולי אין מפתח ,או שפונק' הזהות
מקיימת את ההגדרה הזו.
ב" .היריב לא יכול ללמוד את ההודעה מהצופן" )כלומר ,לכל יריב ,ההסתברות שהוא ינחש נכונה
את ההודעה מהצופן נמוכה מאוד(.
𝑐𝑛𝐸 𝐴 ∀𝐴, ∀𝑚, ∀𝑘 ∈ 𝐾: Pr )𝑚( "𝑤𝑜𝑙" = 𝑚 =
עדיין הגדרה לא טובה – גם אם לא ניתן ללמוד את ההודעה ,עדיין אפשר ללמוד פרטים
מסוימים מההצפנה )למשל ,אולי ניתן ללמוד את ה MSB-שנוצר מההצפנה(.
ג" .היריב לא יכול ללמוד שום תו של ההודעה מהצופן".
ד" .היריב לא יכול ללמוד שום פונקציה על ההודעה מהצופן )חוץ מהאורך(".
מה היכולות של היריב? האם הוא מוגבל או לא מוגבל חישובית? האם הוא מסוגל רק להאזין
) (eavesdropperאו שהוא מסוגל להצפין הודעות מסוימות ) (chosen plaintext attacksאו אפילו
לפענח אותן )(chosen ciphertext attacks
.2הנחות מדויקות .למשל" ,אין אלג' שיכול למצוא פירוק של מספר למכפלת מספרים ראשוניים בזמן
סביר".
.3הוכחות בטיחות .נרצה להוכיח את ביטחון ההצפנה.
נניח shift cipherעל אות בודדת .ההודעות האפשריות הן }𝑛 𝑀 = {𝑦,כאשר ההסתברות לכל אחת היא
0.7ו 0.3-בהתאם .התוקף רואה את ההודעה המוצפנת 𝐵 = 𝐶.
מעבר לכך:
1
(Pr[𝐶 = 𝐵 | 𝑀 = 𝑦] ∗ Pr[𝑀 = 𝑦] 26 ∗ 0.7
= ]𝐵 = 𝐶 | 𝑦 = 𝑀[Pr = = 0.7
]𝐵 = 𝐶[Pr 1
26
כלומר ,גם בהינתן שאנו יודעים את הצופן עצמו ,ההסתברות שנזהה נכונה את ההודעה מתוך מרחב
ההודעות האפשריות נשארת זהה.
הגדרה :סכמת הצפנה )𝑐𝑒𝐷 𝜋 = (𝐺𝑒𝑛, 𝐸𝑛𝑐,מעל מרחב הודעות Mמשיגה בטיחות מושלמת אם לכל
התפלגות מעל ,Mלכל הודעה 𝑀 ∈ 𝑚 ולכל צופן 𝐶 ∈ 𝑐 המקיים ,Pr[𝐶 = 𝑐] > 0מתקיים:
]𝑚 = 𝑀[ Pr[𝑀 = 𝑚 | 𝐶 = 𝑐] = Pr
כלומר ,העובדה שראיתי את הצופן לא הוסיפה לי שום מידע נוסף.
הגדרה שקולה :סכמת הצפנה )𝑐𝑒𝐷 𝜋 = (𝐺𝑒𝑛, 𝐸𝑛𝑐,מעל מרחב הודעות Mמשיגה בטיחות מושלמת
אם"ם לכל 𝑀 ∈ 𝑚 𝑚,ולכל 𝐶 ∈ 𝑐 מתקיים
:1 ← 2
נקבע התפלגות כלשהי מעל ,Mנקבע הודעה 𝑀 ∈ 𝑚 וצופן cכך ש .Pr[𝐶 = 𝑐] > 0-נרצה להראות כי
]𝑚 = 𝑀[ .Pr[𝑀 = 𝑚 | 𝐶 = 𝑐] = Pr
לכן,
]𝑚 = 𝑀[ Pr[𝐶 = 𝑐 | 𝑀 = 𝑚] ∗ Pr
= ]𝑐 = 𝐶 | 𝑚 = 𝑀[Pr =
]𝑐 = 𝐶[ Pr
]𝑚 = 𝑀[ 𝛿 ∗ Pr ]𝑚 = 𝑀[ 𝛿 ∗ Pr
= =
]Σ ∈ Pr[𝐶 = 𝑐 | 𝑀 = 𝑚′] ∗ Pr [𝑀 = 𝑚′] 𝛿 ∗ Σ ∈ Pr [𝑀 = 𝑚′
]𝑚 = 𝑀[ = Pr
) 𝑚( 𝑐𝑛𝐸 ∈ 𝑐
.3נותנים ליריב את cוהיריב מחזיר ' .bפלט הניסוי הוא 1אם"ם .𝑏 = 𝑏′
הגדרה :סכימה )𝑐𝑒𝐷 𝜋 = (𝐺𝑒𝑛, 𝐸𝑛𝑐,משיגה בטיחות מושלמת כנגד יריב מאזין אם לכל יריב Aמתקיים:
1
𝑘𝑣𝑖𝑟𝑃 Pr , = =1
2
משפט :שלושת ההגדרות שקולות.
דוגמה:
נשתמש ב shift cipher-כאשר }𝑛𝑛 .𝑀 = {𝑦𝑦, 𝑦𝑛, 𝑛𝑦,נראה ש shift cipher-הוא לא :perfectly secure
One-Time Pad
הוכחה:
Pr[𝐶 = 𝑐] = Σ ∈ Pr[𝐶 = 𝑐 | 𝑀 = 𝑚′] ∗ Pr [𝑀 = 𝑚′] = Σ ∈ 2 ]∗ Pr [𝑀 = 𝑚′
= 2 ∗ Σ ∈ Pr [𝑀 = 𝑚′] = 2
בעזרת בייס:
]𝑚 = 𝑀[Pr[𝐶 = 𝑐 | 𝑀 = 𝑚] ∗ Pr ]𝑚 = 𝑀[Pr
= ]𝑐 = 𝐶 | 𝑚 = 𝑀[Pr =2 ∗ ]𝑚 = 𝑀[ = Pr
]𝑐 = 𝐶[ Pr 2