דוגמה לאלגוריתם אסימטרי: RSA. ישנם אלגוריתמים א-סימטריים שונים. אחד הידועים שבהם הוא RSA (בשל מפתחיו). אלגוריתם זה נמצא בשימוש נרחב בדפדפנים, לאתרים מאובטחים ולהצפנת מיילים. זה בתוך ה תחום ציבורי

דוגמא לאלגוריתם אסימטרי: RSA להצפנה

כדי להצפין הודעה אנו עושים: c = m ^ e mod n

לפענוח זה: m = c^d mod nm = טקסט רגיל

c = הודעה מוצפנת

(ב) = מפתח ציבורי

(ד, n) = מפתח פרטי

לא = הוא תוצר של שני מספרים ראשוניים

^ = הוא פעולת המארח (a ^ b: הכוח b)

mod = הוא פעולת המודולו (שארית חלוקת מספרים שלמים)

צור זוג מפתח

זה פשוט מאוד, אך היזהר בבחירתך y, d y לא. ודע כי החישוב של שלושת המספרים הללו עדין.

כך תוכלו לעשות זאת:

1. אספו שני מספרים ראשוניים p y כי (גודל שווה בערך). חשב n = מדוע.

2. אסוף מספר y אין לזה שום גורם במשותף (p-1) (q-1).

3. חשב d כמו ed mod (p-1) (q-1) = 1.

הזוג (ב) זה המפתח הציבורי. (ד, n) זה המפתח הפרטי.

לדוגמה:

ראשית, בואו ניצור את צמד המפתחות שלנו:

הרם שני מספרים ראשוניים באקראי: p = 29, ש = 37

חישוב n = pq = 29 * 37 = 1073

y יש לבחור באקראי כך y אין גורמים במשותף (p-1) (q-1):

(p-1) (q-1) = (29-1) (37-1) = 1008

להרים e = 71

לבחור d כמו 71 * mod 1008 = 1

בואו נמצא d = 1079

עכשיו יש לנו את המפתחות שלנו:

  • המפתח הציבורי הוא (ה, נ) = (71.1073) (= מפתח הצפנה)
  • המפתח הפרטי הוא (ד, n) = (1079.1073) (= מפתח פענוח)

בואו להצפין את ההודעה «שלום". בואו נקבל את קוד ASCII של כל אות ואנחנו מניחים אותם אחד ליד השני:

m = 7269767679

אז עלינו לחתוך את ההודעה לבלוקים המכילים פחות ספרות מ לא. לא יש לו 4 ספרות, אז חותכים את ההודעה שלנו לשלוש בלוקים בספרות:

726 976 767 900

(להשלים עם אפסים)

לאחר מכן אנו מצפין כל בלוק:

726^71 mod 1073 = 436

976^71 mod 1073 = 822

767^71 mod 1073 = 825

900^71 mod 1073 = 552

ההודעה המוצפנת היא 436 822 825 552. ניתן לפענח בעזרת גרא> ד:

436^1079 mod 1073 = 726

822^1079 mod 1073 = 976

825^1079 mod 1073 = 767

552^1079 mod 1073 = 900

כלומר, רצף המספרים. 726976767900.

מצאנו את ההודעה שלנו בטקסט רגיל 72 69 76 76 79: «הלו».

בפועל

בפועל, זה לא כל כך קל לתכנת:

  • עליך למצוא מספרים ראשוניים גדולים (יתכן וארוך זמן רב מכדי לחשב)
  • אתה צריך להשיג מספרים ראשוניים p y כי אקראי (וזה לא קל).
  • אינך משתמש בלוקים קטנים כמו בדוגמה שלמעלה - אתה אמור להיות מסוגל לחשב כוחות ומודולים עם מספרים גדולים מאוד.

למעשה, אלגוריתמים א-סימטריים אף פעם לא משמשים להצפנת כל הנתונים מכיוון שלוקח זמן רב מדי לחשב: הנתונים מוצפנים בעזרת אלגוריתם סימטרי שהמפתח שלו נבחר באופן אקראי, ומפתח זה הוא מפוענח באמצעות אלגוריתם אסימטרי כמו RSA.

תוכנה להצפנת קבצים

אם אתה רוצה להצפין את הקבצים שלך, אני ממליץ על התוכנה המצוינת PGP (פרטיות די טובה) או GPG (משמר הפרטיות של GNU).

ישנם אלגוריתמים א-סימטריים אחרים, כולל ECC (מערכות קריפטו-עקומה אליפטיות, על ידי עקומה אליפטית). מערכת זו מבוססת על עקומה פרמטרית העוברת מספר מסוים של נקודות קואורדינטות שלמות. הוא עדיין לא מפותח, אך הוא מבטיח.

יש גם את דיפי-למן , מועדף יותר ויותר מאשר RSA. (דיפי-הלמן אומצה במהירות על ידי קהילת הקוד הפתוח כאשר RSA עדיין לא הייתה ברשות הרבים.)