בקריפטוגרפיה, **תְּמוּרָה פְּסֵידוֹ-אקראית** (Pseudorandom Permutation) בקיצור **PRP** היא פונקציה שלא ניתן להבחין בינה לבין תמורה אקראית שנבחרה בהתפלגות אחידה מתוך משפחת כל התמורות בעלות תחום דומה. במילים אחרות PRP היא משפחה של תמורות המדמות אורקל אקראי באופן שלא קיים אלגוריתם יעיל שיכול להבחין עם יתרון משמעותי לפי הפלט, בין תמורה שנבחרה ממשפחה זו לבין תמורה אקראית. ההבדל היחיד בין תמורה פסידו-אקראית לפונקציה פסידו-אקראית הוא שבתמורה תמיד קיימת פונקציה הופכית.

אובייקט תאורטי דומה נקרא **תמורה בלתי צפויה** (unpredictable permutation) בקיצור **UP**. על בסיס פונקציה בלתי צפויה, תמורה בלתי צפויה היא תמורה שלא קיים אלגוריתם אקראי יעיל שיכול לחזות את ערכיה בדיוק גבוה באופן משמעותי מניחוש אקראי.

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

הגדרה
-----

תהי {\displaystyle P:\{0,1\}^{\*}\times \{0,1\}^{\*}\longrightarrow \{0,1\}^{\*}} פונקציה יעילה, משמרת-אורך, עם מפתח. אפשר להתייחס אל {\displaystyle P} כאל **משפחה של תמורות**, למשל הפונקציה {\displaystyle P\_{k}(\cdot )} היא תמורה אחת מתוך המשפחה, כך שעבור כל {\displaystyle k} שנבחר באקראי {\displaystyle P\_{k}} היא **תמורה עם מפתח** של הקלט. כיוון שאורך הפלט זהה לאורך הקלט, מזה נובע שהיא חד-חד-ערכית ועל. היא נקראת יעילה אם קיים אלגוריתם יעיל שיכול להריץ את {\displaystyle P\_{k}(x)} בזמן פולינומי בהינתן {\displaystyle x} ו-{\displaystyle k} וכן קיים אלגוריתם יעיל שיכול לחשב את התמורה ההופכית {\displaystyle P\_{k}^{-1}(y)} בהינתן {\displaystyle y} ו-{\displaystyle k}. ההנחה המשתמעת מכאן שאורכי הקלט, הפלט והמפתח זהים אינה בהכרח מדויקת תמיד. למעשה הפלט חייב להיות כאורך הקלט אחרת היא לא תקרא תמורה, אולם המפתח יכול להיות באורך שונה. נהוג לכנות את אורך הקלט והפלט "בלוק" שאורכו הוא {\displaystyle n} סיביות. וכן {\displaystyle n} נקרא פרמטר ביטחון.

בדומה לפונקציה פסידו-אקראית, כדי שהתמורה {\displaystyle P\_{k}} תקרא פסידו-אקראית היא צריכה להיות **בלתי ניתנת להבחנה** מתמורה אקראית באורך זהה. למעשה ההבדל בין פונקציה פסידו-אקראית לבין תמורה פסידו-אקראית אינו גדול כי תמורה ופונקציה באורך זהה ניראות גם ככה דומות ולא ניתן לזהות הבדל ביניהן אלא אם כן מוצאים שני ערכים {\displaystyle x} ו-{\displaystyle x'} כך שמתקיים {\displaystyle f(x)=f(x')} שאז אנחנו יודעים שהיא אינה תמורה. אולם ההסתברות שימצאו שני ערכים כאלה בזמן פולינומי כאשר {\displaystyle n} גדול, זניחה.

למעשה הטענה הבאה נכונה: אם {\displaystyle P} היא פרמוטציה פסידו-אקראית אז היא גם פונקציה פסידו-אקראית. אך מפני שבכל תמורה {\displaystyle P\_{k}} מחייבת שתהיה גם פונקציה הופכית {\displaystyle P\_{k}^{-1}}, עובדה זו יוצרת בעיה שלא קיימת בפונקציה פסידו-אקראית, כי כעת צריך לוודא שהתמורה תהיה בטוחה גם אם ל**מבחין** גישה לאורקל הפונקציה ההופכית. מעצם ההגדרה של פונקציה פסידו-אקראית לא בהכרח קיימת פונקציה הופכית. אם התמורה {\displaystyle P} היא בעלת תכונה כזו היא תקרא **תמורה פסידו-אקראית חזקה**. בניסוח פורמלי:

תהי {\displaystyle P:\{0,1\}^{\*}\times \{0,1\}^{\*}\longrightarrow \{0,1\}^{\*}} תמורה יעילה עם מפתח. היא תקרא תמורה פסידו-אקראית חזקה אם עבור כל מבחין פולינומי הסתברותי D קיימת פונקציית זניחות {\displaystyle {\text{negl}}} כך שמתקיים

