בתורת הקריפטוגרפיה, **סיבית קשה** של פונקציה חד-כיוונית \ f, היא פונקציה {\displaystyle \ b(x)} בעלת פלט של סיבית אחת (זוהי הסיבית ה"קשה") שקשה לנחשה גם כאשר הערך \ f(x) ידוע.

הגדרה
-----

תהי {\displaystyle f:\{0,1\}^{n}\to \{0,1\}^{n}} פונקציה חד-כיוונית.
הפונקציה {\displaystyle b:\{0,1\}^{n}\to \{0,1\}} נקראת "סיבית קשה" של \ f אם מתקיימים התנאים הבאים:

1. הפונקציה \ b ניתנת לחישוב בזמן פולינומי.
2. לכל מכונת טיורינג הסתברותית \ A, ההסתברות לנחש את {\displaystyle \ b(x)} בהינתן \ f(x) זניחה,


Pr

x

[

A

(

1

n

,
f
(
x
)

)

=
b
(
x
)

]

<

1
2

+

ϵ

n

{\displaystyle \Pr \_{x}\left[A\left(1^{n},f(x)\right)=b(x)\right]<{\frac {1}{2}}+\epsilon \_{n}}

{\displaystyle \Pr _{x}\left[A\left(1^{n},f(x)\right)=b(x)\right]<{\frac {1}{2}}+\epsilon _{n}}
(כאשר {\displaystyle \ n=|x|}, ו-{\displaystyle \ \epsilon \_{n}} היא פונקציה הקטנה מ-{\displaystyle {\frac {1}{n^{c}}}} לכל \ c, עבור \ n גדול דיו. ההסתברות היא על מרחב כלל הקלטים האפשריים, והטלת המטבעות של A.)

שימושים
-------

ביט-קשה של פונקציה חד-חד ערכית חד כיוונית, יכול לשמש עבור פרוטוקול התחייבות לביט, בו משתמש מתחייב לביט מסוים, מבלי לגלות מהו הביט. למשל, כאשר שני משתמשים (אליס ובוב), שאינם נמצאים זה ליד זה, רוצים להטיל מטבע יחדיו באופן אקראי, מבלי שאחד הצדדים יוכל לרמות.
פתרון אפשרי הוא שאליס תתחייב לביט מסוים {\displaystyle \ b(x)} על ידי שליחת הערך \ f(x). כיוון שהביט הנ"ל הוא קשה בוב אינו יודע מהו הביט אליו אליס מחויבת. בוב ממשיך על ידי בחירת ביט אקראי \ r. כעת אליס מגלה את הערך \ x, ובוב בודק שאכן \ f(x) הוא הערך שאליס שלחה בהתחייבות, ומחשב את הביט שאליו אליס מחויבת, {\displaystyle \ b(x)}.

הביט שהוגרל בשיטה זו הוא {\displaystyle b(x)\oplus r}. שני הצדדים אינם יכולים לרמות: בוב אינו יודע את הערך של {\displaystyle \ b(x)}, ולכן אינו יכול להטות את התוצאה על ידי בחירת \ r. אליס אינה יכולה לשנות את התחייבותה, מכיוון שהפונקציה חד-חד ערכית ולכן, לפי הגדרה, לא קיים \ x' כך ש-{\displaystyle \ f(x')=f(x)}. מכאן נובע ששני הצדדים בחרו ביט מבלי לדעת מה האחר בחר, ולכן הביט הסופי הוא "הוגן".

שימוש נוסף עבור ביט-קשה הוא בניית מחולל פסבדו אקראי קריפטוגרפי. בהינתן גרעין \ s מפעילים עליו שוב ושוב את הפרמוטציה החד-כיוונית, ועבור כל הפעלה מחשבים את הביט-הקשה. המחרוזת הנוצרת מהביטים הקשים מהווה פלט פסבדו אקראי במובן הקריפטוגרפי. באופן פורמלי, המחולל {\displaystyle \ G(s)} ניתן לתיאור עלי-ידי



G
(
s
)
≡
b
(
f
(
s
)
)
b
(

f

2

(
s
)
)
…
b
(

f

k

(
s
)
)

{\displaystyle G(s)\equiv b(f(s))b(f^{2}(s))\ldots b(f^{k}(s))}

{\displaystyle G(s)\equiv b(f(s))b(f^{2}(s))\ldots b(f^{k}(s))}
כאשר k הוא פולינומי באורך הקלט \ s, ו-{\displaystyle \ f^{i}(s)} משמעותו הפעלת הפרמוטציה \ i פעמים, לדוגמה {\displaystyle \ f^{3}(s)=f(f(f(s)))}.

קיום
----

בשנת 1989, הוכיחו מדעני המחשב עודד גולדרייך ולאוניד לוין, שכל פונקציה חד-כיוונית ניתן לשנות לפונקציה חד-כיוונית בעלת סיבית קשה (חישובית).
בהינתן פונקציה חד-כיוונית \ f, נגדיר את הפונקציה {\displaystyle \ f'(x,r)=f(x),r} עבור {\displaystyle \ |f(x)|=|r|}. פונקציה זו היא חד-כיוונית והסיבית {\displaystyle \ b(x,r)=x\cdot r} היא סיבית קשה של \ f'.

ההוכחה מתבססת על כך שאם קיים אלגוריתם לניחוש הסיבית הקשה, ניתן להשתמש בו על מנת להפוך את הפונקציה החד-כיוונית \ f': בהינתן \ f(x) האלגוריתם "מנחש" את ערך הביט-הקשה עבור כמות קטנה של ערכי \ R, (נאמר, {\displaystyle \ \log(n)} קלטים כנ"ל). בעזרת ניחוש זה ניתן לבנות קבוצה גדולה של ערכי \ R שהם בלתי-תלויים בזוגות.
אם קיימת מכונה אשר מגלה את הביט הקשה בהסתברות בלתי-זניחה, ניתן להפעיל את המכונה על הקבוצה הגדולה של ה-\ Rים, ולהשוות אל הערכים שניחשנו. משיקולים הסתברותיים, ניתן יהיה לזהות מהו הניחוש הנכון של הביטים הקשים עבור הקבוצה ההתחלתית הקטנה, בהסתברות בלתי-זניחה.
מכיוון שכל ערך \ R הוא פונקציה ליניארית של סיביות \ x, מספיקה ידיעת {\displaystyle \ \log(n)} ערכים בלתי-תלויים על מנת לחשב את כלל הסיביות של \ x.

לקריאה נוספת
------------

* Oded Goldreich, **Foundations of Cryptography vol 1: Basic Tools**, Cambridge University Press, 2001.

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

1. ↑  O. Goldreich, L. Levin, "A hard-core predicate for all one-way functions", **In Proceedings of the Twenty First Annual ACM Symposium on Theory of Computing (STOC)**, 1989 (pdf)

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

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

 |

 |
| 

| הצפנה קלאסית |
| --- |
| 
* מכונת הצפנה
* צופן החלפה
* צופן אתב"ש
* צופן קיסר
* צופן ויז'נר
* צופן ורנם
* צופן פלייפייר
* צופן היל
* אולטרה
* אניגמה
* ציקלומטר
* קולוסוס
* 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
* סיסמה חד-פעמית

 |

 |
| 

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

 |

 |