מבוא מלמעלה למטה ל- SSH וכיצד הוא מאפשר שיתוף נתונים מאובטח

מאמר זה נוקט גישה ברמה גבוהה ומלמעלה למטה כדי להסביר כיצד פועלת SSH וכיצד משתמשים בה לצורך תקשורת מאובטחת עם מחשבים מרוחקים.

נבדוק כיצד הפעלת SSH למעשה 'מאובטחת' וכיצד מחשבים מקימים ומגדירים הפעלת SSH מלכתחילה. אנו נבחן גם את היתרונות של שימוש ב- SSH.

הערה: זה נועד כהערות עתידיות לעצמי, אבל אני מקווה שתלמדו גם ממנו משהו!

מה זה SSH?

SSH הוא קיצור של 'מעטפת מאובטחת'. זהו פרוטוקול לשיתוף נתונים בין שני מחשבים דרך האינטרנט.

פרוטוקול הוא למעשה מערכת חוקים המגדירה את השפה בה מחשבים יכולים להשתמש כדי לתקשר.

בדרך כלל, שני המחשבים המעורבים הם המחשב שלך ('הלקוח') ושרת מרוחק ('המארח').

למה אכפת לנו?

תקשורת מאובטחת בין מחשבים

בכל פעם ששני מחשבים מתקשרים דרך האינטרנט אנו רוצים להיות בטוחים כי לא ניתן ליירט ולהבין את ההודעות על ידי מי שמאזין להודעות.

דמיין שאתה שולח את פרטי הבנק שלך דרך האינטרנט כדי לקנות משהו באינטרנט. אם ההודעות שלך לא הוצפנו, כל מחשב שהאזין או כל מחשב שקיבל את ההודעות כדי להעביר הלאה יוכלו לראות את מספר החשבון שלך והסיסמה שלך. זה לא טוב!

אני מאמין שזה מושג חשוב להבין לכל מי ששואף לעבוד עם טכנולוגיות רשת.

גישה מאובטחת למחשבים מרוחקים

שימוש ב- SSH לבדיקת אימות הוא דרך מאובטחת יותר לאימות מאשר באמצעות סיסמה. נחקור כיצד זה עובד בהמשך.

כיצד מאובטח SSH?

SSH היא דרך מאובטחת לשליחת תקשורת בין שני מחשבים.

כשאני מאובטח, אני מתכוון לדרך לקודד את ההודעות במחשב לקוח כך שהמחשב האחר היחיד שיכול לפענח את ההודעות ולהבין אותן הוא המארח. קידוד / פענוח זה נקרא הצפנה, אז מה שאנחנו באמת מתכוונים כאן הוא SSH מאובטח מכיוון שהוא משתמש בערוץ תקשורת מוצפן.

כיצד מתבססת הפעלת SSH?

ישנם מספר תהליכים שצריכים להתרחש בין שני מחשבים על מנת שתתחיל הפעלת SSH.

  1. ראשית אנו זקוקים לדרך להגדיר שיטה מאובטחת להחלפת הודעות בין המחשבים. עלינו להקים ערוץ מוצפן.
  2. אנו זקוקים לדרך לבדוק שלא טופלו בנתונים שהתקבלו על ידי המארח. זה נקרא אימות וכאן אנו מאמתים את תקינות הנתונים שנשלחים על ידי הלקוח.
  3. אימות (שוב). אנו זקוקים לדרך לבדוק שהמחשב שאיתו אנו מתקשרים אינו מתחזה. זוהי צורת אימות נוספת אך כאן אנו מאמתים את זהות המחשב.

לאחר שלושת השלבים הללו, אנו יכולים כעת לתקשר בצורה מאובטחת עם מחשב מרוחק.

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

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

הגדרת ערוץ מוצפן

חלק מרכזי בפרוטוקול SSH הוא שהוא מאובטח (הוא נמצא אפילו בשם!), כלומר כל המידע שנשלח באמצעות SSH מוצפן.

כיצד מוצפן מידע זה?

הצפנה בעצם פירושה רק 'לערבב את האותיות' באמצעות מתמטיקה חכמה. לשני המחשבים צריך להיותדרך להצפין את המידע כך שרק המחשב השני יוכל לפענח את המידע ולהבין אותו.

איך זה עובד?

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

שימוש בגישה זו של מפתח סימטרי נקרא הצפנה סימטרית. החלק 'סימטרי' נובע מכך שהמפתח הסימטרי בכל מחשב זהה. גישה זו עובדת ממש טוב ... אבל היא פועלת רק כל עוד אין למחשבים אחרים גישה למפתח הסימטרי.

בעיה

כיצד שני המחשבים יודעים מהו המפתח הסימטרי?

