1 / 27

יעל סמיט דורון פרידלנד בר כץ ארז אלון

סדנה בבטיחות תקשורת. נושא :. MPC – Multi Party Computation. יעל סמיט דורון פרידלנד בר כץ ארז אלון. הבעיה. מס' אנשים (לשם המקוריות, נניח n ) מעוניינים לחשב איזושהי פונקציה ביחד, כאשר לפונקציה n כניסות – וכל אחד מהשחקנים נותן כניסה אחת.

cosmo
Download Presentation

יעל סמיט דורון פרידלנד בר כץ ארז אלון

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. סדנה בבטיחות תקשורת נושא : MPC – Multi Party Computation יעל סמיט דורון פרידלנד בר כץ ארז אלון

  2. הבעיה • מס' אנשים (לשם המקוריות, נניח n) מעוניינים לחשב איזושהי פונקציה ביחד, כאשר לפונקציה n כניסות – וכל אחד מהשחקנים נותן כניסה אחת. • הבעיה היא שהשחקנים אינם רוצים לשתף אחד את השני בכניסה שהם מספקים – הם רק רוצים לדעת מה תוצאות החישוב. • נחשוב לדוגמא על מקרה של הצבעה אלקטרונית – כל שחקן רוצה לתת את קולו (נניח בעד, נגד או נמנע), ובסופו של דבר כל השחקנים רוצים לדעת מה היתה תוצאת ההצבעה, אך אף שחקן אינו רוצה לחשוף את מה שהצביע.

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

  4. איך בעצם זה עובד?? • בשלב הראשון יש להפוך את הפונקציה הנתונה למעגל חישובי המכיל רק שערי חיבור חיסור וכפל. מעגל זה הוא שיחושב ע"י המשתתפים. • כל משתתף מחלק את הסוד שלו ל n חלקים ומשתף כל משתתף אחר בחלק אחד (אחר) מהסוד. • כל אחד מהמשתתפים מבצע את פעולת המעגל על החלקים שאצלו. במידה ועל השחקנים לבצע שער "*" הם עושים זאת ביחד תוך העברת מידע אחד לשני – ועל כך נרחיב בהמשך. • בסוף התהליך המשתתפים יכולים לשתף אחד את השני בתוצאות החישוב – שהם למעשה "חלק" של התוצאה. בעזרת כל חלקי התוצאה ניתן בהליך מתמטי לגלות את התוצאה האמיתית.

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

  6. Connection Controller MPC Protocol Parser GUI MPC Implementation - מודולים עיקריים Create Circuit Circuit Object Circuit Object + configurations Results Create Connections Send/Receive from other players

  7. תהליך פעולת האפקליציה א. כתיבת/טעינת תכנית והפעלת קומפילציה לבדיקת התחביר ויצירת המעגל. ב. בחירת קונפיגורציות להפעלת החישוב והכנסת ה"סוד". ג. הגדרת המשתתפים בתהליך (IP/Port ועוד מספר הגדרות) בעזרת קובץ הגדרות או הורדה מתוך שרת. ד. הפעלת החישוב... צפייה בתוצאה.

  8. א. יצירת המעגלFunction Configuration בשלב זה ניתן לבחור בין 3 דרכים לטעון פונקציה: • מתוך קובץ – קובץ טקסט פשוט המכיל את הקוד. • מתוך template מוכן מראש – חיבור/הכפלה/בדיקת שוויון/הצבעה. במקרה זה יש צורך להכניס גם מה מספר השחקנים. • Blank With Pattern – נותן קטע קוד בסיסי המסביר את התחביר. המשתמש יכול לשנות אותו מתוך ה GUI לקוד בו הוא חפץ

  9. א. יצירת המעגל- המשך..Function Source Edit לאחר טעינת הקוד יופיע הקוד בתוך חלון טקסט. בשלב זה יכול המשתמש לשנות את הקוד כפי שירצה (אלא אם כן הקוד נוצר בעזרת template – ואז המשתמש אינו רשאי לשנותו). לאחר הסיום יכול המשתמש לשמור את הקוד לקובץ בעזרת Save.

  10. א. יצירת המעגל- המשך..The syntax • התחביר הנתמך תומך בפעולות הבאות: • חיבור חיסור כפל וחילוק תוך נתינת קדימויות מתמטיות. • שימוש בסוגריים לשינוי סדר הפעולות. • שימוש חופשי במשתנים ללא צורך להגדירם – כל המשתנים מטיפוס Integer. • תמיכה בפעולה a==b הבודקת אם שני האופרנדים שווים. ערך הביטוי הוא 1 אם הם שווים ו 0 אחרת. • תמיכה בפעולה a = b ? c : d . במידה ו b=0 נקבל a=d, אחרת a=c. • הגדרת כניסות ויציאות המעגל בצורה פשוטה בעזרת שורת Inputs ושורת Outputs. • ל Inputs נתייחס לפי סדר הופעתם בשורה זו – הראשון יהיה ה Input של השחקן הראשון, השני של השני וכן הלאה. • את ה Outputs שכל שחקן יהיה רשאי לראות נוכל להגדיר בהמשך.

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

  12. א. יצירת המעגל- המשך..חלון Circuit • בחלון זה יכול המשתמש לראות תרשים גרפי של המעגל אותו יצר והוא מתכונן להריץ. • לשם פשטות, אנו מסמנים ב {i} את הכניסה ה i של המעגל וב i את הערך הקבוע i (כמו 12 בדוגמא)

  13. א. יצירת המעגל- המשך..הערה לגבי פעולת החילוק • בצורה הבסיסית הפרוטוקול תומך בפעולות חיבור חיסור וכפל בלבד. פעולת החילוק לכשעצמה לא ניתנת לביצוע בצורה ישירה. • מכיוון שאנו עובדים בשדה סופי שנוצר מהמספר הראשוני p, נשתמש בעובדה שבשדה כזה ההופכי של x מוגדר ע"י וזאת מכיוון שלכל אחד מהאיברים בשדה מתקיים: • מכיוון שפעולת החלוקה a/b שקולה תמיד להכפלה בהופכי, עלינו למצוא את ההופכי של b – ע"י הכפלתו בעצמו p-2 פעמים, ואז להכפיל את התוצאה ב a. • במעגל אנו מראים שער "/" פשוט, כאשר מאחורי הקלעים מתבצע החישוב המלא כפי שתיארנו לעיל. • פעולת ההכפלה p-2 פעמים מתבצעת בעזרת עץ חישוב שסיבוכיותו לוגריתמית ב p.

  14. ב. קונפיגורציות החישוב והכנסת ה"סוד" • כל שחקן מכניס את ה"סוד" שלו ואת האינדקס שלו, כאשר האינדקסים הינם מס' בין 0 ל- n-1. • בנוסף על השחקן לטעון קובץ קונפיגורציות הכולל את ה-IP והפורט של השחקן, ומפתח לחיבור ב-SSL. • לבסוף על המשתמש לבחור בסוג הפרוטוקול אותו הוא רוצה להריץ.

  15. ג. הגדרת המשתתפים • השחקנים יכולים להתחבר זה לזה ב-2 דרכים: • קובץ XML (זהו קובץ הקונפיגורציות בו מוסיפים פרטי התחברות לשאר השחקנים). • ע"י server, כאשר יש להכניס את ה-IP ומס' הפורט שלו, השולח לכל השחקנים את פרטי ההתחברות לשחקנים האחרים.

  16. ג. הגדרת המשתתפים – המשךמבנה קובץ הקונפיגורציות • לקובץ 2 כניסות עיקריות – הגדרת המשתתפים והגדרת ה SSL. • בהגדרת ה SSL על המשתמש רק להגדיר את מיקום ה key בו הוא משתמש. • בהגדרת המשתתפים, עבור כל שחקן יש להגדיר: • IP/Port. • Index. • Outputs – זוהי רשימת ה Outputs של המעגל שהשחקן רשאי לראות, לפי הסדר שהוגדרו בקוד ובמעגל. הערה: במקרה של הגדרת השחקנים מתוך שרת, המשתמש צריך להגדיר רק את ה Port/IP שלו (ולשאר השחקנים רק את ה Outputs שכל שחקן אמור לקבל).

  17. ג. הגדרת המשתתפים – המשךהסרבר • ישום נפרד • כל משתתף שמתחבר לסרבר, שולח לו את הפרטים של עצמו, ופרטים שקשורים לחישוב (מספר שחקנים מצופה, המספר הראשוני של השדה, ועוד...) • נעשית בדיקה שכל המששתפים אכן מבצעים את אותו חישוב ואין קונפליקטים בינהם. • שימוש בסרבר חוסך את הצורך בידיעת כתובות האייפי והפורט של המשתתפים השונים.

  18. ג. הגדרת המשתתפים – המשךהסרבר

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

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

  21. עבודה עם רמאיםByzantine protocol • כל האלגוריתם שהסברנו עד עתה תקף כאשר השחקנים שולחים את המידע אותו הם אמורים לשלוח. • האלגוריתם מגן על הסודות של המשתתפים, אך איננו יודע להתמודד ולהמשיך את החישוב כאשר שחקנים מנסים לשלוח מידע שגוי בטעות/בכוונה או שאינם שולחים מידע כלל. • בשלב השני של הפרוייקט מימשנו מספר רכיבים שנועדו להתמודד עם בעיה זו.

  22. עבודה עם רמאים (2)Byzantine protocol ניתן לחלק את הרכיבים המטפלים בכך לשלושה חלקים: • בשלב הראשון – חלוקת הסודות – משתתף יכול לשלוח מספרים שאינם בהכרח חלק של הסוד שלו (ואינם בהכרח חלק של סוד כלשהו). • פתרון בעזרת אלגוריתם VSS שמורכב ממספר איטרציות של העברת מידע בין השחקנים. כחלק מאלגוריתם זה, שחקן המחלק את סודו, dealer, מחלק פולינומים לכל שחקן ולא מספרים. בעזרת פולינומים אלה יכולים השחקנים להם חילקו את החלקים השונים לוודא כי המידע אותו שלח ה dealer קונסיסטנטי. • נשים לב, כי ה dealer או כל שחקן אחר יכול לנסות לפגוע בחישוב ע"י כך שלא ישלח דבר. טיפלנו בבעייה זו ע"י Timeout-ים: dealer שלא שלח מידע ,אפילו לחלק מן השחקנים, מקבל יחס של מי שמנסה לרמות ומוגשת נגדו "תלונה". • אם המשתתפים מכריזים על ה dealer כרמאי הוא מוצא מתהליך החישוב והשחקנים מתחשבים בקלט שלו כאילו והוא "0" (לפי הגדרת הפרוטוקול).

  23. עבודה עם רמאים (3)Byzantine protocol בשלב השני – אנו צריכים לדעת להתמודד עם משתמש שמנסה לשלוח מידע לא נכון בצעד הכפל. בכדי לפתור בעייה זו השתמשנו באלגוריתם של GRR שיודע לאתר שחקנים המנסים לרמות בשלב זה. בשלב השלישי - נרצה להתמודד עם משתמש שבשלב איחוד התוצאה (בסוף החישוב) שולח חלקי תוצאות שגויים. לטובת כך מימשנו אלגוריתם לתיקון שגיאות של WB שיודע, בשלב זה, לתקן את הערכים – גם אם אחד מהם הוא שקר או פשוט לא קיים (משתמש יכול גם פשוט לא לשלוח כלום ולאו דווקא לשקר).

  24. יכולות ממומשות • שלב א' - הפרוטוקול הפשוט : • קומפיילר המקבל קלט בפורמט מסוים ויוצר ממנו מעגל • ביצוע פעולות על מספרים ומטריצות בשדות סופיים • חלוקת סוד (share) ואיחוד סוד (Recombine) • מימוש צעד הכפל של הפרוטוקול לפי BGW ולפי GRR. • יכולות תקשורת בסיסיות – שליחת מספרים בודדים • טעינת פרטי התקשרות לשחקנים מקובץ XML • ממשק נוח למשתמש • הצגה גרפית של מעגל החישוב

  25. יכולות ממומשות (2) • שלב ב' - הפרוטוקול המורכב (כולל טיפול ברמאים) : • יכולות תקשורת מתקדמות – שליחת אובייקטים כלשהם • Absolute verification of a secret • מימוש צעד ההכפלה לפי GRR • אלגוריתם לתיקון שגיאות של Welch-Berlekamp לקודי BCH • הוצאת שחקן שקרן מתהליך החישוב • טעינת פרטי התקשרות לשחקנים משרת • הוצאת חיוויים מתאימים למשתמש על נסיונות רמאות • הוספת תבניות מוגדרות מראש לפונקציות מסויימות

  26. מה נשאר...(לשנה הבאה) • מימוש צעד ההכפלה במקרה של השקרנים לפי הפתרון של רן קנטי • מימוש פרוטוקול Broadcast – לוח מודעות עליו ניתן לפרסם הודעות לכולם. • הוספת תמיכה באופרטורים כגון"X>Y” במעגל החישובי

  27. מאמרים רלוונטים • Completeness Theorem for Non-Cryptographic Fault-Tolerant Distributed Computation - BGW(88) • Simplified VSS and Fast-track Multiparty Computations with Applications to Threshold Cryptography – GRR(88) • 3. Algorithmic Introduction to Coding Theory – Madhu Sudan (2001)

More Related