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

**הצפנה מבוססת סריג** (באנגלית: **Lattice Based Cryptography**) כוללת פונקציות קריפטוגרפיות (עם ביטחון מוכח) וקריפטואנליזה של פונקציות קריפטוגרפיות המבוססות על מבנה מתמטי שנקרא סריג. הצפנת מפתח ציבורי מבוססת סריג נשענת על הקושי שבפתרון בעיית הסריג. קריפטואנליזה של פונקציות אילו מבוססת על טכניקות רדוקציית סריג.

הצפנת סריג עדיין בראשית דרכה ונעשית אטרקטיבית לאחרונה בשל החיפוש אחר מערכות הצפנה עמידות כנגד קריפטואנליזה פוסט-קוונטית, כאשר מחשבים קוונטיים יהיו מעשיים. ב-1996 גילה Ajtai תכונה חשובה של סריגים שמעניינת מהיבט קריפטוגרפי. מאז נעשים מאמצים לפתח מערכות הצפנה מבוססות סריג שתהיינה גם בטוחות לפי המבנה המקורי שהוצע וגם שתהיינה יעילות מבחינה מעשית כמו ממצאיו של Micciancio שחסרונן העיקרי שהן חסרות דלת מלכודת ולא ניתן להשתמש בהן עם מפתח הצפנה (הן שימושיות כפונקציה חד-כיוונית חסרת מפתח). ממצאים אחרים שיכולים להוביל לפיתוח מעשי של סכימות בטוחות מבוססות סריג הן של Micciancio ו-Vadhan שבהן אפשר לשתף סריג אחד על ידי משתמשים רבים והמפתח הציבורי של כל אחד יהיה מוכב מווקטור יחיד (המפתח הפרטי הוא הנקודה בסריג הקרובה ביותר לווקטור הציבורי) וכן הצפנת רגב.

## היסטוריה ורקע
שמאל|ממוזער|260px|דוגמה לסריג מעל <math>\mathbb{R}^2</math> ושני בסיסים, האדומים נקראים בסיסים "רעים" ואילו הכחולים נקראים בסיסים "טובים".
סריגים נחקרו על ידי מתמטיקאים במשך עשורים והם שימושיים במספר סוגיות כמו תכנון ליניארי ופירוק לגורמים. העניין בסריגים עלה בשל מאפיין שימושי במיוחד לתחום הקריפטוגרפיה שהתגלה על ידי Ajtai ב-1996 קרי רדוקציה מהמקרה הגרוע למקרה הממוצע. הוא הוכיח שווריאציות מסוימות של בעיית התרמיל קשות לפתרון במקרה הממוצע לפחות כמו המקרה הגרוע של בעיות הסריג. עניין נוסף עלה בעקבות גילוי אלגוריתם LLL על ידי Lenstra, Lenstra ו-Lovasz ב-1982.

למשל פתרון בעיית SVP (הווקטור הקצר ביותר) עד קירוב פולינומי. בהנחה שלא קיים אלגוריתם פולינומי יעיל לחישוב SVP עד פקטור של g=d^c כאשר d הוא הממד של הסריג ו-c הוא קבוע בלתי תלוי, אפשר לבנות על בסיסה פונקציה חד-כיוונית קריפטוגרפית דומה לתרמיל (knapsack) שכמעט תמיד בטוח קשה אם המפתח נבחר באקראי. הצפנת סריג היא היחידה שקיימת הוכחה לגביה שהיא בטוחה כמו המקרה הגרוע אך זאת רק מנקודת ראות תאורטית, בעוד שמעשית החיסרון העיקרי של מערכת כזו הוא מפתח ההצפנה העצום.

