210 likes | 433 Views
TWINKLE. מימוש פירוק לגורמים בשיטת הניפוי הריבועי. גדי וישנה בהנחיית ד"ר ולדימיר מיקולינסקי. נושאי המצגת. מטרת ההרצאה: TWINKLE RSA + פירוק פירוק מספר לגורמים שיטת פרמה + מימוש להמר שיטת פומרנץ + מימוש שמיר. רקע מתמטי ל- RSA. משפט פרמה:
E N D
TWINKLE מימוש פירוק לגורמיםבשיטת הניפוי הריבועי גדי וישנה בהנחיית ד"ר ולדימיר מיקולינסקי
נושאי המצגת מטרת ההרצאה: TWINKLE • RSA + פירוק • פירוק מספר לגורמים • שיטת פרמה + מימוש להמר • שיטת פומרנץ + מימוש שמיר
רקע מתמטי ל-RSA • משפט פרמה: • עבור p ראשוני, לכל x זר ל-p: xp-1=1 (mod p) • פונקצית אוילר (Euler totient): • (n) – מספר המספרים החיובים הזרים ל-n. • p,q ראשוניים; n=p·q; (n)=(q-1)(p-1) • משפט אויילר (משפט פרמה מורחב) • x(n)=1 (mod n) • עבור e זר ל- (n): • xxe (mod n) חח"ע • קיים d כך ש- ed = 1(mod (n)) • xe·d=x1+C·(n)=x (mod n)
RSA - האלגוריתם • בניית מפתח ציבורי • הגרלת מספרים ראשוניים p,q • נמצא e זר ל- (n) • המפתח הציבורי הוא המכפלה n=p·q ו-e • חישוב המפתח הפרטי • קיים d כך ש- e·d = 1(mod (n)) • אלגוריתם אוקלידסהמורחב d • המפתח הפרטי הוא d
RSA – צורת שימוש מידע מקורי: (x1,x2,x3,…,xm) מפתח ציבורי: n,e מידע מוצפן: (x1e, x2e,x3e ,…,xme)(mod n) מפתח פרטי: d מידע מפוענח: (x1ed, x2ed,x3ed ,…,xmed)(mod n) = (x1, x2,x3,…,xm) מידע נוסף "Cryptography: A Primer" by Alan G. Konheim - Chapter 8
כיוון ההתקפה על RSA • צריך למצוא: מפתח פרטי - d • ידוע: מפתח ציבורי - e ו-n • חסר (n) • נמצא p ו-q כך ש- p·q=n
שיטת פרמה • נמצא x>n כך ש- x2-n הוא מספר ריבועי • בהתאמה (x=a+n ): f(a) = (a+ n)2 – n g(a) = (a+ n)2 • ננסה a=0,1,2,… עד שנמצא a כזה שעבורו f(a) הוא מספר ריבועי. • נחשב y=f(a), x=g(a)ומתקיים: n=x2-y2=(x+y)·(x-y)=p·q
שרשראות האופניים של להמר - Lehmer המכונה של להמר נבנתה ב-1926 ובעזרתה ניתן היה לבדוק 60 מספרים בשניה
שרשראות האופניים של להמר - Lehmer • לפי שיטת פרמה צריך למצוא f(a) ריבועי. • אורכה של כל שרשרת הוא ראשוני. • כל חוליה בשרשרת מסומנת האם זו שארית ריבועית עבור a מעל אורך השרשרת. • בערך מחצית מכל שרשרת מסומנת. • כשכל השרשראות מעידות על שארית ריבועית, מנסים להוציא שורש ל-f(a).
הסיבוכיות של שיטת פרמה המימוש של להמר הוא ניצול יפה של חומרה ייחודית אבל אין שינוי אסימפטוטי בביצוע יש רק n מספרים ריבועיים קטנים מ-n, לכן עבור n כללי נצפה למצוא את המספר הריבועי המתאים תוך n פעולות. זה גרוע כמו לנסות לחלק בכל הראשוניים.
הניפוי הריבועי - עקרונות • x²y²(mod n)(x+y)(x-y)0(mod n) • נחשב GCD(x-y,n) ובהסתברות של חצי נקבל מחלק של n שאינו טריוויאלי. • נגדיר: Q(x)=(x+n)-n=x̃²-n • נמצא קבוצת x-ים כזאת שמכפלת ה-Q(x) תהיה מספר ריבועי וממילא ה-x̃-ים ריבועיים. וכך נקבל x ו-y מתאימים.
בסיס הגורמים וטווח הניפוי • B={p1…pk} בסיס הגורמים (ראשוניים).B ישמש לבחירת Q(x)-ים פריקים בצורה נוחה לנו. • טווח הניפוי - קבוצת ה-x-ים שעבורם נחפש Q(x) מתאים. • טווח הניפוי הוא תיאורתי ומשמש לחישובי סיבוכיות.
שלב הניפוי • נחפש x-ים כך ש-Q(x) חלק מעל B • כיווני הסריקה • לכל x, נחלק את Q(x) בכל הראשוניים מתוך B • לכל ראשוני מתוך B, נמצא את ה-Q(x)-ים שמתחלקים בואם p|Q(x) אז גם p|Q(x+p) • חלוקה בין מחשבים רבים, לצורך מציאת קבוצה גדולה של Q(x)-ים מתאימים.
שלב המטריצה • כל Q(x) חלק מעל B, ניתן לייצוג ע"י וקטור חזקות: Q(x)=p1v1p2v2…pkvk=(v1,v2,…,vk) • נציב את ה-Q(x)-ים המתאימים במטריצה • כמה אנחנו צריכים? לפחות |B| • פתרון המטריצה ע"יהחילוץ הגאוסיאני – The Gaussian elimination
הניפוי הריבועי - סיבוכיות • בסיס ראשוניים בגודל n • כל Q(x) חלק מעל B, אבל המטריצה ענקית. • בסיס ראשוניים קטן מאד • מטריצה קטנה, אבל קשה למצוא Q(x) חלק מעל B. • האיבר הגדול ב-B קרוב ל-e½·(log n)½·(log log n)½ • סדר הגודל )של שלב הניפוי(: O(e2·(log n)½·(log log n)½) • NFS: O(ec·(log n)¹/³·(log log n)²/³); (2c1½)
TWINKLE • שלב הניפוי כבד מאוד ומוגבל ע"י מהירות המחשבים. • פרופ' עדי שמיר ממליץ להחליף מחשבים ב-LED-יםהם זולים יותר ומהירים יותר. • ה-TWINKLE • מכשיר אופטי • גליל שחור אטום • בצד אחד דיודות, בצד שני מד-אור. • מד-אור מעביר פולסים שמעידים על Q(x) חלק מעל B
TWINKLE – פעולת הניפוי • שעון – 10GHz • נוריות מהבהבות במחזוריות קבועה(היסט מחושב מראש) • מד-אור מזהה עוצמה ידועה מראש (log(Q(x))) • מד-אור מאותת ל-PC • ה-PC מציב במטריצה
TWINKLE מול PC • PC מהיר במיוחד, גישה לזכרון ב-1GHz. • סריקה של 10,000,000,000 מספרים באורך n ביטים = n·1.25GB • סה"כ n·1.25 שניות לסריקה בלבד. • TWINKLE מנפה מתוך 10,000,000,000 מספרים, את המספרים החלקים מעל B בשניה אחת. • 1:1250 לטובת TWINKLE, בפירוק 1000 ביט.
סיכום • פירוק מספר לגורמים זו עדיין בעיה קשה • מצפינים מובילים בקרב • RSA-160(530bits) נפרץ ב-2003, ע"י חלוקת שלב הניפוי בין מחשבי PC בכל העולם. • מסקנה חשובה היא שאין לזלזל ביכולות של מכונות חישוב ייעודיות, גם אם ברשותנו מחשבים חזקים מאוד.