בקריפטוגרפיה, **ביטחון סֵמַנְטִי** (Semantic security) היא הגדרה של ביטחון אלגוריתם הצפנה דטרמיניסטי או הסתברותי, סימטרי ואסימטרי כאחד. נניח שליריב או התוקף גישה לזוג טקסטים קריאים כלשהם {\displaystyle m\_{0},m\_{1}} ובאפשרותו לראות את תוצאת ההצפנה שלהם עם האלגוריתם אותו הוא מעוניין לפצח. האלגוריתם ייקרא בטוח סמנטית אם היריב לא יוכל ללמוד בזמן ריצה פולינומי בהסתברות גבוהה מחצי בשיעור שאינו זניח האם תוצאת האלגוריתם היא הצפנה של m\_{0} או m\_{1} מבלי לראות את המפתח. המילה סמנטי מקורה מהגדרה היסטורית של ההצפנה בה הוצפנו מילים ואותיות.

### אי-יכולת הבחנה

הוכח, שביטחון סמנטי שקול להגדרת ביטחון מערכת הצפנה שנקראת 'אי-יכולת הבחנה' (indistinguishability) המסומנת בקיצור IND, שפירושה שהיריב לא יכול להבחין בין טקסטים מוצפנים של המערכת לבין טקסט אקראי אמיתי בהסתברות גבוהה מחצי בשיעור שאינו זניח (non-negligable). אפשר לחלק את ההגדרה של ביטחון סמנטי לכמה דרגות בהתאם ליכולות היריב מהקל לכבד. מהיבט תאורטי ההנחה היא שליריב בעל עוצמת חישוב גבוהה גישה ל"אורקל הצפנה" או "אורקל פענוח". ההבדל ביניהם הוא שבראשונה היריב מקבל תוצאות הצפנה של טקסטים קריאים אותם הוא מגיש לאורקל לפי בחירתו, מה שקרוי התקפת גלוי-נבחר, או בקיצור IND-CPA. יש לציין שבהצפנה אסמטרית מעצם ההגדרה, היריב יכול תמיד לקבל הצפנה של טקסטים קריאים כרצונו, בגלל שיש לו גישה למפתח הציבורי. בשנייה הוא מגיש טקסטים מוצפנים לאורקל לפי בחירתו ומקבל בחזרה את הפענוח שלהם. זוהי התקפת מוצפן-נבחר בקיצור IND-CCA שהיא ההגדרה היותר מחמירה וגם היא מתחלקת לשני סוגים CCA1 ו-CCA2 (ראו גם חשילות).

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

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

### הקשר לסודיות מושלמת

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

ההגדרה הפורמלית של סודיות מושלמת היא; עבור כל שני מסרים אקראיים כלשהם המסומנים בקיצור {\displaystyle (m\_{0},m\_{1})} אם ההתפלגות של ההצפנה {\displaystyle {\text{ENC}}\_{K}(m\_{0})} וההצפנה {\displaystyle {\text{ENC}}\_{K}(m\_{1})} זהה לחלוטין ולא ניתן להבחין ביניהם בשום אופן, אזי ההצפנה מספקת סודיות מושלמת. למשל הוכח שאם K הוא מחרוזת אקראית כלשהי (לפחות כמו המסר עצמו) הרי ש-XOR של המסר עם K מספק ביטחון מושלם, כלומר הצופן אינו טומן בחובו שום מידע לגבי המקור. ההוכחה נכונה רק אם K נבחר באקראי בהסתברות שווה, מתוך מרחב המפתחות שגודלו לפחות כמרחב המסר, כלומר {\displaystyle |K|\geq |M|}.

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