מחשב אחד יכול ליצור אותו ולשלוח אותו בהודעה דרך האינטרנט. אבל ההודעות עדיין לא היו מוצפנות, כך שלמי שיירטט את ההודעות יהיה באופן מיידי המפתח הסימטרי ... ויכול לפענח את כל התקשורת העתידית. זה רע!

זה נקרא לפעמים בעיית 'החלפת המפתחות'. ברור שעלינו להוסיף שלב נוסף בתהליך לפני שנוכל להשתמש במקשים סימטריים.

פתרון

פתרון לבעיית 'החלפת המפתחות' לעיל הוא ששני המחשבים חולקים מידע ציבורי זה עם זה (זה 'ציבורי' כלומר לא אכפת להם אם מישהו יירט אותו) וישלבו את זה עם מידע כלשהו במחשב שלהם כדי ליצור באופן עצמאי מקשים סימטריים זהים .

לאחר מכן ניתן להשתמש במפתחות סימטריים אלה בהצפנה סימטרית באופן שתואר לעיל.

איך זה עובד

לשני המחשבים יש מפתח פרטי פרטי ומפתח ציבורי משלהם. יחד הם יוצרים צמד מפתחות . המחשבים חולקים זה את זה את המפתחות הציבוריים שלהם דרך האינטרנט. לכן, בשלב זה של התהליך כל מחשב יודע

  • מפתח פרטי משלה,
  • מפתח ציבורי משלה,
  • והמפתח הציבורי של המחשב השני.

יצירת מפתחות סימטריים

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

כל מחשב משתמש באלגוריתם מתמטי המשתמש בשלושת התשומות שהוזכרו לעיל. אלגוריתם זה הוא חלק מאלגוריתם החלפת המפתח Diffie-Hellman. האלגוריתם שיבוצע בכל מחשב הוא בערך כך:

Hostpub_2 = other computer's public keypub_1 = my public keypri_1 = my private key
f(pub_2, pub_1, pri_1) = abcdefg // Symmetric Key
Client:f(pub_1, pub_2, pri_2) = abcdefg // Symmetric Key

הדבר החשוב לקחת כאן הוא שהמחשבים שיתפו רק מידע ציבורי באינטרנט אך עדיין הצליחו ליצור מפתחות סימטריים!

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

עד כה: ראינו כיצד להשתמש בהצפנה אסימטרית כדי ליצור באופן עצמאי מפתחות סימטריים זהים בשני המחשבים באופן מאובטח (פתרון בעיית החלפת המפתחות) ואז להחליף מידע מאובטח בין מחשבים באמצעות מפתחות סימטריים להצפנה ופענוח.

אימות

כדי שנוכל לתקשר בצורה מאובטחת. אבל החלק הבא של תהליך הקמת מושב SSH הוא לוודא שנתון לא התעסקו כפי שהיא הועברה ו שהמחשב השני הוא למעשה מי זה אומר שזה.

למה אנחנו צריכים את זה?

מחשב אחר יכול להתחזות לאחד המחשבים וליזום את החלפת המפתחות לעיל. אז איך נוכל להבין בבטחה שההודעה היא למעשה מהמחשב השני ולא מהמתחזה?

גיבוב

עלינו להשתמש בפונקציית חשיש . זו רק פונקציה מתמטית שלוקחת תשומות ומייצרת מחרוזת בגודל קבוע.

המאפיין החשוב של פונקציה זו הוא שלמעשה אי אפשר להבין מה היו התשומות שרק השתמשו ביציאות.

לאחר שלקוח ומארח יצרו את המפתחות הסימטריים שלהם, הלקוח ישתמש בפונקציית hashing ליצירת HMAC. זה פשוט מייצג "קוד אימות הודעות מבוסס hash". זו רק מחרוזת נוספת של תווים / מספרים. הלקוח ישלח את ה- HMAC הזה לשרת לצורך אימות.

המרכיבים לתפקוד החשיש הם

  • המפתח הסימטרי על הלקוח
  • מספר רצף החבילה (כל הודעה שנשלחת כלולה ב'חבילה 'של מידע)
  • תוכן ההודעה (מוצפן !!!)

דוגמה עם נתונים מזויפים:

symm_key = abcdefgpkge_no = 13encr_message = encrypted_password
Hash(symm_key, pkge_no, encr_message) = *HMAC* // Hashed value

כיצד המארח משתמש במידע זה?

כאשר המארח מקבל את ה- HMAC, הוא יכול להשתמש באותה פונקציית חשיש עם שלושת המרכיבים הבאים:

  • עותק משלו למפתח הסימטרי (זהה!),
  • מספר רצף החבילה,
  • וההודעה המוצפנת.

אם ערך הגיבוב שהוא מחשב זהה ל- HMAC שקיבל מהלקוח, אז אימתנו שהמחשב המחבר זהה למחשב שיש לו את המפתח הסימטרי.

