הצפנת אוקמוטו-אושיאמה

מתוך ויקיפדיה, האנציקלופדיה החופשית
קפיצה לניווט קפיצה לחיפוש

בקריפטוגרפיה, הצפנת אוקמוטו-אושיאמה (באנגלית: Okamoto-Uchiyama Cryptosystem) המסומנת בקיצור OU, היא מערכת הצפנת מפתח ציבורי הומומורפית שהתגלתה ב-1998 על ידי Tatsuaki Okamoto ו-Shigenori Uchiyama מחברת ניפון טלגרף אנד טלפון (NTT)[1]. היא שונה מ-RSA ומדיפי-הלמן בכך שזאת מערכת הצפנה מוכחת כבטוחה בהנחה שפירוק לגורמים היא בעיה קשה והיא פועלת מעל חבורת אוילר כאשר וכן ו- ראשוניים.

תיאור כללי[עריכת קוד מקור | עריכה]

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

אם .

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

פונקציה לוגריתמית[עריכת קוד מקור | עריכה]

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

.

היא חבורה ציקלית מסדר לכן . הפונקציה עבור קלה לחישוב והיא:

.

והיא מוגדרת היטב. הפונקציה נקראת "פונקציה לוגריתמית" של והביטוי שקול ל- מעל מודולו . היא הומומורפית ביחס לפעולות הכפל והחיבור כי:

ולכן מתקיים:

ההוכחה במאמר המקורי.

הצפנה ופענוח[עריכת קוד מקור | עריכה]

הכנה[עריכת קוד מקור | עריכה]

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

המפתח הציבורי הוא: . המפתח הפרטי הוא: .

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

הצפנה[עריכת קוד מקור | עריכה]

בהינתן טקסט גלוי באורך סיביות לכל היותר. בוחרים שלם אקראי ומחשבים את:

.

פענוח[עריכת קוד מקור | עריכה]

תחילה מחשבים את ואז הטקסט הגלוי מתקבל על ידי

דרך אחרת להציג זאת (הכפלה בהופכי כפלי במקום חילוק):

זה נכון כי לפי חוקי הלוגריתמים הוא במובן מסוים הלוגריתם של בבסיס , לפי זה אם נתון:

כל מה שצריך כדי לחלץ את זה לקחת לוגריתם בבסיס . את זה אפשר לעשות על ידי מודולו .

ביטחון[עריכת קוד מקור | עריכה]

יהי מייצר כאשר ו- ראשוניים. בעיית הפירוק בהינתן למצוא את קשה אם עבור כל אלגוריתם פולינומי הסתברותי ועבור כל קבוע עם גדול מספיק מתקיים:

.

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

.

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

דוגמה במספרים קטנים[עריכת קוד מקור | עריכה]

נניח שנבחרו הפרמטרים הבאים: .

אם אז וכן .

אם המסר להצפנה הוא ו- אז מתקבל מודולו .

לפענוח קודם מחשבים את: .

הלוגריתמים של ושל (מודולו ) הם: וכן

ואז .

שיפורים[עריכת קוד מקור | עריכה]

השלב הראשון בפענוח דורש פעולות על סיביות בגלל העלאה בחזקת . קורון נקש ופלייר הציעו לייעל את שיטת OU כך שסיבוכיותה תהיה מבלי לאבד את השקילות לבעיית הפירוק[2]. הם הציעו להשתמש בראשוני כך של- יש גורם ראשוני גדול (באורך 160 סיביות לפחות), כלומר . כמו בגרסה המקורית, בוחרים שלם ומחשבים את כך שהסדר שלו הוא . מחשבים את , מגרילים את ומחשבים את . השלישייה היא המפתח הציבורי ואילו המפתח הפרטי הוא .

להצפנה בוחרים שלם אקראי ומחשבים את ואילו לפענוח מחשבים את:

הסיבוכיות השתפרה כי קטן מ-.

EPOC[עריכת קוד מקור | עריכה]

EPOC קיצור של Efficient Probabilistic Public Key Encryption היא מערכת הצפנה הסתברותית שפותחה ב-1999 על ידי Okamoto, Uchiyama ו-Fujisaki מ-NTT והוצעה לתקן 1363a-2004 IEEE. היא מבוססת על פונקציית OU המתוארת[3][4] והיא הוכחה בטוחה סמנטית נגד תקיפת מוצפן-נבחר במסגרת מודל אורקל אקראי, כלומר היא פועלת בשילוב עם פונקציית גיבוב. הגרסה הראשונה EPOC-1 נועדה רק לשיתוף מפתח. גרסת EPOC-2 משלבת גם פד חד-פעמי/צופן סימטרי. גרסת EPOC-3 משתמשת בשתי פונקציות גיבוב ו- והיא מבצעת הצפנה מאומתת כדלהלן. בהינתן פרמטר ביטחון של פונקציית הצפנה אסימטרית כמו זו המתוארת לעיל ופונקציית הצפנה סימטרית כמו צופן זרם או צופן בלוקים. מכינים מפתח פרטי ומפתח ציבורי של פונקציית ההצפנה האסימטרית ומבצעים:

הצפנה פענוח

הביטוי פירושו בחירה של ערך אקראי בהתפלגות אחידה. הסימן מייצג הודעת שגיאה.

ראו גם[עריכת קוד מקור | עריכה]

הערות שוליים[עריכת קוד מקור | עריכה]

  1. ^ A new public-key cryptosystem as secure as factoring, Tatsuaki OkamotoShigenori Uchiyama, Advances in Cryptology - EUROCRYPT'98. Lecture Notes in Computer Science. 1403. Springer. pp. 308-318
  2. ^ Accelerating Okamoto-Uchiyama public-key cryptosystem, J.-S. Coron ; D. Naccache ; P. Paillier, 1999
  3. ^ EPOC: Efficient Probabilistic Public-Key Encryption
  4. ^ Secure Integration of Asymmetric and Symmetric Encryption Schemes, Fujisaki, E. & Okamoto, T. J Cryptol (2013)