למעשה, כעת בידי היריב שתי אופציות, שאותן תמיד יוכל לנצל כדי לתקוף את הצופן, ללא תלות בביטחונו. הראשונה: ניחוש אקראי. אם מפתח ההצפנה שאיתו נעשה שימוש בגודל k סיביות והוא נבחר באקראי מתוך הטווח המקסימלי של המפתחות האפשריים, ההסתברות שהניחוש יצליח היא {\displaystyle 2^{-k}}. אך אם המפתח קל לניחוש, כגון: אם נבחר מתוך רשימה קצרה של מפתחות, או שמכיל יתירות מסוימת - דהיינו שאינו אקראי לחלוטין, הניחוש הרבה יותר קל. האופציה השנייה היא כוח גס, דהיינו הניסיון לנחש מהו המפתח על ידי {\displaystyle 2^{k-1}} ניסיונות הצפנה במקרה הממוצע, עם כל המפתחות האפשריים. אם התקפת איזון זמן/זיכרון אפשרית או תקיפת היפגשות באמצע (MITM), התוקף יכול להשתמש בטבלאות חיפוש. למשל אפשר לאחסן טבלה של כל אפשרויות ההצפנה (עם כל המפתחות האפשריים) ולחפש התאמה. חיפוש בטבלה אמנם מתבצע בזמן של {\displaystyle {\text{log }}k} אך דרישות הזיכרון מאידך אינן מעשיות. אף על פי שקיימות טכניקות לאיזון בין צריכת זיכרון לזמן חישוב, אם המפתח גדול התקפה כזו לא תהיה מעשית.

### פונקציית זניחות

 ערך מורחב – **פונקציה זניחה**  

בניסוח פורמלי, indistinguishability (אי-יכולת הבחנה) פירושה שאם נתונה סכמת הצפנה ופענוח (בקיצור: Enc/Dec), הפרמטר \epsilon  ומפתח אקראי K, אז לכל שני מסרים {\displaystyle M\_{0},M\_{1}} כלשהם ופונקציה בוליאנית T בסיבוכיות לפי פרמטר t (הפרמטרים יובהרו בהמשך), מתקיים:

