שְׁאֵלָה:
האם זה שימושי להגן על סיסמת גיבוב באמצעות הצפנה?
papafe
2013-11-12 16:59:10 UTC
view on stackexchange narkive permalink

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

כפילות אפשרית של [סיסמא Hashing להוסיף מלח + פלפל או שמספיק מלח?] (http://security.stackexchange.com/questions/3272/password-hashing-add-salt-pepper-or-is-salt-enough)
שֵׁשׁ תשובות:
bobince
2013-11-12 18:50:59 UTC
view on stackexchange narkive permalink

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

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

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

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

תגובה ETA מחדש @ Pacerier:

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

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

השאלות קובעות שהוא מכניס מלח עם מלח אקראי מספיק. ואז, מה הטעם להצפין את החשיש מלכתחילה? מה כל כך פגיע בלשמור על חשיש כטקסט פשוט?
Adi
2013-11-12 17:04:49 UTC
view on stackexchange narkive permalink

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

הליך כזה מוסיף תוספת מורכבות למערכת. המורכבות היא אחד מאויבי הביטחון. אני מאוד ממליץ על זה.

martinstoeckli
2013-11-12 18:40:08 UTC
view on stackexchange narkive permalink

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

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

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

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

"סיסמאות חלשות אם כי ניתן לאחזר פחות או יותר במהירות עם התקפת מילון" הצהרה זו שגויה. זה לא בסדר מכיוון ש- OP אומר "אני מכניס את סיסמאות המשתמשים במלח אקראי, ארוך מספיק". נעשה שימוש במלח נתון ההתקפה המילונית הופכת להיות חסרת תועלת עבור מסד נתונים. ראה http://stackoverflow.com/q/3566504/706456 לפרטים.
@oleksii - לא ממש, המלח מונע שימוש בשולחנות קשת ועם מלחים ייחודיים, יש לכפות על כל סיסמא בנפרד. נגד אכיפת סיסמה בודדת, מלח לא יעזור. כיום תוכלו לחשב מספר [חשיפות גיגה בשנייה] (http://hashcat.net/oclhashcat-lite/#performance) עם חומרה נפוצה, לכן אתם זקוקים לאלגוריתם איטי. אפילו עם אלגוריתם איטי תוכלו לבדוק את הסיסמאות הנפוצות ביותר, זהו סוג של התקפה מילונית. הייתי מזמין אותך להציץ במדריך שלי בנושא [אחסון סיסמאות מאובטח] (http://www.martinstoeckli.ch/hash/en/index.php).
דרך נוספת להסתכל על זה: ניסיונות כניסה להגבלת קצב ו / או נעילה מוסכמים באופן נרחב כחשובים להתקפות מקוונות כדי למנוע כוח אכזרי ומילוי אישורים.זה קבוע בחלק העליון של OWASP 10. התקפות לא מקוונות עוקפות את ההגנות הללו, כמו גם הזרקת SQL אם היא יכולה להשתמש בנקודת קצה שאינה מכוסה על ידי מגבלת קצב הכניסה או נעילת חשבון.כמו גם להתפשר על סיסמאות שנעשה בהן שימוש חוזר באתרים אחרים, התוקף יכול להשתמש בתעודות הכפייה הממולאות או המהומות בכדי להתחבר בהצלחה לאתר שלך בפעם הראשונה ללא ניסיונות כושלים.שווה לשקול במודל האיום שלך.
Ken Bolger
2013-11-20 14:13:08 UTC
view on stackexchange narkive permalink

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

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

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

Owen
2013-11-12 18:32:49 UTC
view on stackexchange narkive permalink

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

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

Matt Surabian
2013-11-19 19:53:21 UTC
view on stackexchange narkive permalink

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

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

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

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

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

1) בדרך כלל המלח אינו סוד, מכיוון שאינך יכול להניח ששרת שנפגע מצליח לשמור על סודות כלשהם. סיסמאות מלוחות עדיין פגיעות להתקפות ניחוש סיסמאות מאחר שבני אדם יונקים כבחירת סיסמאות טובות. 2) ניתן להוסיף ערך סודי בתקווה לחשיפות הסיסמה, על ידי הצפנת החשיש או על ידי שרשור של ערך סודי, המכונה בדרך כלל פלפל, למלח. 3) אדובי הראתה שהוספת מפתח יכולה להיות שימושית מכיוון שלעתים היא לא נגנבת / מתפרסמת. 4) אדובי לא הראתה מדוע צופני בלוקים סימטריים רעים לכך, רק שמצב ECB מבאס.
5) אין צורך כי חשיש סיסמא יהיה עמיד בפני התנגשות. זה רק צריך להיות עמיד לפני תמונה לפני.
נערך לעיל לשם בהירות. לא התכוונתי לרמוז שהמלח צריך להיות סודי, אלא שזה משהו שהשרת מחזיק בו. כמו כן, כאשר הזכרתי התנגדות להתנגשות ניסיתי להמחיש כי המלח מונע משתי סיסמאות זהות להיות בעלות אותו חשיש במסד הנתונים.
חמש שנים אחר כך, לא נפרצה אפילו סיסמת אדובי אחת באמצעים הצפנתיים.רק על ידי השוואת רמזים לסיסמאות, אנו יכולים להיות בטוחים בכמה וכמה.המקרה של Adobe הוא הדוגמה הגרועה ביותר * אם ברצונך להראות כי הצפנת סיסמאות היא רעיון רע שכן אתה מוכיח בדיוק את ההפך.


שאלה ותשובה זו תורגמה אוטומטית מהשפה האנגלית.התוכן המקורי זמין ב- stackexchange, ואנו מודים לו על רישיון cc by-sa 3.0 עליו הוא מופץ.
Loading...