340 likes | 438 Views
Concurrent ZK. סמינר בפרוטוקולים קריפטוגרפיים – עומר פנט. חזרה - ZK. IP היא ZK אם לכל יריב קיים סימולטור לכל שפה ב NP יש פרוטוקול ZK הפרוטוקול של Blum הרכבה סדרתית של פרוטוקול ZK היא גם ZK אין משפט עבור הרכבה מקבילית. חזרה BB-ZK. פרוטוקול הוא BB-ZK אם קיים סימולטור לכל יריב
E N D
Concurrent ZK סמינר בפרוטוקולים קריפטוגרפיים – עומר פנט
חזרה - ZK • IP היא ZK אם לכל יריב קיים סימולטור • לכל שפה ב NP יש פרוטוקול ZK • הפרוטוקול של Blum • הרכבה סדרתית של פרוטוקול ZK היא גם ZK • אין משפט עבור הרכבה מקבילית
חזרה BB-ZK • פרוטוקול הוא BB-ZK אם קיים סימולטור לכל יריב • לא קיים BB-ZK עם שלושה סיבובים [GK 96] • קיים פרוטוקול BB-ZK עם מספר סיבובים קבוע commit r commit G P V decommit r decommit G
cZK - מוטיווציה • שימוש ב ZK בתצורה "מציאותית" • שרת מרכזי כל יכול • מספר לקוחות מוגבלים חישובית ובלתי תלויים • עבור כל לקוח השרת מריץ עותק חדש של P • כל העותקים של P רצים באופן בלתי תלוי • לא מובטח כי העותקים של V הם בלתי תלויים
cZK - מוטיבציה • היריב V* שולט ומתזמן את כל העותקים של V • מכיל את המקרה של הרצה סדרתית או מקבילית V* server P V P V P V
cZK - הגדרה • פרוטוקול (P,V) הוא cZK אם הוא IP לשפה L ולכל יריב פולינומאלי בו זמני V* קיים סימולטור פולינומאלי S כך שלכל xL הפלט של (P,V)[x] בלתי מובחן מהפלט של S(x) • יריב בו זמני הוא יריב ששולט במספר sessions מול עותקים בלתי תלויים של P ובתזמון שלהם
cZK – הגדרה • הפרוטוקול הוא IP ביחס לכל session בנפר • מספר הסיבובים נקבע על פי session בודד • מספר ה sessions הבו זמניים פולינומאלי (בגלל V*) • פרוטוקול הוא BB-cZK אם קיים סימולטור שמדמה ריצה של כל יריב בעזרת שאילתות BB • מהו מודל החישוב?
מספר סיבובים – סקירת תוצאות • לא קיים פרוטוקול BB-cZK עם 3 סיבובים [GK 96] • לא קיים פרוטוקול BB-cZK עם 4 סיבובים [KPR 98] • קיים פרוטוקול עם ω(n) סיבובים [RK 99] • לא קיים פרוטוקול BB-cZK עם 7 סיבובים [R 00] • קיים פרוטוקול עם ω(log2 n) סיבובים [KP 01] • חסם תחתון של log n סיבובים [CKPR 01] • קיים פרוטוקול עם ω(log n) סיבובים [PRS 02] 3 4 7 Log n Log2 n n
הקושי בסימולציה - דוגמה • האם הפרוטוקול ZK ב 4 סיבובים הוא גם cZK? S2 S1 V1 P V P1 V1 - commit r V1 P1 - commit G P1 V2 - decommit r V2 P2 - decommit G P2 V2 P2
הקושי בסימולציה • תזמון גרוע במיוחד • סימולציה דורשת זמן אקספוננציאלי • די בתזמון זה על מנתלהכשיל כל סימולטור
חסם תחתון למספר סיבובים • אם קיימת ל L מערכת הוכחה (P,V) שהיא BB-cZK עם 4 סיבובים, אז L ב BPP [KPR 98] • ההוכחה דומה לחסם עבור 3 סיבובים [GK 96] • מניחים בשלילה כי קיים סימולטור S ובונים בעזרתו אלגוריתם הכרעה עבור L • עבור xL הטעות זניחה בגלל השלמות של (P,V) • עבור xL הטעות זניחה בגלל הנכונות של (P,V)
חסם תחתון למספר סיבובים • נגדיר יריב V* שמממש את התזמון הגרוע וכל הודעה שלו תלויה בכל ההודעות הקודמות בכל ה sessions • שימוש ב T(S)-wise independent hash function אלגוריתם הכרעה: • עבור קלט x, הרצת S עם היריב V*, נחזיר כי xL אם בפלט של S, V* משתכנע בכל ה sessions
חסם תחתון למספר סיבובים • עבור xL, S מדמה ריצות רגילות של (P,V) • עבור xL אם קיים S שמשכנע את V* בהסתברות לא זניחה, נבנה בעזרתו P* שמשכנע את V ש xL • היריב P* מצליח אם S לא עושה rewind ל session P* S V* session i .. V ..
עוד חסמים תחתונים • חסם תחתון ל 7 סיבובים [R 00] • חסם תחתון ל log(n)/loglog(n) [CKPR 01] • כל החסמים משתמשים בתזמון קבוע • החסם לכל קבוע משתמש ביריב שסוטה מהפרוטוקול
פרוטוקול עם k סיבובים • נוסיף לפרוטוקול של Blum שלב התחלתי ונחזור עליו k פעמים P V STSRT P1,V1 – slot 1 … Pk,Vk – slot k Part 1 END Part 2 Blum open all slots
הסימולטור של RK • הסימולטור נוקט בגישה חמדנית ומבצע rewind ל slot אם מספר ה sessions שנאבד קטן מ (n-1)/k • נוסחאת נסיגה לעבודה W(n)=poly(n)*W(n-1/k) • אם k=O(n) אז הסימולטור פולינומאלי • אם k=O(1) אז הסימולטור קואזי-פולינומאלי • לכל ε>0 קיים פרוטוקול cZK עם nε סיבובים
solve(hist, m) If m>1 hist1 = solv(hist, m/2) hist2 = solv(hist, m/2) hist3 = solv(hist1, m/2) hist4 = solv(hist1, m/2) return hist3 pick random msg p simulate V*(hist, p)) -> v return hist + (p,v) התעלמות מהתזמון של V* וביצוע rewinds על פי אסטרטגיה קבועה מראש ספירת רק הודעות שלב 1 שמירת כל התשובות העדכניות של V* שימוש בשתשובות שנשמרו עבור הודעות שלב שני הסימולטור של KP
ניתוח הסימולטור של PK • הסימולטור רץ בזמן פולינומיאלי • הסימולטור מוציא פלט בלתי מובחן מריצה תקינה • הסימולטור כמעט אף פעם לא "נתקע" • התמודדות עם V* שסוטה מהפרוטוקול
הסימולטור לא נתקע • נניח כי התזמון של V* קבוע מראש, אך לא ידוע • בלוק הוא רצף הודעות שמסומלץ על ידי solve • בלוק i-מינימאלי הוא הבלוק הקטן שמכיל את slot i • בלוקים i-מינימאליים הם שונים • בלוק הוא טוב אם הוא לא מכיל START או END • יש k-2d בלוקים טובים ומספיק אחד בכל session • נבחר k=O(log n) ונקבל כי הסימולטר לא נתקע
התמודדות עם סטיות מהפרוטוקול • היריב V* יכול להחזיר בכל שלב • הסימולטור מחזיר את התוצאה האחרונה של V* • בלוק הוא רע עם אח שלו מחזיר והוא לא • בלוק אחד הוא רע בהסתברות קטנה מ ¼ • בלוקים שלא מוכלים זה בזה הם בלתי תלויים • ההסתברות שכל הבלוקים רעים קטנה מ (¼)k/d • נבחר k=O(log2 n) ונקבל הסתברות זניחה להיתקע
הסימולטור של PRS • למעשה מדובר בסימולטור של KP עם ניתוח מתוחכם • המטרה היא להוכיח כי רוב הסרטים האקראיים טובים • התאמת סרטים טובים רבים לכל סרט רע • למצוא בלוקים קטנים שרצים פעמים רבות ולהחליף • להחליף ריצה של בלוקים אחים [PTV 08]
ניתוח הסימולטור של PRS • נגדיר thread כסימולציה רצופה של V* • כל session בכל thread נתקע בהסתברות זניחה • נאמר כי slot פתור ב thread עם הוא מקבל תשובה • מתי thread יגיע ל END של session • מתי thread\session יתקע • נבחר thread\session ראשיים • סרט רע גורם ל thread\session הראשיים להתקע
ניתוח הסימולטור של PRS • עבור סרט r, החלפת בלוק B באחיו B’ על ידי הלחפת הביטים האקראיים בהם השתמשה הסימולציה של B באלו של B’, וקבלת סרט חדש r’ • בתוך B יתכן תזמון שונה מבתוך B’ • הבלוקים B,B’ משתמשים באותה כמות של ביטים • הסימולציה בתוך הבלוקים B,B’ לא משתנה
ניתוח הסימולטור של PRS • נגדיר יחס סדר בין בלוקים (C>B) 1. 2.
ניתוח הסימולטור של PRS • בלוק B עם אח B’ הוא מתחלף אם: • הוא על (מכיל את) ה thread הראשי • הוא מכיל slot פתור של ה session הראשי • הוא לא מכיל את START • B’ לא מכיל את END
ניתוח הסימולטור של PRS • אם B בלוק מתחלף עם אח B’, והסרט r מתקבל על ידי החלפת B עם B’ את הסרט r הוא טוב • אחרי ההחלפה B’ על ה thread הראשי • אחרי ההחלפה B מכיל slot פתור • אם ה thread הראשי מגיע ל END אז B התבצע
ניתוח הסימולטור של PRS • אם C>B בלוקים מתחלפים, לאחר שנחליף את B עם אחיו B’, הבלוק C עדיין מתחלף • אם C מתבצע לפני B, ההחלפה לא משפיעה על C • אם C מכיל את B,B’ הוא מכיל אותם אחרי ההחלפה • הסימולציה באח של C לא משתנה
ניתוח הסימולטור של PRS • בלוק B מתחלף הוא הפיך אם: • בסימולציה בין START ל B יש על ה thread הראשי רק slots משכנעים של ה session הראשי • בסימולציה בין START ל B על כל ה threads האחרים יש רק slots לא משכנעים של ה session הראשי • אם C>B בלוקים הפיכים, החלפת B,B’ משאירה את C הפיך
ניתוח הסימולטור של PRS • עבור סרט r נסמן ב undo(r) את הסרט שמתקבל ממציאת הבלוק הראשון שאינו על ה thread הראשי ומכיל slot משכנע, והחלפתו עם אחיו • אם B בלוק הפיך והסרט r’ מתקבל מ r על ידי החלפת B עם אחיו B’ אז r = undo(r’)
ניתוח הסימולטור של PRS • אם בסרט רע יש p בלוקים מתחלפים והפיכים אז ניתן ליצור ממנו 2p-1 סרטים טוביים • אם שני סרטים טובים מתקבלים משני סרטים רעים על ידי החלפת בלוקים הפיכים, אז הם שונים • אם בכל סרט רע יש p בלוקים מתחלפים והפיכים אז ההסתברות לסרט רע היא (½)p
ניתוח הסימולטור של PRS • נניח כי הסרט רע • יש k-2d בלוקים i-מינימאלים ללא START או END • אם B בלוק i-מינימאלי עם אח B’, לא מכיל את END אז גם B’ לא מכיל את END • כל בלוק i-מינימאלי טוב הוא מתחלף והפיך • נבחר k=O(log n) ונקבל הסתברות זניחה להיתקע
מקורות • O. Goldreich and A. Kahan. How to Construct Constant-Round Zero-Knowledge Proof Systems for NP 1996 • J. Kilian, E. Petrank, and C. Rackoff. Lower Bounds for Zero-Knowledge on the Internet 1998 • R. Richardson and J. Kilian. On the Concurrent Composition of Zero-Knowledge Proofs 1999 • A. Rosen. A Note on the Round-Complexity of Concurrent Zero-Knowledge 2000 • J. Kilian and E. Petrank. Concurrent and Resettable Zero-Knowledge in Polylogarithmic Rounds 2001 • R. Canetti, J. Kilian, E. Petrank and A. Rosen. Black-Box Concurrent Zero-Knowledge Requires (Almost) Logarithmically Many Rounds 2001 • M. Prabhakaran, A. Rosen and A. Sahai. Concurrent Zero-Knowledge Proofs in Logarithmic Number of Rounds • A. Rosen Concurrent Zero-Knowledge 2006 • R. Pass W. Tsengy M. Venkitasubramaniamz Unconditional Characterizations of Concurrent Zero Knowledge 2008