{\displaystyle |\Pr[D^{P\_{k}(\cdot ),P\_{k}^{-1}(\cdot )}(1^{n})=1]-\Pr[D^{f(\cdot ),f^{-1}(\cdot )}(1^{n})=1]|\leq {\text{negl}}(n)}.

כאשר {\displaystyle k\leftarrow \{0,1\}^{n}} הוא מפתח שנבחר באקראי בהתפלגות אחידה והפונקציה {\displaystyle f} נבחרה באקראי מתוך קבוצת כל התמורות האפשריות באורך {\displaystyle n} סיביות. האינטואיציה מאחורי הביטוי הזה היא שאם לא קיים אלגוריתם הבחנה פולינומי, שמיוצג כאן על ידי D שיכול לזהות לפי הפלט, הבדל כלשהו בין התמורה {\displaystyle P\_{k}} אפילו בהינתן התמורה ההופכית {\displaystyle P\_{k}^{-1}}, לבין תמורה אקראית אמיתית בהסתברות גבוהה משיעור זניח שנקבע על ידי פונקציית הזניחות אז היא נחשבת לתמורה פסידו-אקראית חזקה (מבחינה חישובית).

### תמורה בלתי צפויה

תמורה בלתי צפויה היא הגדרה קצת יותר חלשה מתמורה פסידו-אקראית. היריב במקרה של תמורה בלתי צפויה הוא אלגוריתם הסתברותי שמקבל גישה לאורקל לשני הכיוונים, התמורה {\displaystyle P\_{k}} והתמורה ההופכית {\displaystyle P\_{k}^{-1}}. היריב מקבל אתגר {\displaystyle k} והוא מתבקש לנחש מה יהיה פלט הפונקציה {\displaystyle P\_{k}}. הוא רשאי לבצע סדרה של שאילתות לאורקל למעט שאילתה בנוגע ל-{\displaystyle k}.

#### הגדרה פורמלית

אלגוריתם אקראי פולינומי ייקרא תמורה בלתי צפויה אם עבור כל מבחין הסתברותי פולינומי {\displaystyle A} שלא רשאי להגיש לאורקל שאילתה בנוגע לתחזית עצמה (התמורה), קיימת פונקציית זניחות כך שמתקיים:

{\displaystyle \Pr[y=P\_{k}(x)|k\leftarrow \{0,1\}^{c(n)};(x,y)\leftarrow A^{P\_{k},P\_{k}^{-1}}(1^{n})]={\text{negl}}(n)}

### תמורה פסידו-אקראית וצופן בלוקים

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

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

{\displaystyle L\_{i}=R\_{i-1},\ R\_{i}=L\_{i-1}\oplus f\_{i}(k\_{i},R\_{i-1})}

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

צריך לזכור שצופן בלוקים כשלעצמו אינו בטוח לשימוש לבד, אלא הוא רק "אבן בניין" שאיתה ניתן לבנות מערכת הצפנה בטוחה. לצורך המחשה, אם משתמשים בצופן בלוקים ישירות במערכת הצפנה, למשל המצפין שולח את {\displaystyle c=P\_{k}(m)} למקבל, כאשר {\displaystyle P\_{k}} הוא צופן בלוקים שמקבל את המפתח {\displaystyle k} איתו הוא מצפין את {\displaystyle m} ומחזיר את {\displaystyle c} (למשל AES). אפשר להוכיח שמערכת כזו לא תהיה עמידה נגד התקפת מוצפן-נבחר, מפני שהצפנה כזו היא דטרמיניסטית באופייה ולכן המתקיף יכול להבחין בקלות אם הוצפנו בלוקים זהים עם אותו מפתח. הבחנה זו חשובה ולא תמיד מושם עליה דגש כראוי. אחת הדרכים להתמודד עם חיסרון זה היא להשתמש בצופן הבלוקים במסגרת מצב הפעלה בטוח. קיימים מצבי הפעלה שונים של צופן בלוקים הכוללים בין היתר הצפנה מאומתת, כשכל אחד מהם מספק ביטחון בדרך שונה ובעל מאפיינים שונים בהתאם לסביבה, מידת האיום ואילוצי יעילות. במערכות הצפנה מודרניות נהוג לשלב אקראיות כדי לעמוד במודלים של ביטחון מחמירים יותר.

ראו גם
------

* פונקציה פסידו-אקראית קריפטוגרפית
* מחולל פסידו אקראי קריפטוגרפי

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

1. ↑  Jonathan Katz and Yehuda Lindell (2007). Introduction to Modern Cryptography (2nd edition).
2. ↑  New Design Criteria for Hash Functions and Block Ciphers.
3. ↑  Michael Luby, Charles Rackoff. "How to construct pseudo-random permutations from pseudo-random functions", 1985.

| קריפטוגרפיה |
| --- |
| 

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

 |
| 

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

 |
| 

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

 |
| 

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

 |
| 

| צופן זרם |
| --- |
| RC4 • Salsa20 • SOSEMANUK • גריין • 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 • סיסמה חד-פעמית |

 |
| 

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

 |