« הסיסמה שלך חייבת להכיל 8 תווים, אות גדולה, אות קטנה, ספרה ותו מיוחד. »
כולנו מכירים את הכלל הזה. ועדיין, באבטחת סייבר, זה מה שאנו מכנים “תיאטרון אבטחה”. סיסמה כמו P@ssw0rd1! מכבדת את כל הכללים הללו. אבל היא רק מילה נפוצה עם החלפות צפויות, וזה בדיוק מה שכלי פריצה מנסים קודם.
אבטחה אמיתית אינה מבוססת על כללים חזותיים שרירותיים, אלא על מציאות מתמטית בלתי מתפשרת: אנטרופיה.
אנטרופיה לפי קלוד שאנון
כדי להבין את חוזקה של סיסמה, יש לפנות לקלוד שאנון, אבי תורת המידע. האנטרופיה מודדת את מידת חוסר הוודאות או חוסר יכולת הניבוי של המידע.
כשהיא מיושמת על סיסמאות, האנטרופיה מחושבת בביטים (bits). ככל שמספר הביטים גבוה יותר, כך הסיסמה פחות ניתנת לחיזוי עבור מחשב. הנוסחה הפשוטה לאנטרופיה (E) של סיסמה שנוצרה באקראי היא:
E = L × log2(R)
- L הוא אורך הסיסמה.
- R הוא גודל המאגר (26 לאותיות קטנות, 62 עם אותיות גדולות וספרות, 94 עם כל הסמלים הניתנים להדפסה). ארבע קבוצות התווים של המחולל שלנו נותנות 91, כי קבוצת הסמלים שלו כוללת 29 תווים.
הגדלת גודל המאגר (הוספת סמלים) מעלה את האנטרופיה, אך הגדלת האורך (הוספת תווים) מעלה אותה בצורה דרסטית בהרבה. עם זאת, האורך מנצח את המורכבות רק בתנאי אחד: שהסיסמה נוצרת באופן אקראי לחלוטין.
כוח גס (Brute Force) מול התקפת מילון
אם אתה משתמש במילים או במבנים צפויים, הכלל של אורך טהור קורס.
תוכנות פריצה לא מנסות את כל צירופי האותיות אחד אחד (לזה קוראים כוח גס). הן משתמשות ברשימות עצומות של סיסמאות אמיתיות שדלפו בעבר, לצד מילים וביטויים נפוצים. זוהי התקפת מילון.
אם הסיסמה שלך ארוכה, אך מורכבת ממילות מילון או מהחלפות צפויות, האנטרופיה האמיתית שלה נמוכה באופן דרמטי מהאנטרופיה המתמטית התיאורטית שלה.
הטבלה שלהלן משתמשת בכלל אחד: 100 מיליארד ניסיונות בשנייה, הקצב שדף המחולל שלנו מניח עבור התקפה לא מקוונת על hash מהיר. הזמנים הם ממוצעים (מחצית מכל האפשרויות), מעוגלים למטה באותה נוסחה של אותו דף. המסלול המהיר ביותר לכל סיסמה מודגש:
| סיסמה | אנטרופיה אילו כל תו היה אקראי | כוח גס (ממוצע) | התקפת מילון (הערכה שלנו) |
|---|---|---|---|
password123 | 56 ביט (11 תווים, אותיות קטנות וספרות) | 7 ימים | פחות משנייה |
S3cr3t!99 | 58 ביט (9 תווים, כל ארבע הקבוצות) | 24 ימים | פחות משנייה |
correct horse battery staple | 133 ביט (28 תווים, אותיות קטנות ורווח) | יותר מ-1 טריליון שנים | 1 דקה |
gL7!pQ9z#vX2 | 78 ביט (12 תווים, כל ארבע הקבוצות) | 51 אלף שנים | אין קיצור דרך |
עמודת המילון היא הערכה. היא מניחה שהניחושים של התוקף עוקבים אחר המבנה של כל סיסמה, ושכל מילת בסיס נמצאת בין 1,000 המילים הנפוצות ביותר:
password123: מילה נפוצה אחת ושלוש ספרות. כלומר 1,000 × 1,000, כמיליון ניחושים.S3cr3t!99: מילה נפוצה אחת, עם או בלי אות גדולה, כל “e” מוחלפת ב-“3” או לא, ואחריה כל סיומת של שלושה תווים. כלומר כ-7 מיליארד ניחושים.correct horse battery staple: ארבע מילים נפוצות. הקומיקס של xkcd שהפך אותה למפורסמת מחשב 44 ביט לארבע מילים מתוך רשימה של 2,048. באותו קצב, זה 88 שניות בממוצע, ובעיגול למטה 1 דקה.gL7!pQ9z#vX2: אין מילה ואין תבנית, ולכן כוח גס הוא המסלול המהיר ביותר.
ההערכות האלה מניחות שהתוקף לא מכיר אף סיסמה. כל הסיסמאות במאמר הזה פורסמו עכשיו, ולכן מקומה של כל אחת מהן במילון. סיסמה שפורסמה היא סיסמה שרופה.
האשליה של Leetspeak וכללי מוטציה
קחו לדוגמה את S3cr3t!99. מבחינה חזותית, היא נראית מורכבת וחסונה. ובכל זאת, זו פשוט מילת המילון “secret”, שבה ה-’e’ הוחלפו ב-‘3’, ואליה התווספה סיומת נפוצה מאוד (!99). לזה קוראים leetspeak.
מול התקפת מילון, סיסמה זו מחזיקה פחות משנייה, ולא 24 הימים שאורכה היה מרמז עליהם. תוכנות פריצה מודרניות (כמו Hashcat) לא מסתפקות בבדיקת רשימות מילים סטטיות; הן מפעילות באופן אוטומטי כללי מוטציה. הן ייקחו כל מילה במילון שלהן, יבדקו את כל צירופי ה-leetspeak האפשריים, יהפכו אותיות גדולות ויוסיפו שנים או סמלים. Leetspeak מספק תחושת ביטחון מזויפת.
טריק הזזת המקלדת (Keyboard Shift)
כדי לסבך ביטוי שקל לזכור, חלקם משתמשים בטריק של הזזת פריסת המקלדת. לדוגמה, אתה משנן ביטוי כמו my-cat. אך ברגע ההקלדה, אתה מניח את האצבעות על מקלדת QWERTY פיזית בזמן שמערכת ההפעלה שלך מוגדרת ל-AZERTY (צרפתית).
- המילה במחשבה:
my-cat - התוצאה שהוקלדה:
,y)cqt (המקש ’m’ הופך ל-’,’; ה-’-’ הופך ל-’)’; ה-‘a’ הופך ל-‘q’).
האם זה רעיון טוב ב-OPSEC? לא, שיטה זו אינה מספקת אם משתמשים בה לבד. בדיוק כמו leetspeak, הזזת פריסת מקלדת היא החלפה קבועה: תוקף שחושד בה מחיל את אותו מיפוי על כל ניחוש. ב-OPSEC, זו אבטחה באמצעות אלמוניות: זה מעכב תוקף חובב, אך לא יעצור התקפה ממוקדת ומצוידת.
בשילוב עם סיסמה שכבר חזקה (כמו משפט סיסמה אקראי וארוך), היא מוסיפה מעט. גם אם תוקף ינסה 1,000 צמדי פריסות, זה מוסיף פחות מ-10 ביט, כי log2(1,000) ≈ 9.97. החוזק עדיין בא ממשפט הסיסמה שמתחת.
בניית סיסמת מאסטר (~250 ביט)
אם לרשימות מילים, leetspeak וטריקים של הקלדה יש גבולות, כיצד בונים סיסמת מאסטר שמחזיקה מעמד? המחולל שלנו כבר מדרג 80 ביט כ"חזק" ו-100 ביט כ"חזק מאוד". עבור סיסמת מאסטר שאמורה להחזיק מעמד עשרות שנים, המאמר הזה מכוון גבוה בהרבה: לכ-250 ביט של אנטרופיה. הפרק הקוונטי בהמשך מסביר מדוע, ומה המרווח הזה אינו מבטיח.
ישנן שתי דרכים להשיג זאת בהתאם לצרכים שלך:
1. תווים אקראיים (עבור מנהל סיסמאות)
מחרוזת תווים שנוצרה באופן אקראי לחלוטין, בלי שום תבנית שמכונה יכולה לנצל:
8}8,_$-p)M&n,XvUCT0o+.5hDE6P^w6b@U-evS0
39 תווים שהוגרלו באקראי מתוך 91 התווים של המחולל שלנו. המחולל מציג אותה כ"≈ מספר ביטים: 253". היא הוגרלה עבור המאמר הזה, ולכן היא ציבורית עכשיו. לעולם אל תשתמש בה.
2. משפט סיסמה אקראי (לסיסמה שאתה זוכר בעל פה)
מילים אקראיות קלות יותר לזכירה מתווים אקראיים. כל מילה שמוגרלת מרשימת המילים הארוכה של EFF, בת 7,776 מילים, מוסיפה כ-12.9 ביט, ולכן מספר המילים הוא שקובע את האנטרופיה. 12 מילים נותנות “≈ מספר ביטים: 155”, הרבה מעל סף ה"חזק מאוד" של המחולל שלנו. מילים רגילות לבדן עוברות 250 ביט רק ב-20 מילים.
המחולל שלנו עוצר ב-12 מילים. כדי לעבור 250 ביט עם פחות מילים, סמן “ספרה אקראית אחרי כל מילה” ובחר “ספרה + סמל” כמפריד. אז 11 מילים נותנות “≈ מספר ביטים: 260”:
depletion78$sporting14~overlap11>macaw86>paced95,paramedic41}blot41$flagstone07;uncanny92/broadways77#say2
הוגרל באקראי עבור המאמר הזה, בדיוק עם ההגדרות האלה. סיסמה שפורסמה היא סיסמה שרופה: לעולם אל תשתמש בזו, או בכל דוגמה שאתה קורא. רק מה שהוגרל באקראי נחשב. אות גדולה בתחילת כל מילה לא מוסיפה דבר, ומילים שאתה בוחר בעצמך חלשות בהרבה ממילים אקראיות.
האיום הקוונטי: האלגוריתם של גרובר
למה לכוון ל-250 ביט כשה-128 ביט כבר חוסמים את מחשבי העל של היום? התשובה נעוצה באפשרות שיופיעו מחשבים קוונטיים גדולים.
בקריפטוגרפיה, האלגוריתם של גרובר (Grover) מאפשר למחשב קוונטי לחפש במסד נתונים לא ממוין הרבה יותר מהר מאשר מחשב קלאסי. באופן קונקרטי, גרובר חותך בחצי את רמת האבטחה האפקטיבית של מפתח סימטרי או סיסמה.
מול מחשב קוונטי המפעיל את האלגוריתם של גרובר, סיסמה עם אנטרופיה של 128 ביט תציע, בתיאוריה, התנגדות שוות ערך ל-64 ביט בלבד. זה מרווח דק בהרבה.
הכפלת האנטרופיה שומרת על המרווח: כ-256 ביט עדיין ישאירו כ-128 ביט מול גרובר. מכאן מגיע היעד של 250 ביט במאמר הזה. זהו אמצעי זהירות שהמאמר הזה בוחר, לא מספר שנלקח מתקן כלשהו.
למרווח יש גבולות. ההאצה של גרובר היא ריבועית, לא בלתי מוגבלת. כל אחד מצעדיו עדיין צריך לחשב את ה-hash של הסיסמה באתר, על מחשב קוונטי גדול מספיק כדי להריץ אותו. לשם השוואה, בקצב של 100 מיליארד ניסיונות בשנייה שהדף של המחולל שלנו מניח, חיפוש ממוצע של 100 ביט כבר לוקח לפחות 200 מיליארד שנים.
ההיגיון דומה ל-Harvest Now, Decrypt Later (HNDL): מסד נתונים גנוב של ערכי hash של סיסמאות יכול להישמר היום ולהיות מותקף מאוחר יותר, במכונות טובות יותר. מרווח גדול יותר מעלה את הרף מול זה. זו לא ערובה קבועה.
מחולל הסיסמאות של Arpokrat: צור משלך
אל תשאיר את אבטחת הגישה שלך ליד המקרה. המחולל החינמי שלנו יוצר סיסמאות וסיסמות-מילים אקראיות. עבור כל אחת, הוא מציג את האנטרופיה בביטים ואת הזמן הממוצע שחיפוש היה לוקח.
הוא רק יוצר: הוא לא מדרג סיסמה שאתה כבר משתמש בה. עבור יעד 250 הביט שלמעלה, בחר סיסמה בת 39 תווים עם כל ארבע קבוצות התווים. המחולל מציג אותה כ"≈ מספר ביטים: 253".
הוא פועל בדפדפן שלך. מה שהוא יוצר לעולם לא נשלח ולא נשמר.
החוליה החלשה הסופית: מיחזור וניהול גישה
אנטרופיה מתמטית אינה מגנה מפני טעות אנוש. סיסמה של 250 ביט מאבדת את ערכה ברגע שהיא דולפת, אם משתמשים בה שוב במספר אתרים (התקפה הנקראת Credential Stuffing) או אם אינה מוגנת על ידי גורם אימות שני (2FA).
כלל הזהב של היגיינה דיגיטלית הוא שתצטרך לזכור רק סיסמה אחת: סיסמת המאסטר שלך בת 250 הביט (משפט סיסמה אקראי, כמו שלמעלה). כל הגישות האחרות שלך (בנק, רשתות חברתיות, שרתים) חייבות להשתמש בסיסמאות אקראיות ייחודיות, שנוצרו במיוחד עבורן.
כדי לאחסן את כל הסיסמאות האלה שאי אפשר לזכור, השתמש במנהל סיסמאות. בחר אחד שמצפין את הכספת שלך במכשיר שלך לפני הסנכרון (מה שמכונה לרוב Zero-Knowledge), רצוי אחד שהוא קוד פתוח ועבר ביקורת עצמאית.
