מודל אורקל אקראי – הבדלי גרסאות

תוכן שנמחק תוכן שנוסף
Matanyabot (שיחה | תרומות)
מ בוט החלפות: תאור\1, ביטחו\1
הסרה (למרבה הצער), החלפה (תאורטי)
שורה 2:
 
==אורקל אקראי==
בקריפטוגרפיה מודרנית נוח להשתמש באובייקט תיאורתיתאורטי הנקרא [[אורקל (מדעי המחשב)|אורקל]]. אפשר לחשוב עליו כעל [[קופסה שחורה (הנדסה)|קופסה שחורה]] שמקבלת כקלט [[מחרוזת (מדעי המחשב)|מחרוזת]] בינארית ומחזירה מחרוזת בינארית. המבנה הפנימי של הקופסה "מסתורי" ואינו ידוע לאיש. כל אחד, כולל היריב רשאי להפעיל את הקופסה והיא פועלת כפונקציה המקבלת את <math>x</math> ומחזירה את <math>y</math>. בהקשר זה <math>x</math> נקרא [[שאילתה (תוכנה)|שאילתה]]. למען הפשטות מבלי לוותר על הכלליות מניחים כמה הנחות יסוד לגבי האורקל:
*המבנה הפנימי של האורקל אינו ידוע לאיש. כל מה שידוע הוא שאילתות שהוגשו עד עתה והתשובות שהתקבלו.
*'''פרטיות'''. כל שאילתה שמוגשת לאורקל פרטית במובן שרק האורקל ומגיש השאילתה יודעים מהי. זו הנחה טבעית כי במציאות הגשת שאילתה לאורקל מתאימה להפעלת פונקציית גיבוב באופן מקומי.
שורה 10:
אפשר להתייחס לכל <math>H</math> כאל טבלה ענקית שמכילה עבור כל קלט אפשרי את הפלט המתאים. בכל טבלה <math>2^n\cdot \ell(n)</math> סיביות בסך הכול ובתחום כולו קיימות בסך הכול <math>2^{\ell(n)\cdot 2^n}</math> פונקציות שונות עם קלט ופלט באורך המצוין. דרך אחרת היא להתייחס ל-<math>H</math> כאל פונקציה אקראית בתנאי אחד, עבור כל <math>x</math> הפונקציה בודקת תחילה אם הופיע בעבר, אם לא היא מחזירה <math>y</math> אקראי ושומרת את הזוג <math>x</math> ו-<math>y</math> במסד נתונים כלשהו. אם <math>x</math> כבר מופיע במסד הנתונים של הפונקציה משמע שכבר הוגשה שאילתה עם <math>x</math> זה ולכן היא תחזיר את <math>y</math> המתאים השמור במסד הנתונים.
 
חשוב להדגיש שיש הבדל בין מודל אורקל אקראי לבין אורקל אקראי בהקשר של [[פונקציה פסבדו-אקראית קריפטוגרפית|פונקציה פסאודו-אקראית]]. שם הגישה לאורקל היא רק קונספט תיאורתיתאורטי שמנסה להסביר איך פונקציה קונקרטית עם מפתח נחשבת לפסאודו-אקראית. כאן האורקל האקראי מהווה חלק בלתי נפרד מהפרוטוקול כך שיש צורך לממשו בדרך זו או אחרת.
 
==רעיון כללי==
מהיבט תיאורתיתאורטי עדיף היה לפתח ולנתח פרוטוקול באופן כזה שניתן יהיה להוכיח לפי מודל [[סיבוכיות]] סטנדרטי (קונקרטי או [[אסימפטוטי]]) שהוא אכן בטוח לשימוש בהתבסס על השערה מתמטית חזקה. אולם במציאות המצב הוא שפרוטוקול כזה נוטה להיות לא יעיל ולמרבה הצער מרביתומרבית המשתמשים נוטים לוותר על האבטחה כליל מאשר לסבול פרוטוקול שזמן ביצועו מתארך יתר על המידה וגורם לקפאון המחשב. לפי המודל הסטנדרטי כמעט לא קיימים פרוטוקולים קריפטוגרפיים מוכחים שהם גם יעילים. בעוד שקריפטוגרפים עמלים במרץ על פיתוח שיטות הצפנה בטוחות יותר, מפתחים תאוריות ומספקים השערות חדשות ושיטות פיצוח חדשות, בה בעת נוצר מצב שבמציאות נשארים עם יותר שאלות מאשר תשובות לגבי מה בטוח ומה לא. לכן נאלצים להתפשר על שיטות [[אד הוק]] שמסתמכות בעיקר על גאונות ותחכום הממציא ושאין להם כל הוכחה מתמטית מפורשת באשר לטענות לגבי ביטחונן.
 
