סוג הסיסמה שאתה צריך ליצור קשור מאוד לאופן שמירת הסיסמה.

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

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

כיצד מאוחסנים סיסמאות באינטרנט

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

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

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

instagram viewer

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

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

ההשפעה של GPUs מתפתחים

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

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

כדי לקבל מושג, בחן את מספרי הגיבוב לשנייה של אלגוריתמי הגיבוב כגון NTLM, MD5 ו-SHA1 בטבלה למטה. די, לעת עתה, לדעת שהאלגוריתמים האלה הם רק אלגוריתם גיבוב. כדי ליצור טבלה זו, השתמשתי במערכת אשכולות המורכבת מ-25 AMD Radeon GPUs.

אַלגוֹרִיתְם

Hashings לשנייה

NTLM

350.000.000.000

MD5

180.000.000.000

SHA1

63.000.000.000

SHA512Crypt

364.000

Bcrypt

71.000

Scrypt

33.000

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

מה צריכים מפתחי תוכנה לעשות?

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

אם מפתחים עובדים עם מסגרת תוכנה שמתייחסת גם לתהליכי הצפנת סיסמאות כגון Django, Ruby on Rails, ו-Spring Security, עליהם לבדוק האם התקבלו ההחלטות הנכונות במסגרת מבחינת בִּטָחוֹן.

לדוגמה, לִהַמצִיא, אחת הספריות הנפוצות ביותר עבור פעולות משתמש ב-Ruby on Rails, משתמשת ב-Bcrypt בתור אלגוריתם ה-hash המוגדר כברירת מחדל. זה גם מאפשר לך להשתמש בשיטה אחרת בתור אלגוריתם ה-hash. אלגוריתם Bcrypt אמין מכיוון שעדיין לוקח הרבה מאוד זמן עד שה-GPU נשבר.

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

כמה תווים צריכה להיות לסיסמא שלך?

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

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

מספר תווים

אותיות גדולות/קטנות ומספרים

אותיות גדולות/קטנות, מספרים וסמלים מיוחדים

8

פחות מדקה אחת

2 דקות

9

2 דקות

2 שעות

10

2 שעות

שבוע 1

11

6 ימים

2 שנים

12

1 שנה

200 שנה

13

יותר מ-100 שנים

יותר מ-1000 שנים

כאשר אתה בוחן את הטבלה, אתה יכול לראות שהשימוש בסיסמה של מינימום 12 תווים בטוח כאשר אתה משתמש בכל השילובים של אותיות רישיות/קטנות, מספרים וסמלים מיוחדים. אם אינך משתמש בסמלים מיוחדים, מסתבר שאתה צריך להשתמש ב-13 תווים כאורך הסיסמה המאובטחת. אם השתמשת בשיטת Hash Bcrypt במקום Hash NTLM במערכת זו, 8 תווים יספיקו. עם זאת, אין לך הזדמנות לדעת באיזו שיטת Hash מערכת שאתה נכנס דרך האינטרנט שומרת את הסיסמה שלך. לכן כדאי לשקול את כל האפשרויות.

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

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

ייעוץ למשתמשי קצה

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