הצפנה מבוססת סריג

הצפנה מבוססת סריג (באנגלית: Lattice Based Cryptography) כוללת פונקציות קריפטוגרפיות (עם ביטחון מוכח) וקריפטואנליזה של פונקציות קריפטוגרפיות המבוססות על מבנה מתמטי שנקרא סריג. הצפנת מפתח ציבורי מבוססת סריג נשענת על הקושי שבפתרון בעיית הסריג. קריפטואנליזה של פונקציות אילו מבוססת על טכניקות רדוקציית סריג. הצפנת סריג עדיין בראשית דרכה ונעשית אטרקטיבית לאחרונה בשל החיפוש אחר מערכות הצפנה עמידות כנגד קריפטואנליזה פוסט-קוונטית, כאשר מחשבים קוונטיים יהיו מעשיים. ב-1996 גילה Ajtai תכונה חשובה של סריגים שמעניינת מהיבט קריפטוגרפי. מאז נעשים מאמצים לפתח מערכות הצפנה מבוססות סריג שתהיינה גם בטוחות לפי המבנה המקורי שהוצע וגם שתהיינה יעילות מבחינה מעשית כמו ממצאיו של Micciancio שחסרונן העיקרי שהן חסרות דלת מלכודת ולא ניתן להשתמש בהן עם מפתח הצפנה (הן שימושיות כפונקציה חד-כיוונית חסרת מפתח). ממצאים אחרים שיכולים להוביל לפיתוח מעשי של סכימות בטוחות מבוססות סריג הן של Micciancio ו-Vadhan שבהן אפשר לשתף סריג אחד על ידי משתמשים רבים והמפתח הציבורי של כל אחד יהיה מוכב מווקטור יחיד (המפתח הפרטי הוא הנקודה בסריג הקרובה ביותר לווקטור הציבורי) וכן הצפנת רגב. סריגים נחקרו על ידי מתמטיקאים במשך עשורים והם שימושיים במספר סוגיות כמו תכנון ליניארי ופירוק לגורמים. העניין בסריגים עלה בשל מאפיין שימושי במיוחד לתחום הקריפטוגרפיה שהתגלה על ידי Ajtai ב-1996 קרי רדוקציה מהמקרה הגרוע למקרה הממוצע. הוא הוכיח שווריאציות מסוימות של בעיית התרמיל קשות לפתרון במקרה הממוצע לפחות כמו המקרה הגרוע של בעיות הסריג. עניין נוסף עלה בעקבות גילוי אלגוריתם LLL על ידי Lenstra, Lenstra ו-Lovasz ב-1982. למשל פתרון בעיית SVP (הווקטור הקצר ביותר) עד קירוב פולינומי. בהנחה שלא קיים אלגוריתם פולינומי יעיל לחישוב SVP עד פקטור של g = d c {\displaystyle g=d^{c}} כאשר d {\displaystyle d} הוא הממד של הסריג ו- c {\displaystyle c} הוא קבוע בלתי תלוי, אפשר לבנות על בסיסה פונקציה חד-כיוונית קריפטוגרפית דומה לתרמיל (knapsack) שכמעט תמיד בטוח קשה אם המפתח נבחר באקראי. הצפנת סריג היא היחידה שקיימת הוכחה לגביה שהיא בטוחה כמו המקרה הגרוע אך זאת רק מנקודת ראות תאורטית, בעוד שמעשית החיסרון העיקרי של מערכת כזו הוא מפתח ההצפנה העצום. בהשראת הרעיון של Ajtai פיתחו ב-1996 עודד גולדרייך, שי הלוי ושפי גולדווסר מערכת הצפנה מבוססת סריג (נקראת בקיצור GGH) עם יחס מקרה ממוצע/מקרה גרוע דומה, דהיינו פענוח אתגר אקראי נתון קשה לפחות כמקרה הגרוע של וריאציית SVP הנקראת uSVP (קיצור של unique SVP). הבעיה נעשית קלה ככל שפקטור הקירוב גדל, השאלה היא מהו הגורם g {\displaystyle g} הקטן ביותר כך שאפשר יהיה לבנות פונקציה קריפטוגרפית הנחשבת קשה לפתרון לפחות כמו מציאת קירוב g {\displaystyle g} לבעיית הסריג. Phong Nguyen פרסם והוכיח ב-1999 פגמים ב-GGH של גולדרייך, גולדווסר והלוי והציע דרכים לתיקון הבעיות שגילה. מסקנותיו הם שהאלגוריתם אינו יעיל מעשית. כדי שמערכת GGH תקרא בטוחה סדר גודל של מפתח ההצפנה צריך להיות ריבועי ביחס לפרמטר הביטחון d {\displaystyle d} , מעשית זה יכול להגיע לאלפי סיביות. בימינו הממצאים הטובים ביותר הם פונקציית גיבוב חסינת התנגשויות של Micciancio המבוססת על אי-קירוב בטווח g ≈ d 2.5 {\displaystyle g\approx d^{2.5}} וכן הצפנת רגב המבוססת על אי קירוב של בעיית uSVP בטווח g ≈ d 1.5 {\displaystyle g\approx d^{1.5}} . הבעיות שיש בהן עניין מנקודת ראות תאורטית הן בעיית הווקטור הקצר ביותר (בקיצור SVP) והכללה שלה שנקראת בעיית הווקטור הקרוב ביותר (CVP). מצד אחד הודות לאלגוריתם LLL ניתן לבצע קירוב יעיל בפתרון הבעיות האמורות עד כדי פקטור מעריכי מסדר גודל 2 n loglog 2 / log  n {\displaystyle 2^{n{\text{loglog}}^{2}/{\text{log }}n}} כאשר n {\displaystyle n} הוא ממד הסריג ועם אקראיות אפשר להגיע לסדר גודל של 2 n loglog n / log n {\displaystyle 2^{n{\text{loglog}}n/{\text{log}}n}} . מצד שני, עבור קבוע כלשהו c > 0 {\displaystyle c>0} ידוע שלא קיים אלגוריתם יעיל שיכול לבצע קירוב עד כדי 2 c / loglog n {\displaystyle 2^{c/{\text{loglog}}n}} אלא אם P=NP. הממצאים הללו אומתו אחר מחקרים שנעשו בתחום זה על ידי רבים. ב-1996 הציע Jeffrey Hoffstein אלגוריתם הצפנה אסימטרי פרקטי שנקרא NTRU שיכול להגיע עם מפתח הצפנה קטן (בסדר גודל של כמה מאות סיביות) על ידי שימוש במחלקה מיוחדת של סריגים שמאפשרת ייצוג קומפקטי. האלגוריתם מבוסס על חוג פולינומי שנקרא קונבולוציה R = Z [ X ] / ( X N − 1 ) {\displaystyle R=\mathbb {Z} [X]/(X^{N}-1)} הפונקציה היא חישוב כפל וחיבור בפולינומיים מודולו X N − 1 {\displaystyle X^{N}-1} . הקשר לסריג הוא הקונבולוציה המודולרית, אפשר לראות שקיים הומומורפיזם בין הפולינומים בחוג R ומטריצה מעגלית בגודל N × N {\displaystyle N\times N} עם מקדמים שלמים. הוכחת בטיחות האלגוריתם אינה לפי סיבוכיות המקרה הגרוע כמו במקרה של סריגים, ולמעשה קיימות מספר חולשות באלגוריתם שמאפשרות התקפת מוצפן-נבחר בגרסה המקורית. סריגים בתורת המספרים שנקראים גם "הגאומטריה של המספרים" (הרמן מינקובסקי), ניתנים להגדרה בכמה דרכים. בניסוח לא רשמי סריג הוא אוסף סדור של נקודות במרחב n {\displaystyle n} -ממדי. בניסוח אחר, קבוצת כל הקומבינציות הליניאריות השלמות של וקטורים בלתי תלויים ליניארית מעל R n {\displaystyle \mathbb {R} ^{n}} , כלומר אם b 1 , . . . , b d {\displaystyle b_{1},...,b_{d}} הם קבוצת וקטורים בלתי תלויים ליניארית אזי L = { ∑ i = 1 d n i b i | n i ∈ Z } {\displaystyle \textstyle L=\{\sum _{i=1}^{d}n_{i}b_{i}|n_{i}\in \mathbb {Z} \}} ייקרא סריג והווקטורים [ b 1 , . . . , b d ] {\displaystyle [b_{1},...,b_{d}]} נקראים בסיס הסריג. בניסוח פורמלי אם נתונים x , y ∈ R n {\displaystyle x,y\in \mathbb {R} ^{n}} , שני וקטורים ( x 1 , . . . , x n ) {\displaystyle (x_{1},...,x_{n})} ו- ( y 1 , . . . , y n ) {\displaystyle (y_{1},...,y_{n})} מעל המספרים הממשיים ויהי ⟨ x , y ⟩ {\displaystyle \left\langle x,y\right\rangle } מכפלה אוקלידית של x {\displaystyle x} עם y {\displaystyle y} כך שמתקיים ⟨ x , y ⟩ = ∑ i = 1 n x i y i {\displaystyle \textstyle \left\langle x,y\right\rangle =\sum _{i=1}^{n}x_{i}y_{i}} וכן יהי | | x | | {\displaystyle ||x||} הנורמה האוקלידית של x {\displaystyle x} כאשר | | x | | = ⟨ x , x ⟩ 1 / 2 {\displaystyle ||x||=\left\langle x,x\right\rangle ^{1/2}} . קבוצת הווקטורים { b 1 , . . . , b d } {\displaystyle \{b_{1},...,b_{d}\}} נקראת בלתי תלויה ליניארית מעל R {\displaystyle \mathbb {R} } אם ורק אם תמיד מתקיים μ 1 b 1 + ⋯ + μ d b d = 0 {\displaystyle \mu _{1}b_{1}+\cdots +\mu _{d}b_{d}=0} . סריג היא תת-קבוצה L ⊆ R n {\displaystyle L\subseteq \mathbb {R} ^{n}} כך שמתקיים x − y ∈ L {\displaystyle x-y\in L} כל עוד ( x , y ) ∈ L 2 {\displaystyle (x,y)\in L^{2}} וכן קיים מספר ממשי ρ > 0 {\displaystyle \rho >0} כך ש- x ∈ L {\displaystyle x\in L} ו- | | x | | ≤ ρ {\displaystyle ||x||\leq \rho } ו- x = 0 {\displaystyle x=0} . לפי הגדרות אלו Z n {\displaystyle \mathbb {Z} ^{n}} הוא סריג כש- ρ = 1 / 2 {\displaystyle \rho =1/2} . וכן כל תת-קבוצה של סריג היא סריג. בשל הדמיון למרחב הווקטורי תורת הסריגים מקבילה בכמה מובנים לאלגברה ליניארית. בסיס הסריג אינו ייחודי, כלומר עבור סריג L {\displaystyle L} מסדר ≥ 2 {\displaystyle \geq 2} ישנם אין סוף בסיסים עם ממד זהה. Shortest Vector Problem היא בעיית הסריג המפורסמת ביותר. בהינתן סריג L {\displaystyle {\mathcal {L}}} המיוצג על ידי בסיס B {\displaystyle B} , בעיית SVP היא למצוא את הווקטור הקצר ביותר ב- L {\displaystyle {\mathcal {L}}} שאינו אפס. הבעיה יכולה להיות ביחס לכל נורמה המסומנת ב- N {\displaystyle N} אך הנורמה האוקלידית הכי נפוצה. גרסה אחרת של הבעיה היא לחשב רק את אורכו המסומן ב- λ ( L ) {\displaystyle \lambda ({\mathcal {L}})} של הווקטור הקצר ביותר מבלי בהכרח למצוא את הווקטור עצמו הבעיה מסומנת על ידי SVP γ {\displaystyle {\text{SVP}}_{\gamma }} . כאשר γ = 2 n / 2 {\displaystyle \gamma =2^{n/2}} הבעיה ניתנת לפתרון בזמן פולינומי אולם כאשר γ = 1 {\displaystyle \gamma =1} האלגוריתם הטוב ביותר הידוע לפתרון בעיה זו הוא בסיבוכיות של 2 O ( n ) {\displaystyle 2^{O(n)}} . בעיית SVP נחקרה על ידי מתמטיקאים עשרות שנים בשל הקרבה שלה לבעיות שונות בתורת המספרים והיא משוערת כבעיית NP-קשה. המשפט הראשון של מינקובסקי הוא משפט מפתח בתורת הסריגים שאומר שאורכו המקסימלי של כל וקטור הקצר ביותר שאינו אפס בכל סריג מממד n {\displaystyle n} הוא γ n det ( L ) − 1 {\displaystyle \gamma _{n}{\text{det}}(L)^{-1}} כאשר γ n {\displaystyle \gamma _{n}} הוא קבוע אבסולוטי שתלוי רק בממד n {\displaystyle n} ו- det ( L ) {\displaystyle {\text{det}}(L)} הוא הדטרמיננטה של הסריג. הגבול העליון של מינקובסקי צמוד למדי אך ישנם סריגים שבהם קיים וקטור קצר הרבה יותר. מינקובסקי לא סיפק אלגוריתם שמוצא וקטור כזה. אלגוריתם שמוצא וקטור קצר ביותר בסריג דו-ממדי היה ידוע כבר לגאוס במאה ה-19 אולם למקרה הכללי לא היה פתרון (קירוב של פתרון) עד תחילת שנות השמונים של המאה הקודמת עם המצאת LLL. האלגוריתם LLL יכול לבצע קירוב עד פקטור של g = O ( ( 2 / 3 ) n ) {\displaystyle g=O((2/{\sqrt {3}})^{n})} כאשר n {\displaystyle n} הוא ממד הסריג. אלגוריתם אחר עם פקטור קירוב טוב יותר שהוא תת-מעריכי בזמן פולינומי הוא של שנור שנקרא Block Korkine-Zolotarev. לא קיים אלגוריתם פולינומי יעיל המחשב את אורך הווקטור הקצר ביותר בסריג (שלא לדבר על מציאת וקטור כזה) והיא משוערת כבעיה NP-קשה בטווח קירוב פחות מפקטור של 2 {\displaystyle {\sqrt {2}}} . בעיית ההכרעה של CVP הנקראת GapCVP היא כדלקמן: נתון סריג L ( B ) {\displaystyle {\mathcal {L}}(B)} עם בסיס B ∈ Z m × n {\displaystyle B\in Z^{m\times n}} וקטור t ∈ Z m {\displaystyle t\in Z^{m}} ו- r ∈ Q {\displaystyle r\in Q} הפלט צריך להיות 1 אם dist ( t , L ( B ) ) ≤ r {\displaystyle {\text{dist}}(t,{\mathcal {L}}(B))\leq r} או 0 אם dist ( t , L ( B ) ) > r {\displaystyle {\text{dist}}(t,{\mathcal {L}}(B))>r} . בעיית ההכרעה CVP γ {\displaystyle {\text{CVP}}_{\gamma }} היא בהינתן סריג דומה להחזיר 1 אם dist ( t , L ( B ) ) ≤ r {\displaystyle {\text{dist}}(t,{\mathcal {L}}(B))\leq r} או 0 אם dist ( t , L ( B ) ) > γ ⋅ r {\displaystyle {\text{dist}}(t,{\mathcal {L}}(B))>\gamma \cdot r} . בעיית GapCVP היא NP-שלמה ברדוקציה מבעיית התרמיל. GGH NTRU הצפנת תרמיל M. Ajtai and C. Dwork. A public-key cryptosystem with worst-case/average-case equivalence. In Proc. 29th ACM Symp. on Theory of Computing (STOC), pages 284-293. ACM, 1997. Ajtai, Mikls (1996). "Generating Hard Instances of Lattice Problems". Proceedings of the Twenty-Eighth Annual ACM Symposium on Theory of Computing. pp. 99–108 Oded Goldreich, Shafi Goldwasser, and Shai Halevi. Public-key cryptosystems from lattice reduction problems. In CRYPTO ’97: Proceedings of the 17th Annual International Cryptology Conference on Advances in Cryptology, pages 112–131, London, UK, 1997. Springer-Verlag. Phong Q. Nguyen. Cryptanalysis of the Goldreich–Goldwasser–Halevi Cryptosystem from Crypto ’97. In CRYPTO ’99: Proceedings of the 19th Annual International Cryptology Conference on Advances in Cryptology, pages 288–304, London, UK, 1999. Springer-Verlag.