{\displaystyle |\Pr[T(ENC\_{K}(M\_{0})=1]-\Pr[T(ENC\_{K}(M\_{1})=1]|\leq \epsilon }
כלומר: בהינתן תוצאות ההצפנה של שני המסרים, היריב לא יכול לזהות בהבדל משמעותי (שאינו זניח) ביניהם, ולומר מי מהן היא תוצאה של המסר הראשון ומי מהן של השני. רצוי שהפרמטר t יהיה גדול, מסדר גודל של {\displaystyle 2^{90}}. הפרמטר \epsilon  הוא טווח השגיאה, כלומר המידה שבה הפונקציה היא זניחה (להלן).

כלי שימושי להגדרת בטיחות ההצפנה היא המושג **פונקציה זניחה** (Negligible function). הפונקציה {\displaystyle \nu :\mathbb {N} \rightarrow \mathbb {R} ^{+}} נקראת זניחה, אם לכל פולינום p ו-k גדול מתקיים:

{\displaystyle \nu (k)\leq {\frac {1}{p(k)}}}.
כלומר: תכונת אי-ההבחנה מתקיימת, אם ההסתברות שהיריב יצליח לזהות הבדל בין שני המסרים המוצפנים גדול מחצי בשיעור כה קטן, עד שהוא זניח (לא מורגש). לדוגמה: {\displaystyle k^{-{\text{log }}k}} היא פונקציה זניחה, היות שהיא מתכנסת ל-0 בקצב "מהיר"; לעומת זאת, {\displaystyle 1/k^{1000}} אינה פונקציה זניחה. שני פרמטרים שימושיים נוספים להגדרה קונקרטית של ביטחון סמנטי, הם הפונקציה {\displaystyle I(m)} שהיא כמות המידע שיש בידי התוקף לגבי ההתפלגות X של טווח המסר M לפני ההצפנה והפונקציה {\displaystyle f(m)} מייצגת את המידע שהתוקף מעוניין להשיג לגבי m על ידי ציתות. ייתכן שהתוקף מעוניין בחשיפת המסר כולו או מסתפק בסיבית אחת בלבד.

ההגדרה הקונקרטית של ביטחון סמנטי, בהינתן סכמת הצפנה (Enc,Dec), הפרמטרים {\displaystyle (t,o,\epsilon )}, אם עבור כל התפלגות X וכל פונקציה {\displaystyle I:\{0,1\}^{m}\rightarrow \{0,1\}^{\*}} ופונקציה {\displaystyle f:\{0,1\}^{m}\rightarrow \{0,1\}^{\*}}. עבור כל אלגוריתם A בסיבוכיות {\displaystyle t\_{A}+t} קיים אלגוריתם {\displaystyle A'} בסיבוכיות {\displaystyle t\_{A}+o}, כך שמתקיים:

{\displaystyle |\Pr[A(ENC\_{K}(m),I(m))=f(m)]-\Pr[A'(I(m))=f(m)]|\ \leq \epsilon }
במילים, ההסתברות שאלגוריתם A עם פונקציית ההצפנה {\displaystyle Enc} יפיק פלט {\displaystyle f(m)} כלומר ישיג את היעד שנקבע, לא גדולה בשיעור שעולה על \epsilon , מההסתברות ש-{\displaystyle A'} יצליח לעשות זאת (ללא ההצפנה). כלומר המידע הנוסף לתוקף על ידי ההצפנה זניח. פרמטרים מעניינים מבחינה מעשית יכולים להיות למשל: {\displaystyle t=2^{90}} ו-{\displaystyle \epsilon =2^{-70}} וסיבוכיות {\displaystyle o} צריכה להיות קטנה מאוד. אפשר לראות שאם {\displaystyle \epsilon =0} ו-t לא מוגבל, ההגדרה המתוארת תהיה מקבילה לסודיות מושלמת.

### התקפת גלוי-נבחר

 ערך מורחב – **התקפת גלוי-נבחר**  

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

בניסוח פורמלי עבור סכמת הצפנה (Enc,Dec), פונקציה בוליאנית T בסיבוכיות {\displaystyle \leq t}, פרמטר \epsilon  המייצג פונקציית זניחות כלשהי ושני מסרים אקראיים כלשהם {\displaystyle m\_{0},m\_{1}}, מתקיים:

{\displaystyle |\Pr[T^{ENC\_{K}}(ENC\_{K}(m\_{0}))=1]-\Pr[T^{ENC\_{K}}(ENC\_{K}(m\_{1}))=1]|\leq \epsilon }
צריך לשים לב שבהצפנה א-סימטרית מעצם הגדרתה ליריב תמיד תהיה היכולת לבחור זוגות טקסט-גלוי/טקסט-מוצפן. כמו כן קיימות הגדרות מחמירות של ביטחון סימנטי מסוג זה תחת התקפת מוצפן-נבחר שהיא יותר חזקה, המסומנת בקיצור IND-CCA.

בעיקרון כל פונקציה פסאודו-אקראית מוכחת יכולה לשמש לבניית סכמת הצפנה שתהיה בטוחה לפי הגדרת IND-CPA וכן IND-CCA.

### היסטוריה

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

דוגמאות
-------

שיטת הצפנה דטרמיניסטית כמו RSA מכילה מטבעה מספר חולשות מהותיות:

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

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

הערות שוליים
------------

1. ↑  S. Goldwasser and S. Micali, Probabilistic encryption & how to play mental poker keeping secret all partial information, Annual ACM Symposium on Theory of Computing, 1982.
2. ↑  Bellare, M. A. Desai, D. Pointcheval, and P. Rogaway (1998). Relations among notions of security for public-key encryption schemes
3. ↑  S. Goldwasser and S. Micali, Probabilistic encryption. Journal of Computer and System Sciences, 28:270-299, 1984.
4. ↑

| * צ
* ש
* ע
קריפטוגרפיה |
| --- |
| 

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

 |

 |
| 

| הצפנה קלאסית |
| --- |
| 
* מכונת הצפנה
* צופן החלפה
* צופן אתב"ש
* צופן קיסר
* צופן ויז'נר
* צופן ורנם
* צופן פלייפייר
* צופן היל
* אולטרה
* אניגמה
* ציקלומטר
* קולוסוס
* PURPLE
* ג'ייד
* מג'יק
* צופן שחלוף

 |

 |
| 

| צופן בלוקים |
| --- |
| 
* לוציפר
* AES
* 3DES
* DES
* Threefish
* Twofish
* Blowfish
* FEAL
* SEED
* CAST
* IDEA
* RC2
* RC6
* MARS
* RC5
* GOST
* Serpent
* MISTY
* KASUMI
* קמליה
* ARIA
* SAFER
* TEA
* LEA
* CLEFIA
* SEA
* Hummingbird
* PRESENT
* KATAN
* KeeLoq
* Simon & Speck
* אנוביס

 |

 |
| 

| אופני הפעלה |
| --- |
| 
* אופן הפעלה של צופן בלוקים
* EAX
* OCB
* IAPM
* CWC mode
* GCM
* CCM

 |

 |
| 

| צופן זרם |
| --- |
| 
* RC4
* Salsa20
* SOSEMANUK
* Grain
* E0
* A5/1
* A5/2
* A5/3
* A5/4
* MICKEY
* HC-128
* SNOW
* Trivium
* Rabbit
* ZUC
* ChaCha

 |

 |
| 

| הצפנה אסימטרית |
| --- |
| 
* פרוטוקול דיפי-הלמן
* חידות מרקל
* חתימת למפורט
* הצפנת תרמיל
* RSA
* הצפנת רבין
* חתימה דיגיטלית רבין
* צופן אל-גמאל
* חתימה דיגיטלית אל-גמאל
* DSA
* הצפנת בלום-גולדווסר
* ECC
* הצפנת קריימר-שופ
* הצפנת פאיי
* הצפנת מקאליס
* GGH
* NTRU
* עקום 25519
* חתימה דיגיטלית של שנור
* הצפנת אוקמוטו-אושיאמה

 |

 |
| 

| פרוטוקולים |
| --- |
| 
* עץ מרקל
* פרוטוקול אתגר-מענה
* פרוטוקול נידהאם-שרודר
* פרוטוקול קרברוס
* הוכחה באפס ידע
* פרוטוקול פייגה-פיאט-שמיר
* העברה עלומה
* חלוקת סוד
* TLS (SSL)
* Secure Shell
* MQV
* X.509
* פרוטוקול שיתוף מפתח
* מיסור שלא לפרסום
* פרוטוקול סיגנל

 |

 |
| 

| פרימיטיבים תאורטיים |
| --- |
| 
* מחולל פסבדו-אקראי קריפטוגרפי
* פונקציה חד-כיוונית
* תמורה חד-כיוונית
* סיבית קשה
* פונקציה פסבדו-אקראית קריפטוגרפית
* תמורה פסאודו-אקראית
* פונקציית גיבוב קריפטוגרפית
* וקטור אתחול
* פונקציית ספוג
* הצפנה מבוססת סריג

 |

 |
| 

| קריפטואנליזה |
| --- |
| 
* ניתוח תדירויות
* כוח גס
* התקפת איזון זמן/זיכרון
* תקיפת היפגשות באמצע
* קריפטואנליזה ליניארית
* קריפטואנליזה דיפרנציאלית
* התקפת גלוי-ידוע
* התקפת גלוי-נבחר
* התקפת מוצפן-נבחר
* פירוק לגורמים של מספר שלם
* התקפת ערוץ צדדי
* התקפת קורלציה
* התקפת שיבוש
* מודל אורקל אקראי
* התקפת התנגשויות

 |

 |
| 

| בעיות מתמטיות ואלגוריתמים |
| --- |
| 
* בעיית לוגריתם דיסקרטי
* תחשיב אינדקסים
* נפה ריבועית
* אלגוריתם rho של פולרד
* נפת שדה מספרים
* אלגוריתם רו של פולרד ללוגריתמים
* אלגוריתם פוליג-הלמן

 |

 |
| 

| פונקציות גיבוב קריפטוגרפיות |
| --- |
| 
* SHA
* MD5
* MD4
* SHA-1
* SHA-2
* SHA-3
* RIPEMD
* Skein
* BLAKE
* Grøstl
* SipHash

 |

 |
| 

| אימות וזיהוי |
| --- |
| 
* אימות זהות
* סיסמה
* קוד אימות מסרים
* Poly1305
* סיסמה חד-פעמית

 |

 |
| 

| נושאים נלווים |
| --- |
| 
* מספר אקראי
* מספר ראשוני
* יתירות
* מפתח שיחה
* סטגנוגרפיה
* הצפנה קוונטית
* הצפנה פוסט-קוונטית
* עקרון קרקהופס
* אבטחת מידע
* קריפטוגרפיה ויזואלית
* אליס ובוב
* מסיבת חתימה על מפתחות ציבוריים
* שידור מוצפן
* הצפנת דיסקים
* הצפנת סף
* חתימה דיגיטלית מבוססת פונקציית גיבוב
* פונקציה זניחה
* רשת פייסטל
* רשת החלפה-תמורה
* הלבנה
* אימות מסרים
* חתימה עיוורת
* חישוב רב משתתפים בטוח

 |

 |