בהשראת הרעיון של Ajtai פיתחו ב-1996 עודד גולדרייך, שי הלוי ושפי גולדווסר מערכת הצפנה מבוססת סריג (נקראת בקיצור GGH) עם יחס מקרה ממוצע/מקרה גרוע דומה, דהיינו פענוח אתגר אקראי נתון קשה לפחות כמקרה הגרוע של וריאציית SVP הנקראת uSVP (קיצור של unique SVP). הבעיה נעשית קלה ככל שפקטור הקירוב גדל, השאלה היא מהו הגורם g הקטן ביותר כך שאפשר יהיה לבנות פונקציה קריפטוגרפית הנחשבת קשה לפתרון לפחות כמו מציאת קירוב g לבעיית הסריג. Phong Nguyen פרסם והוכיח ב-1999 פגמים ב-GGH של גולדרייך, גולדווסר והלוי והציע דרכים לתיקון הבעיות שגילה. מסקנותיו הם שהאלגוריתם אינו יעיל מעשית. כדי שמערכת GGH תקרא בטוחה סדר גודל של מפתח ההצפנה צריך להיות ריבועי ביחס לפרמטר הביטחון d, מעשית זה יכול להגיע לאלפי סיביות. בימינו הממצאים הטובים ביותר הם פונקציית גיבוב חסינת התנגשויות של Micciancio המבוססת על אי-קירוב בטווח g\approx d^{2.5} וכן הצפנת רגב המבוססת על אי קירוב של בעיית uSVP בטווח g\approx d^{1.5}.

הבעיות שיש בהן עניין מנקודת ראות תאורטית הן בעיית הווקטור הקצר ביותר (בקיצור SVP) והכללה שלה שנקראת בעיית הווקטור הקרוב ביותר (CVP). מצד אחד הודות לאלגוריתם LLL ניתן לבצע קירוב יעיל בפתרון הבעיות האמורות עד כדי פקטור מעריכי מסדר גודל 2^{n\text{loglog}^2/\text{log }n} כאשר n הוא ממד הסריג ועם אקראיות אפשר להגיע לסדר גודל של 2^{n\text{loglog}n/\text{log}n}. מצד שני, עבור קבוע כלשהו c>0 ידוע שלא קיים אלגוריתם יעיל שיכול לבצע קירוב עד כדי 2^{c/\text{loglog}n} אלא אם P=NP. הממצאים הללו אומתו אחר מחקרים שנעשו בתחום זה על ידי רבים.

ב-1996 הציע Jeffrey Hoffstein אלגוריתם הצפנה אסימטרי פרקטי שנקרא NTRU שיכול להגיע עם מפתח הצפנה קטן (בסדר גודל של כמה מאות סיביות) על ידי שימוש במחלקה מיוחדת של סריגים שמאפשרת ייצוג קומפקטי. האלגוריתם מבוסס על חוג פולינומי שנקרא קונבולוציה R=\mathbb{Z}[X]/(X^N-1) הפונקציה היא חישוב כפל וחיבור בפולינומיים מודולו X^N-1. הקשר לסריג הוא הקונבולוציה המודולרית, אפשר לראות שקיים הומומורפיזם בין הפולינומים בחוג R ומטריצה מעגלית בגודל N\times N עם מקדמים שלמים. הוכחת בטיחות האלגוריתם אינה לפי סיבוכיות המקרה הגרוע כמו במקרה של סריגים, ולמעשה קיימות מספר חולשות באלגוריתם שמאפשרות התקפת מוצפן-נבחר בגרסה המקורית.

## סריג
סריגים בתורת המספרים שנקראים גם "הגאומטריה של המספרים" (הרמן מינקובסקי), ניתנים להגדרה בכמה דרכים. בניסוח לא רשמי סריג הוא אוסף סדור של נקודות במרחב n-ממדי. בניסוח אחר, קבוצת כל הקומבינציות הליניאריות השלמות של וקטורים בלתי תלויים ליניארית מעל \mathbb{R}^n, כלומר אם b_1,...,b_d הם קבוצת וקטורים בלתי תלויים ליניארית אזי \textstyle L=\{\sum_{i=1}^d n_i b_i | n_i\in \mathbb{Z}\} ייקרא *סריג* והווקטורים [b_1,...,b_d] נקראים *בסיס* הסריג.

בניסוח פורמלי אם נתונים x,y\in \mathbb{R}^n, שני וקטורים (x_1,...,x_n) ו-(y_1,...,y_n) מעל המספרים הממשיים ויהי  \left\langle x,y\right\rangle מכפלה אוקלידית של x עם y כך שמתקיים \textstyle \left\langle x,y\right\rangle =\sum_{i=1}^n x_iy_i וכן יהי ||x|| הנורמה האוקלידית של x כאשר ||x||=\left\langle x,x\right\rangle^{1/2}. קבוצת הווקטורים \{b_1,...,b_d\} נקראת בלתי תלויה ליניארית מעל \mathbb{R} אם ורק אם תמיד מתקיים \mu_1 b_1+\cdots +\mu_d b_d=0. סריג היא תת-קבוצה L\subseteq \mathbb{R}^n כך שמתקיים x-y\in L כל עוד (x,y)\in L^2 וכן קיים מספר ממשי \rho>0 כך ש-x\in L ו-||x||\le\rho ו-x=0. לפי הגדרות אלו \mathbb{Z}^n הוא סריג כש-\rho=1/2. וכן כל תת-קבוצה של סריג היא סריג. בשל הדמיון למרחב הווקטורי תורת הסריגים מקבילה בכמה מובנים לאלגברה ליניארית. בסיס הסריג אינו ייחודי, כלומר עבור סריג L מסדר \ge 2 ישנם אין סוף בסיסים עם ממד זהה.