זכרו שרק המארח והלקוח יודעים מהו המפתח הסימטרי ואין מחשבים אחרים שעושים זאת!

אז כאן זה לא משנה שהמארח לא יודע את התוכן המפוענח של ההודעה המוצפנת - המארח עדיין אימת את זהות המחשב המחבר!

היופי בגישה זו הוא שלא רק אימתנו את זהות הלקוח וידאנו שלא טופלו בנתונים, אלא עשינו זאת בצורה מאובטחת ( מבלי לשתף מידע פרטי) .

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

אימות

החלק האחרון בתקשורת מאובטחת עם מחשבים מרוחקים הוא:

גם אם יצרנו מפתחות סימטריים עם המחשב המחבר ו-

גם אם אנו משתמשים במקשים הסימטריים כדי לתקשר בצורה מאובטחת ו

גם אם המחשב המקשר הוא באמת הלקוח אליו אנו מצפים ולא מתחזה,

ואז הגדרנו הפעלת SSH ... אך האם למחשב המקשר יש הרשאה לגשת לתוכן המארח?

זה נקרא 'אימות': פעולת בדיקת ההרשאות וזכויות הגישה.

ישנן שתי דרכים לבדיקת אימות:

1 - שימוש בסיסמה

הלקוח יכול לשלוח למארח הודעה (מוצפנת) המכילה סיסמה. המארח יכול לפענח את ההודעה ולבדוק את הסיסמה במסד נתונים כדי לבדוק אם ללקוח יש הרשאה לגשת ל'משתמש 'שצוין (אזור המחשב). העבודה נעשתה.

2 - שימוש בזוגות מפתח והצפנה א-סימטרית

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

זו גישה ברמה גבוהה מאוד לאופן הפעולה של התהליך:

מגדיר:

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

אני חוזר ואומר : העתק את המקש PUBLIC ( לא המקש הפרטי !) ללוח.

ואז, במסוף של הלקוח, השתמש בסיסמה כדי להתחבר מרחוק למארח. הדבק את המפתח הציבורי של הלקוח בתיקיה המתאימה במארח לצד כל מפתחות ציבוריים אחרים.

עכשיו, המארח כן

  • זהו צמד מפתחות ציבורי / פרטי משלו
  • המפתח הציבורי של הלקוח

כשמסתכלים על הסעיף לעיל באלגוריתם החלפת המפתחות, תוכלו לראות כיצד למארח יש את כל המרכיבים הדרושים לו כדי ליצור מפתח סימטרי!

מאתגר:

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

לאחר מכן יש ללקוח

  • המפתח הציבורי והפרטי שלה
  • המפתח הציבורי של המארח
  • את ההודעה המוצפנת

אז עכשיו ללקוח יש את כל הדרוש כדי ליצור מפתח סימטרי (זהה) ... ולפענח את ההודעה! זה יכול לפענח את ההודעה ולשלוח אישור ש"הצליח "את האתגר בחזרה למארח.

המארח מרוצה מכך שהלקוח המקשר מורשה ומעניק הרשאה לגישה.

מדוע לטרוח להשתמש בגישה השנייה?

זה נתפס כבטוח יותר מאשר פשוט באמצעות סיסמה מכיוון שבוט יכול להשתמש בגישה 'כוח אכזרי' כדי להמשיך להשתמש בשילובים רבים כדי לנחש את הסיסמה שלך, אך הם לא יהיו להם זוגות מפתח נכונים לגישה השנייה לעבודה.

לקריאה נוספת:

מדריך SSH למתחילים - איך עובד SSH

SSH, או Secure Shell, הוא פרוטוקול ניהול מרחוק המאפשר למשתמשים לשלוט ולשנות את השרתים המרוחקים שלהם ... www.hostinger.com

//www.udemy.com/the-complete-junior-to-senior-web-developer-roadmap/

סיכום

SSH הוא כלי חשוב המשמש לשליטה מרחוק במחשבים אחרים.

SSH מאובטח מכיוון ששני המחשבים יכולים להצפין ולפענח הודעה באמצעות מפתחות סימטריים זהים (המכונים 'הצפנה סימטרית').

השלבים העיקריים ליזום הפעלת SSH הם:

  1. הגדרת ערוץ מוצפן. שימוש בהצפנה אסימטרית כדי לפתור את בעיית החלפת המפתחות אשר מייצרת באופן עצמאי מפתחות סימטריים זהים בשני המחשבים מבלי לשתף מידע פרטי.
  2. אימות: שימוש ב- hashing בשני המחשבים כדי לאמת את זהות המחשב המחבר
  3. אימות (שוב). השימוש ב- hashing בשני המחשבים לאימות תקינות הנתונים לא נפגע בהעברה.

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

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

תודה שקראת!