Homomorphic Encryption and Computational Proofs

‫‪Homomorphic Encryption and Computational‬‬
‫‪Proofs‬‬
‫אלי דיין‬
‫>‪<[email protected]‬‬
‫‪20.11.2012‬‬
‫‪1‬‬
‫מוטיבציה‬
‫האם ניתן לשלוח חישוב למקום שאנו לא בוטחים בו? כלומר‪ ,‬האם יש אפשרות שנשלח את‬
‫החישוב למקום אחר‪ ,‬ונבטיח את הנכונות שלו ואת סודיות המידע בחישוב?‬
‫למשל‪ ,‬האם אפשר לבצע חיפוש ב־‪ ,Google‬בלי ש־‪ Google‬ילמד עלינו? כלומר‪ ,‬נשלח‬
‫ל־‪ Google‬שאילתה מוצפנת‪ ,‬ונקבל תשובה מוצפנת‪ ,‬בלי ש־‪ Google‬ידע מה תוכן השאילתה‬
‫ומה תוכן התשובה )כי ‪ Google‬לא יודעים את המפתח הסודי(?‬
‫דוגמה נוספת לשימוש היא מחשוב ענן‪ :‬שולחים קלט ‪ x‬מוצפן ותוכנית ‪ ,P‬והשרת יחשב‬
‫את ההצפנה של )‪) P (x‬בלי לפענח את ה־‪ x‬המוצפן(‪.‬‬
‫הגדרה מערכת הצפנה הומומורפית מכילה )‪ ,(Key, Gen, Enc, Dec, Eval‬כך ש־‪ Eval‬מאפשר‬
‫חישוב על מידע מוצפן‪.‬‬
‫תכונת הנכונות של ‪ :Eval‬אם )‪ c = Enc (PK, x‬ו־) ‪ ,c0 = Eval (PK, c, P‬אזי‬
‫)‪.Dec (SK, c0 ) = P (x‬‬
‫אנחנו למעשה כבר מכירים מימוש לזה )שכולל הצפנה(‪ Eval :‬יכול לשרשר את ‪ c‬ו־ ‪,P‬‬
‫ו־‪ Dec‬יעשה את כל העבודה‪ .‬כלומר‪ ,‬בהינתן שיטת הצפנה ‪ ,CCA-1‬ניתן לבנות מערכת‬
‫הצפנה הומומורפית‪.‬‬
‫הבעיה בפתרון הזה היא עניין של יעילות‪ Eval :‬למעשה לא מבצעת את פעולת החישוב‪.‬‬
‫כדי למנוע מצב כזה‪ ,‬נגדיר את תכונת הקומפקטיות‪ :‬האורך של ‪ c0‬צריך להיות בלתי־תלוי‬
‫בגודל של ‪.P‬‬
‫נגדיר גם את תכונת הבטיחות‪ :‬סמנטית‪.‬‬
‫עד לא מזמן‪ ,‬לא ידעו איך להשיג הומומורפיות מלאה‪ .‬ידעו לעשות רק הומומורפיות‬
‫מוגבלת‪.‬‬
‫למשל‪ ,‬אם נצפין את ‪ m1‬ו־ ‪ m2‬עם ‪ ,RSA‬נקבל ‪ c1‬ו־ ‪ c2‬בהתאמה‪ ,‬כאשר ‪ci = m3i‬‬
‫)כמובן עם מודולו(‪ .‬נוכל לחשב באופן הומומורפי את ‪ m1 · m2‬באמצעות חישוב של ‪.c1 · c2‬‬
‫למה זה עובד? נשים לב‪:‬‬
‫‪3‬‬
‫) ‪c1 · c2 = m31 · m32 = (m1 · m2‬‬
‫למעשה‪ ,‬הבטיחות לא בהכרח נשמרת‪ .‬למשל‪ ,‬ב־‪ :CCA-2‬נבקש מהחבר הטלפוני לפענח‬
‫˜‪ .‬אבל ‪ p˜ = m1 · m2‬היא התשובה לחישוב‬
‫˜‪ .‬נקבל ‪p · x‬‬
‫˜‪ ,‬כאשר ‪c = c1 · c2‬‬
‫את ‪c · x3‬‬
‫ההומומורפי‪ ,‬ולכן נפגעה כאן הבטיחות‪.‬‬
‫‪1‬‬
‫‪2‬‬
‫הצפנה הומומורפית עם מפתח פרטי‬
‫אלגוריתם ‪ 1‬הצפנה הומומורפית עם מפתח פרטי‬
‫‪ .1‬נבחר מפתח פרטי – מספר אי־זוגי ‪.p‬‬
‫‪ .2‬כדי להצפין את הביט }‪:b ∈ {0, 1‬‬
‫)א( נבחר כפולה ״גדולה״ של ‪ ,p‬למשל ‪.p · q‬‬
‫)ב( נבחר מספר זוגי ״קטן״ ‪) 2r‬רעש(‪.‬‬
‫)ג( הסתר יהיה‪.c = q · p + 2r + b :‬‬
‫‪ .3‬כדי לפענח את הסתר ‪ ,c‬נסתמך על העובדה הבאה‪:‬‬
‫)‪c ≡ 2r + b (mod p‬‬
‫לכן‪ (c mod p) mod 2 ,‬הוא הביט הגלוי ‪.b‬‬
‫זוהי למעשה הוכחה לכך שמערכת הצפנה הומומורפית לא יכולה לקיים ‪ .CCA-2‬במילים‬
‫אחרות‪ ,‬אם מערכת ההצפנה היא ‪ ,CCA-2‬אנחנו בוודאות לא נוכל לקיים הומומורפיות‪ .‬עם‬
‫אנחנו בכל זאת רוצים הומומורפיות‪ ,‬נצטרך לוותר על חוזקת מערכת ההצפנה‪.‬‬
‫באופן דומה‪ ,‬במערכות כמו ‪ GM‬ו־‪ Paillier‬אפשר לעשות הומומורפיות עם חיבור‪.‬‬
‫החיפוש האמיתי הוא אחר מערכות שיהיו הומומורפיות גם לכפל וגם לחיבור‪ .‬רק בשנת‬
‫‪ 2009‬נמצאה חבורת השריגים לביצוע הומומורפיות חיבורית וכפלית‪.‬‬
‫הפתרון מאוד מסובך וקשה למימוש‪ ,‬אבל קיים‪ .‬נתאר כאן גרסה מפושטת של הפתרון‪.‬‬
‫‪2‬‬
‫הצפנה הומומורפית עם מפתח פרטי‬
‫אלגוריתם ‪ 2‬מתאר הצפנה הומומורפית עם מפתח פרטי‪.‬‬
‫נשים לב שתיתכן בעייה בפענוח‪ :‬אם ‪ r‬גדול מדי‪ ,‬יש לנו בעיה‪ ,‬כי בתוצאה עשוייה להיות‬
‫השפעה על ‪.p · q‬‬
‫כדי למנוע בעיות מהסוג הזה‪ ,‬נקבע פרמטר בטיחות ‪ n‬שיוגדר על ידי‪:‬‬
‫• ‪ p‬יהיה בגודל של ‪ n2‬ביטים‪.‬‬
‫• ‪ q‬יהיה בגודל של ‪ n5‬ביטים‪.‬‬
‫• ‪ r‬יהיה בגודל של ‪ n‬ביטים‪.‬‬
‫מבחינת נכונות – הפרמטרים מבטיחים אותה‪.‬‬
‫למה ‪ q‬צריך להיות בגודל של ‪ n5‬ביטים? בשביל הבטיחות‪ ,‬כדי לרווח את מרחב הסתרים‬
‫)וליצור בתוכו סתרים שאינם אפשריים(‪.‬‬
‫איך נחבר ונכפיל ביטים מוצפנים? אם‪:‬‬
‫‪= q1 · p + 2r1 + b1‬‬
‫‪c1‬‬
‫‪= q2 · p + 2r2 + b2‬‬
‫‪c2‬‬
‫אזי‪:‬‬
‫) ‪c1 + c2 = (q1 + q2 ) · p + 2 (r1 + r2 ) + (b1 + b2‬‬
‫‪2‬‬
‫הצפנה הומומורפית עם מפתח פומבי‬
‫‪3‬‬
‫אלגוריתם ‪ 2‬הצפנה הומומורפית עם מפתח פומבי‬
‫‪ .1‬נבחר מפתח סודי – מספר אי־זוגי ‪ p‬בגודל של ‪ n‬ביטים‪.‬‬
‫‪2‬‬
‫‪ .2‬המפתח הפומבי יהיה‪:‬‬
‫] ‪(x0 , . . . , xt ) = [q0 · p + 2r0 , . . . , qt · p + 2rt‬‬
‫את } ‪ {qi‬ו־} ‪ {ri‬נבחר כמו קודם‪.‬‬
‫למעשה‪ ,‬אלו הן ‪ t + 1‬הצפנות של ‪ .0‬בשביל הנוחות‪ ,‬נניח כי ‪ x0‬הכי גדול‪.‬‬
‫‪ .3‬הפענוח יהיה זהה להצפנה הומומורפית עם מפתח פרטי‪.(c mod p) mod 2 :‬‬
‫‪ .4‬ההצפנה‪:‬‬
‫)א( נבחר תת־קבוצה אקראית }‪.S ⊆ {1, . . . , t‬‬
‫)ב( הסתר יהיה‪:‬‬
‫) ‪xi + 2r + b (mod x0‬‬
‫‪X‬‬
‫‪i∈S‬‬
‫)ג(‬
‫‪Eval‬‬
‫יהיה כמו קודם‪.‬‬
‫בחרנו את הפרמטרים כך ש־) ‪ 2 (r1 + r2 ) + (b1 + b2‬יהיה באיזור של ‪ ,p‬ולכן הנכונות‬
‫מתקיימת‪.‬‬
‫בנוגע לכפל‪:‬‬
‫‪(c2 · q1 + c1 · q2 + q1 · q2 · p) · p‬‬
‫=‬
‫‪2 · (r1 · r2 + r1 · b2 + r2 · b1 ) + b1 · b2‬‬
‫‪+‬‬
‫‪c1 · c2‬‬
‫נבחן את הגודל של הרעש‪ r1 · b2 :‬ו־ ‪ r2 · b1‬הם בגודל של ‪ n‬ביטים לכל היותר‪ ,‬ו־ ‪r1 · r2‬‬
‫הוא בגודל של ‪ 2n‬ביטים‪.‬‬
‫מה הבעיות במימוש הזה?‬
‫• הסתר גדל בכל פעולה‪.‬‬
‫• הרעש גדל בכל פעולה‪.‬‬
‫זאת הסיבה לכך שהפתרון הוא ‪ .Somewhat Homomorphic‬הפתרון לא מסוגל לחשב כל‬
‫פונקציה ‪ P‬כפי שהוא‪ .‬לכל פונקציה ‪ P‬צריך למצוא פרמטר בטיחות ‪ n‬שיתאים לה‪ ,‬ולפעול‬
‫באמצעותו‪.‬‬
‫‪3‬‬
‫הצפנה הומומורפית עם מפתח פומבי‬
‫אלגוריתם ‪ 2‬מתאר הצפנה הומומורפית עם מפתח פומבי‪.‬‬
‫למה בהצפנה עושים ‪? (mod x)0‬‬
‫‪3‬‬
‫‪5‬‬
‫מעבר מ־‪Somewhat Homomorphic‬‬
‫להצפנה הומומורפית מלאה‬
‫• כדי להקטין את הגודל של הסתר ‪.c‬‬
‫• כדי להגדיל את הבטיחות‪.‬‬
‫איך זה עוזר לבטיחות?‬
‫) ‪xi + 2r + b (mod x0‬‬
‫‪X‬‬
‫= ‪c‬‬
‫‪i∈S‬‬
‫"‬
‫"‬
‫‪#‬‬
‫‪#‬‬
‫‪X‬‬
‫‪X‬‬
‫‪= p · qi + 2 · r +‬‬
‫‪ri + b − k · x0‬‬
‫‪i∈S‬‬
‫‪i∈S‬‬
‫"‬
‫‪#‬‬
‫"‬
‫‪#‬‬
‫‬
‫‪X‬‬
‫‪X‬‬
‫‬
‫‬
‫‬
‫‪= p · qi− k · q0 + 2 · r +‬‬
‫‪ri − k · r0 + b‬‬
‫‬
‫‪i∈S‬‬
‫‪i∈S‬‬
‫היינו רוצים ש־ ‪qi ∼ q0‬‬
‫ולכן הרעש‬
‫‪i∈S‬‬
‫‪P‬‬
‫‪ .‬מכיוון ש־ ‪ x0‬הוא הגדול ביותר‪ ,q0 > qi ,‬ולכן ‪,k ≥ t‬‬
‫‪ri − k · r0‬‬
‫‪X‬‬
‫‪r+‬‬
‫‪i∈S‬‬
‫הוא רעש קטן יחסית וזניח‪.‬‬
‫‪4‬‬
‫בעיית ה־‪ gcd‬המקורב‬
‫זוהי בעיה חישובית‪ ,‬שתגדיר לנו מאפיין בטיחות‪.‬‬
‫הקלט‪ :‬שלושה מספרים ‪ Q ,P‬ו־‪ .R‬בוחרים } ‪ ,p ∈ {0, . . . , P‬מכפילים אותו בהרבה‬
‫רעש מהצורה ‪ qi · p + ri‬כאשר }‪ qi ∈ {0, . . . , Q‬ו־}‪ ,ri ∈ {0, . . . , R‬ומבקשים מהיריב‬
‫לחשב את ‪ p‬בהסתברות טובה‪.‬‬
‫ההנחה אומרת שעבור בחירת פרמטרים צנועים‪ ,‬ליריב יהיה קשה מאוד לחשב את ‪.p‬‬
‫אפשר להוכיח שהבעיה שקולה להגדרת הבטיחות הסמנטית‪.‬‬
‫‪5‬‬
‫מעבר מ־‪Somewhat Homomorphic‬‬
‫להצפנה הומומורפית‬
‫מלאה‬
‫‪NAND‬‬
‫היא פעולה אוניברסלית‪ .‬איור‬
‫‪1‬‬
‫נוכיח את המעבר בכך שהפעולה‬
‫את זה‪.‬‬
‫‪ ,(α‬שאותו אפשר לקודד כתוכנית ולשלוח‬
‫לו‬
‫)נקרא‬
‫מעגל‬
‫מתאר‬
‫האיור‬
‫כי‬
‫לב‬
‫נשים‬
‫ ‬
‫ל־‪ .Eval‬לאחר הקריאה ל־‪ ,Eval‬נקבל את ‪ ,Eval c¯1 , c¯2 , sk , α‬כאשר‪:‬‬
‫) ‪(c1‬‬
‫‪pk‬‬
‫) ‪(c2‬‬
‫‪pk‬‬
‫)‪(sk‬‬
‫‪pk‬‬
‫‪Enc‬‬
‫=‬
‫‪c¯1‬‬
‫‪Enc‬‬
‫=‬
‫‪c¯2‬‬
‫‪Enc‬‬
‫=‬
‫‪sk‬‬
‫‪4‬‬
‫מתאר איך עושים‬
‫‪5‬‬
‫מעבר מ־‪Somewhat Homomorphic‬‬
‫להצפנה הומומורפית מלאה‬
‫איור ‪ :1‬יצירת הצפנה הומומורפית שלמה‬
‫‪5‬‬
‫מ־‪Somewhat homomorphic‬‬
‫להצפנה הומומורפית מלאה‬
Somewhat Homomorphic‫מעבר מ־‬
5
:‫ כאשר‬,c¯3 ‫יחזיר לנו‬
Dec
sk
.Fully
Homomorphic ‫ל־‬
(¯
c3 )
= p1 NAND p2
p1
=
Dec
sk
(c1 )
p2
=
Dec
sk
(c2 )
‫יכולה להפוך‬
Eval
Somewhat Homomorphic ‫משפט כל מערכת‬
.Bootstrappable ‫ צריך לדרוש גם‬,‫אבל למעשה‬
6