רעיון מודל אורקל אקראי מנסה לגשר על הפער הזה על ידי תוספת אורקל אקראי. באופן תאורטי נוספת לפרוטוקול פונקציה אקראית <math>H</math> שניתנת להערכה רק באמצעות שאילתה לאורקל שמקבל <math>x</math> כלשהו ומחזיר את <math>H(x)</math> באופן אקראי. אמנם הפונקציה לא מציאותית אך היא מספקת שיטה לפיתוח ובדיקה של פרוטוקול קריפטוגרפי בשני מהלכים, לפי הגישה הבאה:
שורה 19:
*בשלב השני כאשר מנסים ליישם את הפרוטוקול בפועל כיוון שאורקל אקראי לא קיים במציאות מנסים להחליפו בפונקציית גיבוב מתאימה (למשל וריאציה של [[SHA-2]]). כך שבכל נקודה בפרוטוקול שבה מופיעה שאילתה לאורקל אקראי עם <math>x</math>, היא תוחלף בפונקציית הגיבוב <math>\hat H(x)</math>.
 
בתהליך זה מקווים שפונקציית הגיבוב טובה במידה מספקת כדי שתוכל לדמות את האורקל האקראי, כך שההוכחה שניתנה במסגרת מודל אורקל אקראי תשליך גם על יישום השיטה בפועל. הקושי נעוץ בעובדה שאין הצדקה תאורטית לשאיפה זו כי פונקציית גיבוב היא פונקציה [[אלגוריתם דטרמיניסטי|דטרמיניסטית]] באופיה ולמעשה קיימת הוכחה בכיוון ההפוך שמראה שגם במקרה שהפרוטוקול בטוח במסגרת המודל, אינה בטוחה בפועל ללא תלות במימוש האורקל. יתרה מזו, לא ניתן להגדיר בצורה ברורה איזו פונקציית גיבוב "טובה" כדי לדמות אורקל אקראי אם בכלל הדבר אפשרי. מסיבות אילו, כל הוכחה שניתנה במסגרת מודל אורקל אקראי ששיטת הצפנה נחשבת בטוחה, אינה הוכחה במובן המתמטי המלא אלא הוכחה [[היוריסטיקה|היוריסטית]] בלבד, מעין עדות לכך ששיטת ההצפנה אינה מכילה "כשלים מבניים".
 
===ביקורת===
שורה 29:
 
==תיאור המודל==
באופן כללי קיים פער בין תאורטיקנים בתחום ההצפנה לבין המיישמים בפועל. מהיבט תיאורתיתאורטי [[פונקציה חד כיוונית]] היא הבסיס למבנים קריפטוגרפיים מורכבים יותר כמו [[פונקציה פסבדו-אקראית קריפטוגרפית|פונקציה פסאודו-אקראית]] (PRF). מנקודת ראות תאורטית אין משקל ליעילות, לכן ניסיון להגיע לביטחון מוכח עשוי לבוא על חשבון יעילות. אולם מהיבט מעשי קיימים אלגוריתמים יעילים מאוד כמו [[AES]] או SHA-2 שנחשבים לפונקציה פסאודו-אקראית אם כי לא קיימת הוכחה פורמלית כלל. הפתרון שמוצע לפי המודל הזה הוא לראות ב-SHA-2 כפונקציה אקראית רק לצורך הדיון. כלומר נניח שקיימת פונקציה אקראית <math>h</math> ונניח שקיימת בעיה (משימה) <math>\Pi</math> שאותה מנסים לפתור באמצעות פיתוח פרוטוקול מתאים, ושהיא נפרדת ובלתי תלויה בפונקציה <math>h</math>. נתון אורקל אקראי המסומן בקיצור <math>R : \{0,1\}^*\rightarrow \{0,1\}^\infty</math>. כלומר הוא מקבל כקלט מחרוזת כלשהי באורך לא מוגדר ומחזיר מחרוזת אקראית אמיתית כלשהי. כדי להמציא פרוטוקול <math>P</math> שפותר את הבעיה האמורה אפשר לפעול כדלהלן:
 
א. מנסחים הגדרה פורמלית לבעיה <math>\Pi</math> בסביבה שבה כל המשתתפים כולל יריב אפשרי נגישים לאורקל <math>R</math>.
שורה 48:
 
#<math>E^G(x)=f(r) \ \| \ G(r)\oplus x</math>
#<math>E^{G,H}(x)=f(r) \ \| \ G(r)\oplus x \ \| \ H(rx)</math>
 
כאן <math>x</math> הוא המסר המיועד להצפנה ו-<math>r</math> הוא מספר אקראי חד פעמי שנבחר מתוך התחום של <math>f</math> לצורך הצפנת המסר <math>x</math>. הפונקציה <math>f</math> היא הצפנת [[מפתח ציבורי]] והיא משתמשת במפתח הפומבי של המקבל. הטענה היא שהשיטה הראשונה מספקת [[ביטחון סמנטי]] פולינומי לפי הרעיון של מיקלי וגודלווסר שנקרא [[הצפנה היסתברותית]]. והשנייה טובה כנגד [[התקפת מוצפן-נבחר]] ונקראת [[חשילות (קריפטוגרפיה)|אי-חשילה]] ושתיהן יעילות יותר מסכימות הצפנה שהן בעלות ביטחון מוכח לפי מודל סטנדרטי כמו [[הצפנת בלום-גולדווסר]]. לעומת זאת החסרון בשיטות המתוארות כאן שהצופן המתקבל גדול יותר בערך פי שניים מהטקסט המקורי.
שורה 63:
 
{{קריפטוגרפיה}}
 
 
[[קטגוריה:קריפטוגרפיה]]