### בעיית הווקטור הקצר ביותר
Shortest Vector Problem היא בעיית הסריג המפורסמת ביותר. בהינתן סריג \mathcal{L} המיוצג על ידי בסיס B, בעיית SVP היא למצוא את הווקטור הקצר ביותר ב-\mathcal{L} שאינו אפס. הבעיה יכולה להיות ביחס לכל נורמה המסומנת ב-N אך הנורמה האוקלידית הכי נפוצה. גרסה אחרת של הבעיה היא לחשב רק את אורכו המסומן ב-\lambda(\mathcal{L}) של הווקטור הקצר ביותר מבלי בהכרח למצוא את הווקטור עצמו הבעיה מסומנת על ידי \text{SVP}_\gamma. כאשר \gamma=2^{n/2} הבעיה ניתנת לפתרון בזמן פולינומי אולם כאשר \gamma=1 האלגוריתם הטוב ביותר הידוע לפתרון בעיה זו הוא בסיבוכיות של 2^{O(n)}. 

בעיית SVP נחקרה על ידי מתמטיקאים עשרות שנים בשל הקרבה שלה לבעיות שונות בתורת המספרים והיא משוערת כבעיית NP-קשה. המשפט הראשון של מינקובסקי הוא משפט מפתח בתורת הסריגים שאומר שאורכו המקסימלי של כל וקטור הקצר ביותר שאינו אפס בכל סריג מממד n הוא \gamma_n \text{det}(L)^{-1} כאשר \gamma_n הוא קבוע אבסולוטי שתלוי רק בממד n ו-\text{det}(L) הוא הדטרמיננטה של הסריג. הגבול העליון של מינקובסקי צמוד למדי אך ישנם סריגים שבהם קיים וקטור קצר הרבה יותר. מינקובסקי לא סיפק אלגוריתם שמוצא וקטור כזה. אלגוריתם שמוצא וקטור קצר ביותר בסריג דו-ממדי היה ידוע כבר לגאוס במאה ה-19 אולם למקרה הכללי לא היה פתרון (קירוב של פתרון) עד תחילת שנות השמונים של המאה הקודמת עם המצאת LLL. האלגוריתם LLL יכול לבצע קירוב עד פקטור של g=O((2/\sqrt{3})^n) כאשר n הוא ממד הסריג. אלגוריתם אחר עם פקטור קירוב טוב יותר שהוא תת-מעריכי בזמן פולינומי הוא של שנור שנקרא Block Korkine-Zolotarev. לא קיים אלגוריתם פולינומי יעיל המחשב את אורך הווקטור הקצר ביותר בסריג (שלא לדבר על מציאת וקטור כזה) והיא משוערת כבעיה NP-קשה בטווח קירוב פחות מפקטור של \sqrt{2}.

### בעיית GapCVP
בעיית ההכרעה של CVP הנקראת GapCVP היא כדלקמן: נתון סריג \mathcal{L}(B) עם בסיס B\in Z^{m\times n} וקטור t\in Z^m ו-r\in Q הפלט צריך להיות 1 אם \text{dist}(t,\mathcal{L}(B))\le r או 0 אם \text{dist}(t,\mathcal{L}(B))>r.

בעיית ההכרעה \text{CVP}_\gamma היא בהינתן סריג דומה להחזיר 1 אם \text{dist}(t,\mathcal{L}(B))\le r או 0 אם \text{dist}(t,\mathcal{L}(B))>\gamma\cdot r.

בעיית GapCVP היא NP-שלמה ברדוקציה מבעיית התרמיל.

## ראו גם
* GGH
* NTRU
* הצפנת תרמיל

## הערות שוליים

קטגוריה:הצפנה