לגבי הצפנה ומפתחות פרטיים/ציבוריים

MaD-d0g

New member
לגבי הצפנה ומפתחות פרטיים/ציבוריים

היי אני בטוח שזה לא הפורום הכי מתאים... אבל יש לי הרגשה שיהיו פה כמה שידעו לענות לי. נניח ואני רוצה ליצור קשר של VPN בין 2 פיירוולים. אני צריך להגדיר סיסמת "Shared Secret" זהה על כל אחד כדי שהם ידעו שהם מכירים אחד את השני. אבל.. הסיסמה הזאת לא עוברת ב Clear אלא רק אחרי שנוצר IKE מוצפן בעזרת מפתחות Diffie Hellman (כמובן ש Private ו Public) אבל... איך הצד השני כביכול יודע מה זה public שלי ? כאילו.. איך נוצר ה IKE ? אני מקווה שמישהו יבין מה לעזאזל ניסיתי לומר פה
 

vinney

Well-known member
זה דווקא בדיוק הפורום

תחום הקריפטוגרפיה הוא אחד התחומים הבולטים במדעי המחשב. בעקרון, הצד השני יודע את המפתח הציבורי שלך כי הוא ציבורי - כולם יודעים אותו (בשיטות כאלה ואחרות של keyrings וכו). מכיוון שמדובר בהצפנה אסימטרית - ידיעת המפתח הציבורי לא מאפשרת לפענח הודעות שמיועדות אלייך, אלא רק להצפין עבורך, לכן מה שהשרת שולח לך עם ההצפנה הזאת - רק אתה יכול לראות, למרות שלכולם יש את המפתח הציבורי שלך. בצורה כזאת מעבירים את הshared key, אבל בעקרון, אפשר גם לבצע זיהוי ואימות בעזרת מערכת ההצפנה האסימטרית, והshared key לא בהכרח נחוץ (ואכן לא תמיד משתמשים בו). הIKE וDH אלה פרוטוקולים ליצירת קשר מאובטח. בIKE משתמשים כחלק מIPSEC, בDH משתמשים במגוון רחב של מקומת (בSSL למשל, ויש VPNים שמתמשים בSSL להקמת והצפנת קשר).
 

vinney

Well-known member
במחשבה שניה עוד קצת הסבר

הרעיון של מפתח פרטי ומפתח ציבורי הוא שיש גוף שלישי אמין שיכול לאמת את המפתח הציבורי (על זה מסתמכים למשל במסחר אלקטרוני, שם משתמשים גם בחתימות אלקטרוניות (בעזרת RSA), בזמן הקמת הקשר עם אתרים וכו). זה נעשה בעזרת חברות מסחריות כאלה או אחרות (כדוגמאת Verisign, ויש עוד כמה) שנותנות את שירותי האימות. לכן למעשה כשאתה מקבל certificate הכולל מפתח ציבורי של אתר כלשהו שמאומת על ידי הצד השלישי הזה, אתה יודע בוודאות שכל מה שחתום במפתח המתאים לcertificate הוא אכן מגיע מהאתר האמור, ולא צריך shared secret. במקרה שלך, אתה כנראה לא משתמש בשירות צד שלישי אמין, ולכן אתה צריך shared secret בשני הצדדים, כדי להבטיח שאף אחד אחר לא מתחזה לצד השני. לכן משתמשים בפרוטוקול DH שנועד בדיוק לזה - הקמת קשר מאובטח בתווך גלוי, לצורך אימות הShared secret. בזמן הקמת הקשר, DH מבטיח שאתה מקים את הקשר עם מי ששלח לך את המפתח. לאחר שהקשר מוקם, ומובטח לך שהוא הוקם עם מי ששלח את המפתח, ומובטח לך שאף אחד אחר לא יכול להיות בקשר הזה, שני הצדדים מאמתים אחד את השני בעזרת הshared secret (וזה הIKE). לאחר האימות הזה - אתה יודע שהקמת קשר מאובטח, ואתה יודע שהקמת קשר מאובטח עם מי שיש לו את הshared secret הנכון, ובשלב הזה אפשר להסכים על מפתח הסימטרי שבעזרתו יוצפן הקשר, והVPN מוקם.
 

MaD-d0g

New member
מתקרב... אבל עדיין נשארתי בסימן שאלה ../images/Emo13.gif

המקרה השני שדיברת אליו הוא המקרה שאני מתעניין בו. יש לי 2 GW שאני רוצה ליצור בינהם קשר VPN. הם לא מנוהלים ע"י אותה ישות ככה שאי אפשר להניח שהם משתמשים בשירותים של שירות תעודות חיצוני כמו verisign ודומיו. אני באמת צריך לאמת את הצד השני בעזרת shared secret. אני משתמש ב DH... אבל DH מדבר על מפתח פרטי ומפתח ציבורי.. והרי את הצד השני אני לא מכיר (לא ביצעתי איתו הכרות) והוא לא יודע להצפין לי כי הוא לא יודע עם איזה מפתח אני אפתח. פחות או יותר הבנת או שאני מעורפל ?
 

vinney

Well-known member
אתה מתבלבל

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

MaD-d0g

New member
בוא נכניס לעניין מוצר מאוד ספציפי

הפיירוול של צ'קפוינט. אני אניח שאתה לא מכיר את המבנה.. אז אני אנסה להסביר ממש בקצרה. ישות יכולה לנהל לך כמה מודולים (ומודול לא יכול להיות מנוהל ע"י כמה ישויות) לכל מנהל יש שרת Certificate פנימי (או שהוא יכול להתחבר לשרת Certificate חיצוני) ישות ניהול "1" יכולה לנהל לך את מודולים a,b,c ישות ניהול "2" יכולה לנהל לך את מודולים d,e,f ניתן ליצור קשר VPN ב a,b,c ללא כל בעיה כי הם תחת אותו ניהול והם יכולים ליצור עם אותו שרת אישורים. אבל מודול f ו a צריכים להתחבר ולבצע אימות ע"י shared secret.. כי הם לא מקושרים לאותו שרת Certificate עד לפה אתה מבין ? (או שאני בכלל טועה
)
 

vinney

Well-known member
"או שהוא יכול להתחבר שרת חיצוני"

אתה כתבת. אם אתה צריך לחבר שני מודולים שנשלטים על ידי ישויות לא קשורות אתה חייב פיסת מידע אמינה. הפיסה הזאת יכולה לבוא בשורת shared secet שמזינים ידנית (אבל אז יש בעיה - המודולים מנוהלים על ידי ישויות בלתי קשורות, וכנראה שהאבטחה הפיזית תמנע מאותו בן אדם לשלוט על שתי ישויות בלתי קשורות), או לחלופין - שימוש בשרת certificate משותף שיאמת את הישויות אחת בפני השניה. אני לא מכיר את הרכיבים של checkpoint, אבל זה העקרון כפי שאני מבין אותו. אם הshared secret שאתה מדבר עליו זה נתון שמוזן ידנית, אז כנראה שיש בכל זאת הסתמכות על צד שלישי כלשהו שיזין את זה (ובמקרה הזה - בן אדם, מה שמבטיח פרצות אבטחה מפה עד מחרתיים).
 

MaD-d0g

New member
לכן זה נראה לי קצת מוזר ../images/Emo13.gif

בכל מקרה אני חושב שאני עכשיו יותר בכיוון... תודה
 
למעלה