לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

לך אחורה   לובי הפורומים > מחשבים > תכנות ובניית אתרים
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
תגובה
 
כלי אשכול חפש באשכול זה



  #1  
ישן 25-05-2008, 17:27
  משתמש זכר yoavmatchulsky yoavmatchulsky אינו מחובר  
 
חבר מתאריך: 15.08.06
הודעות: 1,561
שלח הודעה דרך ICQ אל yoavmatchulsky שלח הודעה דרך MSN אל yoavmatchulsky Facebook profile
שמירת אימות משתמש

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

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

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

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

רעיונות?
_____________________________________
!!אזהרה!!
ההודעה עלולה להכיל שברי אגוזים ו/או איברי דגים כלשהם
!!אזהרה!!

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #6  
ישן 26-05-2008, 08:41
  מאבטח מאבטח אינו מחובר  
 
חבר מתאריך: 26.05.08
הודעות: 120
אתה רוצה לעשות משהו בלתי אפשרי
בתגובה להודעה מספר 1 שנכתבה על ידי yoavmatchulsky שמתחילה ב "שמירת אימות משתמש"

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

כדי שהשרת ידע שללקוח יש valid credentials הוא חייב להוכיח את זה לשרת. זה מה שנקרא authentication. אימות. כשאתה בא להיכנס ללונה-פארק אתה מראה את הכרטיס שלך. ככה אתה מוכיח לשומר שיש לך זכות להיכנס אליו.

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

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


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

נתחיל מ-1. השרת פשוט צריך לזכור שכתובת IP מסוימת מאומתת מולו ולאשר בקשות ממנה עד שיחלוף timeout מסוים. אתה רוצה משהו יותר מסובך? בבקשה, אבל זה הכיוון הכללי.

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

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

אני אומר זאת שוב כדי שזה יהיה ברור: או שלשרת יש state, או שהלקוח מאמת את עצמו יחד עם כל בקשה.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #7  
ישן 27-05-2008, 11:05
  משתמש זכר yoavmatchulsky yoavmatchulsky אינו מחובר  
 
חבר מתאריך: 15.08.06
הודעות: 1,561
שלח הודעה דרך ICQ אל yoavmatchulsky שלח הודעה דרך MSN אל yoavmatchulsky Facebook profile
בתגובה להודעה מספר 6 שנכתבה על ידי מאבטח שמתחילה ב "אתה רוצה לעשות משהו בלתי אפשרי"

תודה. הייתי צריך מישהו שיסדר לי את זה בראש.

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

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

לא משנה איך אני מסתכל על זה, כדי שהטולבר ישמור על קשר עם השרת בלי לבקש מהמשתמש סיסמא כל פעם, הוא צריך לשמור את הסיסמא לוקלית. שזה בעיה, כי אני לא נתקלתי בדרך לשמור נתונים בFF בלי לחשוף אותם למשתמש.
אני מטבעי פרנואידי, ולכן אני לא מסכים לשמור את הסיסמא כ PLAINTEXT או כ HASHED - מי שיש לו קצת גישה לדפדפן יוכל לקחת את הHASH ולשלוח אותו כאילו הוא משתמש אחר וזה יוצר בלאגן).

אבל בכל זאת, דברים כאלה קיימים. אז איך אפשר לפתור את זה?


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

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #15  
ישן 27-05-2008, 15:13
  מאבטח מאבטח אינו מחובר  
 
חבר מתאריך: 26.05.08
הודעות: 120
זו אמירה לא ברורה שאי אפשר להבין נכון.
בתגובה להודעה מספר 14 שנכתבה על ידי hzhz שמתחילה ב "[QUOTE] הבעיה שלי היא שאין לי..."

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

וחוץ מזה, זו סתם הסתבכות.


עכשיו, יש דרכים לתת למישהו מידע בלי שהוא ידע מה המידע הזה, ויש דרכים לגרום למישהו לבצע חישוב בלי לדעת מה החישוב הזה. אפשר להתחיל לקרוא על הנושא מהקישורים הבאים בוויקיפדיה:
http://en.wikipedia.org/wiki/Oblivious_transfer
http://en.wikipedia.org/wiki/Secure...rty_computation
אבל זה לא באמת קשור לבעיה שלנו.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #17  
ישן 28-05-2008, 00:51
  מאבטח מאבטח אינו מחובר  
 
חבר מתאריך: 26.05.08
הודעות: 120
אוקיי. איפה הבעיה?
בתגובה להודעה מספר 16 שנכתבה על ידי yoavmatchulsky שמתחילה ב "המשתמש נרשם דרך אתר (לא קשור..."

הלקוח שולח לשרת שם משתמש וסיסמה, השרת מוודא שהם לגיטימיים, ומהרגע הזה יש תקשורת בין הלקוח לשרת.
  • כדי שהלקוח לא ישלח את הפרטים המזהים שלו בכל בקשה לשרת מחדש, השרת חייב לזכור את הלקוח. אין לך שום ברירה אחרת.
  • כדי שהלקוח לא ישלח את הפרטים המזהים שלו בסשן אחר, אתה חייב לשמור אותם לוקאלית על המחשב. זה מה שקורה כשמסמנים "remember my password" - הסיסמה נשמרת על המחשב. לא במישור הוודו הקסום.
עכשיו בוא נדבר על הפרטים. ממי אנחנו חוששים ומה אנחנו מתכננים לעשות בעניין?

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

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

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

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

מזער את תיבת המידע אפשרויות משלוח הודעות
אתה לא יכול לפתוח אשכולות חדשים
אתה לא יכול להגיב לאשכולות
אתה לא יכול לצרף קבצים
אתה לא יכול לערוך את ההודעות שלך

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 12:04

הדף נוצר ב 0.08 שניות עם 12 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר